카테고리 없음
[if(kakao) 2020] 오픈 소스 기반 하이브 테이블 모니터링 시스템 만들기 Review
GEUP
2022. 5. 19. 15:55
출처 : https://if.kakao.com/2020/session/121
if(kakao)2020
오늘도 카카오는 일상을 바꾸는 중
if.kakao.com
오픈 소스를 사용해서 하이브 테이블 모니터링 시스템을 만든 경험을 공유합니다.
InfluxDB와 Grafana를 이용해 만들면서 겪은 시행착오와 하이브 테이블을 모니터링하는 여러 가지 방법을 소개합니다. 해당 시스템을 이용해서 테이블보다 더 작은 단위(파티션 등)로 데이터들을 모니터링하고 있으며, 테이블 생성 잡 모니터링으로는 파악하기 어려운 장애들을 감지합니다.
리뷰 포인트
- 델루나(Table Del Luna) - 하이브 테이블 모니터링 시스템

델루나(Table Del Luna) - 하이브 테이블 모니터링 시스템
- 델루나는 응용분석팀이 다루는 수많은 데이터들을 관리하기위한 모니터링 시스템으로 테이블을 생성 가공하는 ETL 작업 뿐만아니라 실제 데이터를 이용해서 모니터링
- 델루나를 만든 이유
- 데이터의 규모가 너무 커서 관리하기 힘들다
- 알아차리기 힘든 장애들이 발생한다.
- 매일 조금씩 행수가 감소
- 간헐적으로 테이블이 제대로 생성되지 않음
- 실험용 테이블이나 오래된 테이블이 관리되지 않고 쌓여서 큰 용량을 차지하는 경우
- 부분적으로 일부 정보가 변경되거나 잘못입력된 경우
- 구성 요소
- Hive Metastore : 데이터 테이블의 통계 정보를 저장하고 있는 저장공간
- insert into 구문으로 생성한 테이블의 통계 정보는 자동으로 집계된다.
- insert into 구문으로 생성한 테이블이 아닌 경우, LOAD DATA 구문으로 생성 한 테이블들, 이미 존재하는 테이블들, Hive 외에 다른 시스템(SPARK 등)으로 만들어진 테이블들은 수동으로 집계해야 한다.
- Hive Metastore에서 각 테이블들의 통계(용량, 행수 등) 데이터를 가져와서 InfluxDB에 저장
- 테이블간 관계 정보를 수집 후 InfluxDB에 저장
- 원본 테이블을 복사해 새로운 테이블 생성하는 경우에 사용한 쿼리를 파싱해서 원본 테이블이 새로만든 테이블과 관계가 있다는 사실을 알 수 있다. 그러나 테이블 생성에 사용된 쿼리를 파싱하기 위해서는 먼저 쿼리를 찾아야 한다. 하이브로 테이블을 생성한 경우 하이브 클라이언트 서버 로그를 수집하여 그 속에서 쿼리를 찾을 수 있다.
- 위 방법으로 관계 정보를 찾을 수 없다면 젠킨스 디스크립션에 주석으로 달려있는 원본 테이블과 새로운 테이블 생성 관계를 찾을 수 있다.
- 마지막으로 수동으로 입력하여 관계 정보를 수집한다.
- InfluxDB : Grafana와 연동 가능한 시계열 데이터베이스
- SQL과 유사한 InfluxQL 지원하고 InfuxQL을 활용해 쉽게 시각화를 할 수 있음
- 단점
- 고가용성을 위해서는 유로 버전을 사용해야함
- join 불가
- schemaless 하기 때문에 데이터를 넣을 때는 편리하지만 schema를 변경하고 싶을 때 (ex string type -> integer type) 모든 데이터를 새로 써야 함
- Grafana : InfluxDB에 저장된 데이터를 가져와서 대쉬보드로 시각화
- 시각화 도구
- 다양한 데이터 소스(InfluxDB, Prometheus, Mysql 등) 지원
- 다양한 플러그인(그래프, 다이어그램 등) 지원
- 알람
- 알람이 발생하는 경우
- 테이블이 생성됐는데 Row가 0인 경우
- 주기적으로 생성되어야 하는 테이블이 생성되지 않는 경우
- 알람이 발생하는 경우
- 추가 정보 수집 라이브러리
- 공통적인 지표만 시각화하는 것이 아니라 Custom한 지표도 시각화 할 수 있도록 지원하는 라이브러리
- Hive query를 통해 특정 테이블의 Custom 지표를 구하는 query를 작성하면
- delluna-collector가 해당 query의 실행 결과를 InfluxDB에 맞게 변경한 후 저장시켜줌
- 이렇게 저장된 값을 가지고 Grafana에서 각자 원하는 대쉬보드를 만들어서 사용
- delluna-report는 InfluxDB에 저장된 데이터를 repoting화 해서 카카오톡 메시지로 보내줌
- Hive Metastore : 데이터 테이블의 통계 정보를 저장하고 있는 저장공간
마무리
- 카카오의 델루나는 influxDB와 Grafana를 활용해 Hadoop에 저장된 테이블을 모니터링하는 시스템으로 보인다.
- Hadoop에는 개발자의 필요에 따라 수많은 테이블이 생성/삭제 되고 그 안에 저장되는 데이터의 양도 매우 많다. 따라서 이 테이블들을 모니터링하여 잘못 생성되었거나 더이상 사용되지 않는 테이블, 생성되어야 하는 테이블, 테이블에 대한 custom한 지표 등을 모니터링 하여 장애를 발견하거나 불필요한 자원을 사용하지 않도록 관리해야 한다.