Search

In-memory 데이터 처리 기반 S/W

Hadoop의 분산병렬처리 구조는 대용량 일괄 배치 처리에는 효율적이다. 하지만 MapReduce 사용 시 데이터 저장, 전송 단계에서 많은 디스크 입출력과 네트워크 트래픽이 발생한다.
데이터가 필요할 때 마다 디스크에 접근하여 데이터를 읽어오는 방식은 반복적으로 접근하는 데이터의 사용을 힘들게 만들었다. Hadoop의 시스템의 대부분은 hdfs 읽기 쓰기 작업을 수행하는데 90% 이상을 사용하고 있다고 한다.
이는 실시간 데이터 처리에 큰 걸림돌이 되었으며, 비동기적/반복적으로 발생하는 작업과 데이터 처리를 비효율적으로 만들었다.
map - reduce 단계마다 중간 결과를 재사용 한다. 이로 인해서 데이터 복제,디스크 i/o 직렬화로 인한 오버헤드 발생으로 시스템 속도가 느려진다.
이와 같은 Hadoop의 한계점을 해결하기 위해 중간 Iteration의 디스크 입출력을 메모리에서 이루어지도록 구상하였다. 이를 In-Memory 데이터 처리 방식이라 부른다.
최초 데이터 로드와 최종결과 저장 시에만 디스크IO를 사용하고, 중간결과들은 메모리에 분산저장하고 병렬처리 구조로 변경하여 기존 MapReduce 디스크IO 방식 보다 평균 10~100배의 속도 향상을 이룰 수 있었다.
이 In-Memory 데이터 처리는 Spark, Storm, Flink 등의 SW로 구현되었다.