[Batch] Batch란?
Batch 란?
Batch의 사전적 정의
- spring framework, maven –> executable jar 파일을 만들어서, parameter로 클래스를 전달하면, 그 클래스의
execute
메소드를 수행 - 프로젝트 빌드 시, 모든 dependency 빌드 필요
- 빌드/배포 무거움
- spring boot –> demon 형으로 서비스를 올려놓음, org.apache.ignite.compute 사용
Apache Ignite란?
Apache Ignite는 인메모리 컴퓨팅 플랫폼입니다. 컴퓨터의 메인 메모리에 데이터를 저장하므로 디스크에 저장된 데이터에 접근하는 것보다 더 빠른 시간내에 데이터를 접근할 수 있습니다.
클러스터에 노드를 추가하기만 하면, 인메모리 데이터 용량을 쉽게 확장해서 페타 바이트 단위의 데이터를 처리할 수 있습니다.
기존에 사용하는 데이터베이스를 전면 교체할 필요 없으며, RDBMS, NoSQL, 하둡 데이터 저장소와 함께 잘 작동합니다. 따라서 대용량 데이터를 높은 성능으로 빠르게 처리해야 하는 시스템에 도입을 고려해볼 수 있습니다.
Ignite의 데이터는 다수 노드의 클러스터를 통해 파티션되거나 복제될 수 있는 분산 데이터 베이스입니다.
분산 컴퓨팅
Ignite는 JVM 기반입니다. 하나의 JVM은 하나의 혹은 N개의 논리적인 Ignite 노드를 나타냅니다. 즉, 하나의 Ignite 노드에서 5개의 JVM을 시작할 수 있으며 1개의 JVM에서 다수의 노드를 지원합니다.
balanced, fault-tolerant하게 클러스터 노드를 지원해서 분산 컴퓨팅을 할 수 있습니다. 자동으로 Task를 Split (Round Robing Load Balancing) 해줍니다.
Ignite ignite = Ignition.start();
IgniteCompute compute = ignite.compute();
IgniteCompute
인터페이스를 통해 분산 노드를 수행할 수 있고, 특정 노드 셋을 지정할 수도 있습니다.
Ignite 클러스터로 실행 명령이 전달되면 Map / Reduce 방식으로 분산수행
https://ignite.apache.org/docs/latest/distributed-computing/distributed-computing
Map-Reduce API Pattern
이그나이트는 simplified MapReduce operations을 제공합니다. MapReduce 패턴이란 하나의 Task를 여러 Job으로 쪼개서, 독립적으로 수행하는 패턴입니다 (mapping phase). 그리고, 모두 수행이 완료되었을때, 최종적으로 결과를 반환합니다. (reducing phase)
이렇게 분리된 Job들은 Load Balancing 전략에 의해 각 노드들에 배치되고 결과 또한 그 노드들에 의해서 return되어 aggregate됩니다.
https://ignite.apache.org/docs/latest/distributed-computing/map-reduce
참고 자료
https://cyberx.tistory.com/170 https://ignite.apache.org/arch/multi-tier-storage.html
댓글남기기