실시간 분산 처리, Apache Storm Topology 구현하기
기고자 김우태
소속 아이리포기술사회
경력사항
컴퓨터시스템응용기술사, 수석감리원, 정보보안기사
ATSC 3.0기반 지상파 UHD방송 시스템 및 콘텐츠 보호시스템 개발/구축
지상파DMB HD-DMB/케이블/IPTV 방송사 CAS솔루션 설계/개발
케이블 방송사 VOD 시스템 개발/구축
Technical Architect
Software Architect
빅데이터 시스템 구축은 일반적으로 수집 > 적재 > 탐색(처리) > 분석(응용) 단계로 이루어지며, 이중 수집 단계가 전체 공정 과정에의 절반에 가까운 부분을 차지한다고 할 수 있습니다. 빅데이터 수집은 일반적인 수집과는 다르게 수집 영역이 조직내의 전체 시스템에서부터 외부 시스템(SNS, 포털, 공공 데이터 등)에 이르기까지 매우 광범위하고 다양하다고 할 수 있습니다. 수집 대상을 선정하고 계획을 수립해서 수집을 실행하면, 수많은 실시간 데이터가 유입되게 될 것이며, 이 데이터를 다음 단계로써 적재하게 됩니다.
적재는 크게 대용량의 배치성 데이터와 실시간성의 메시지 데이터로 구분할 수 있으며, 이번 기고에서는 실시간으로 발생하는 대규모 실시간 메시지 데이터를 Storm에 의해 실시간 분산 처리를 가능하게 하여, 영구적으로 저장하기 위해 효율성이 떨어지는 하둡보다는 NoSQL 데이터베이스인 HBase을 활용할 수 있도록 Storm Topology을 구현하는 시간을 가지고자 합니다.
1. 빅데이터 실시간 적재 활용 기술
1.1 빅데이터 실시간 적재 개요
여러 단계를 거치거나, 여러 모양의 빅데이터가 수집되면 다음 단계로 적재를 하게 되는데, 먼저 대용량 배치성 데이터(로그 파일) 적재의 경우에는 수집한 파일을 하둡에 적재한 후, 장시간을 활용해서 대용량 배치성 작업등으로 가치 있는 정보들을 찾아 내는데(Mining) 주력하며, 실시간성의 메시지 데이터는 적재하기 직전에 실시간 분석(집계, 분류, 관계화)을 수행해 그 결과를 인메모리 구조로 전달하여 기존의 legacy 시스템이나 비즈니스 시스템에 실시간 공유되어 활용도를 극대화할 수 있어야 합니다.
1.2 빅데이터 실시간 적재 활용 기술
* HBase
NoSQL 데이터베이스(File 기반)를 대표하여 HBase를 간단하게 설명 드리면, 하둡 기반의 Column-Oriented 지향 NoSQL 데이터베이스이며, 데이터를 Key/value 형식으로 단순하게 구조화하는 대신 고성능의 쓰기/읽기가 가능하도록 만들었습니다.
쓰기 성능에 좀 더 최적화돼 있으며, 대용량 처리가 필요한 대규모 시스템에 활용이 많이 되며, 가장 큰 특징으로는 하둡의 HDFS를 기반으로 설치 및 구성된다는 것입니다. 간단히 아키텍처를 설명하면 Client가 Zookeeper를 통해 HTable의 기본 정보와 해당 HRegion의 위치 정보를 알아와서, 그 정보를 기반으로 직접 HRegionServer에 접속해서 HRegion의 MemStore(메모리 영역)에 데이터를 저장하고 임계치에 다다르면 해당 데이터가 HFile로 Flush되고, HFile 또한 특정 임계치가 되면 하둡의 HDFS로 데이터를 Flush합니다. 이 과정을 Major/Minor Compaction이라고 합니다.
* Redis
NoSQL 데이터베이스(In-Memory기반)를 대표하여 Redis를 간단하게 설명 드리면, 분산 캐시 시스템이면서 Key/value 형식의 데이터 구조를 분산 서버상의 메모리에 저장하면서 고성능의 응답 속도를 보장합니다. 다양한 데이터 타입을 지원하기 때문에 데이터를 구조화해서 저장할 수 있어 단순 Key/valu ....