발표 소개와 목차
NHN 게임 BI 분석 서비스팀 발표자가 두 가지 주제, 즉 하둡 개발 환경 구축기와 MySQL 기반 배치를 하둡으로 옮긴 이야기를 예고한다. 하둡 에코시스템은 목적과 구성에 따라 결과가 크게 달라지는 모호한 개념임을 짚으며 발표 범위를 정리한다.
총 4대 서버라는 제약에서 네임노드 3대+데이터노드 1대 대신 네임노드 2대(HA)+데이터노드 2대 구성을 선택한 이유를 설명한다. 개발 환경이라 데이터노드 2대로 충분하다고 봤고, HA를 직접 구현하는 학습 가치를 우선했다. Sqoop으로 RDB↔HDFS 전송, Hive로 유사 SQL 분석, Airflow로 배치 스케줄링을 담당하게 했다.
액티브/스탠바이 네임노드가 저널노드를 통해 편집 로그를 주고받아 네임스페이스를 동기화하는 원리와, 주키퍼+DFC(페일오버 컨트롤러)가 액티브 노드에 핑을 보내 장애를 감지하고 자동 전환하는 오토매틱 페일오버 구조를 설명한다. 버전 정보(Hadoop 2.6, ZooKeeper 3.5.9)도 함께 명시한다.
각 서버에 배치된 데몬을 정리한다. 주키퍼와 저널노드를 왜 4대가 아닌 3대로 두었는지 과반수(quorum) 메커니즘으로 설명하며, 4대나 3대나 최대 허용 장애가 1대로 같기에 3대가 가장 효율적이라고 근거를 든다. YARN 리소스매니저는 1번 서버에만 두고 노드매니저를 데이터노드에 배치했다.
Hive 1.1을 설치해 HDFS 데이터를 유사 SQL로 분석하고 메타스토어로 MySQL 5.7을 연결한 과정, Airflow 1.10.10을 constraints 옵션으로 패키지 버전을 맞춰 설치하고 Celery 익스큐터+Redis 메시지큐를 구성한 과정을 다룬다. 하이브·에어플로우 모두 schematool/initdb로 메타데이터를 초기화해야 함을 강조한다.
한게임 포커를 PC방에서 플레이한 혜택을 집계·순위화해 지급하는 PC방 플래티넘 서비스의 기존 MySQL 배치를 설명한다. 일별 로그 수집·집계·랭킹 계산이 대부분 UPDATE/DELETE 없이 SELECT→집계→INSERT만 매일 반복되는 구조라, 이 패턴에 특화된 시스템으로 대체하면 좋겠다는 개선 동기를 제시한다.
8개 데이터노드에 임팔라 데몬을 하나씩 두고, 서비스 DB에서 가져온 데이터를 파케이(컬럼형) 파일로 저장해 조회를 빠르게 한 뒤 임팔라가 쿼리를 분산 처리하는 새 배치 아키텍처를 소개한다. 처리 결과는 다시 서비스 DB로 옮기는 방식으로 배치를 재구성했다.
하둡+임팔라+에어플로우+파케이로 전환한 뒤 배치 평균 수행 시간이 약 1분 17초로, 기존 대비 절대 시간은 약 5분 단축이지만 비율로는 5~6분의 1 수준으로 줄었음을 보여준다. 특정 패턴에 특화된 분산 처리의 효과를 정량적으로 정리하며 발표를 마친다.