새로운 회사에서 어떤 일들을 했을까
한 달 전쯤부터 어떤 일들을 했는지 꾸준히 정리해야겠다고 마음먹었는데 차일피일 미루다 이제야 정리해본다. 매일매일 새로운 문제를 만나고, 또 극복하면서 굉장히 많은 일을 했다고 생각했는데 막상 정리하면서 별 것도 아닌 것 같은 일들은 소거하다 겨우 이 정도 일을 이렇게나 오래 걸려서 했나 싶어서 슬플 따름이다.
기존의 방식에서 HDFS에 저장하는 방식으로 전환
AWS Kinesis Firehose + EMR을 시도해본 뒤 직접 Hadoop Ecosystem 환경을 구축하기로 결정
Hadoop Ecosystem Component들 관리를 위해 Apache Ambari 사용
HDFS 운용 경험
HA를 위한 Secondary Name Node, Journal Node 개념 이해와 설정
Replication을 위한 설정 조율
HDFS Rebalancing
Data Node 증설 및 디스크 추가
YARN 운용 경험
Resource Manager, Node Manager의 역할 이해
Local Cache로 인한 디스크 부족 상황 경험
Spark application의 Dynamic Allocation
데이터 파이프라인 Component 간의 데이터 전달을 위해 Kafka 구축
Producer, Consumer, Offset, Consumer Group, Lag 개념 이해
디스크 용량 부족시 디스크 증설 작업 경험
Broker 증설 작업 경험
장애로 인해 Broker가 급사했을 때 복구 경험
Exactly Once Semantic Messaging을 위해 NoSQL 기반 Component 활용
Aerospike 운용 경험
그러나 HDFS에 저장할 때는 동일한 메세지를 동일한 파티션에 저장한 뒤 파티션째로 Cleansing Job을 돌리는 것으로 메세지 중복 제거
운영 단 사용은 Zeppelin으로
Interpreter 개념 이해 및 설정
User Impersonation
Ambari Metrics Collector, Grafana로 서버 모니터링
Format이 섞이면서 생기는 문제들 경험
JSON 포맷 충돌로 인한 고통 경험
이 문제를 극복하기 위해 JSON Schema 기반 Strict Format 도입
Format Migration
기본적인 Spark 작동 원리 이해
Driver, Executor
여러 가지 연산들
빠른 조회를 위해 Partitioning
어떤 경우 Partition filtering이 안 되는지 이런저런 실험
Out Of Memory의 고통을 많이 경험
분석을 위한 여러 가지 로직 개발 경험
Retention 분석
Single Touch, Multi Touch, Multi Source 분석
Join시 Hash partitioning에 의한 Data skewing 문제
Theta join시 Cross join이 되지 않도록 회피하기 위한 작업
Kafka로부터 HDFS에 저장하기 위해 Spark Streaming + Kafka Ingestion 활용
데이터 파이프라인 모니터링 및 경고 시스템 개선
무중단 HDFS 버전 업그레이드
HDFS 인프라 작업 도중 Data Node가 갑자기 Stale 상태가 될 때가 있는데, Name Node를 재시작하면 문제는 해결되지만 정확한 이유가 뭔지 아직 밝히지 못함
실시간 데이터 및 로그 조회 편의를 위한 ELK 구축
비용 절감을 위한 Hot-warm Architecture 구성
데이터 파이프라인 Component에 Akka 구조를 적용하여 좀 더 내구성 있게 보완
이 일들을 하면서 도움을 주신 분들에게 정말 감사하다는 말씀을 드리고 싶다. 마지막으로, 어서 분석 쪽으로 더 많은 일을 해보고 싶다.