![post-thumbnail](https://velog.velcdn.com/images/hanovator/post/b1785341-8b76-4f6b-984f-6b970c648e85/my_logo.jpeg)
<데이터 흐름도>
1. 데이터 정의
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F4d9477e2-f278-421d-af8d-f93b9a96be93%2Fimage.png)
- db와 서비스 API의 로그를 Extract하는 과정
- 로그를 입수하는 과정에서 여러 휴먼에러가 있었고 히스토리를 찾기 어려웠다.
- 로그 정의 시스템 개발 (서비스별 로그를 정의하고 검색 및 관리 할 수 있는 툴)
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F0a26a6a1-109f-4799-afe3-6e8ec204746f%2Fimage.png)
- kafka에 적재된 토픽 로그들은 스트리밍 처리를 통해 로그센터에 정의된 스키마와 비교하여 valid체크를 수행
- 로그에 이상이 있는경우 slack으로 자동알림
2. 데이터 수집 및 저장
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F47795321-2abe-484a-aa18-2589a6a5afbb%2Fimage.png)
- Mysql: sqoop을 통해 적재
- MongoDB : hive mongo storage handler를 통해 적재
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fa260b05c-b911-46be-b66e-8fc3961f57ae%2Fimage.png)
- HDFS, Kudu, HBase등에 적재된다.
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F073bcf3c-2318-4c23-a60f-e4a9eb613707%2Fimage.png)
3. 데이터 추출, 가공, 적재(ETL): 배치 프로세싱
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F7afd2845-5b48-4edc-8f59-6fea8a9c5696%2Fimage.png)
- spark, hive, impala로 분석하고 airfow 및 jenkins로 workflow를 관리
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F041b2c7c-c7cb-46e4-9350-ea9e1a2c048e%2Fimage.png)
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fa0c7aa2e-5020-4468-a6cf-a761b9329bed%2Fimage.png)
- 주로 EDA, ETL시 Impala를 이용 (가장 속도가 빠르다.)
- SQL의 제한적인 부분이나 복잡도 높은 처리는 Spark을 사용
- 대용량의 경우 Hive사용
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F09882b4f-7edf-47dd-8f62-991ff4c3b196%2Fimage.png)
- 클러스터 통합 메트릭을 제공하지 않기 때문에 전체 클러스터 사용량에 대한 메트릭을 수집하기 어려웠음
- 각 코디네이터에서 제공하는 쿼리 프로파일을 수집해서 kafka로 적재하고 druid supervisor를 이용해 druid로 실시간 적재된 데이터를 grafana로 모니터링
- long run 쿼리나, 전체 클러스터에서 사용하는 리소스가 과다한경우 우선 차단 시스템 개발
<Grafana 대시보드>
- 쿼리 히스토리와 리소스를 모니터링 가능하도록 구성
- 이러한 기술을 이용하여 ETL로 Impala를 주로 사용함
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fec551c39-cf5d-43ab-b401-fc2f0a274a0b%2Fimage.png)
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F81cfadb6-1865-4500-b8f1-569fa428bf5c%2Fimage.png)
- 간단한 배치작업의 경우 젠킨스 사용
- Dpendency가 복잡한 주요 ETL의 경우 Airflow 사용
3-1. 리얼타임 프로세싱
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fe9b0b20d-de4b-476c-8d5b-8ba1d0bb8cdd%2Fimage.png)
- 스트리밍처리에는 Flink, Spark Streaming, Druid를 사용
- 실시간 데이터 적재 및 서빙으로는 InfluxDB, Redis, HBase, Hadooop, Kudu, ES, Druid 등이 활용
- 실시간 쿼리엔진으로는 Druid, ES, InfluxDB, Impala+Kudu 조합으로 사용
- 실시간 가공, 집계, 이상징후감지, 데이터서비스 모니터링, OLAP등을 수행
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fad728b41-a397-41a7-93d3-cf0a0a92bbf9%2Fimage.png)
- impalasms HDFS에 실시간으로 적재되는 데이터와 싱크가 되지 않기때문에 오늘 데이터만 kudu db에 넣어 조회하도록함
4. 데이터 분석(EDA)
4-1. Query & Code 기반 데이터분석
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F00a830e4-65ce-450e-97e8-ca0dbd333c5f%2Fimage.png)
- 하둡 에코시스템이나 서비스메트릭스
- Druid, InfluxDB, Elasticsearch 등을 datasource로 kibana나 grafana를 이용하여 모니터링하고 slack으로 alerting수행
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2Fcd0324c8-b208-4ad9-8852-cf5bf9bd8466%2Fimage.png)
- 배치데이터는 mysql or mongodb에 주기적으로 적재하여 어플리케이션에 활용
5. 데이터 모니터링
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F6962610a-9a18-4b31-819e-e1e54aac15eb%2Fimage.png)
![](https://velog.velcdn.com/images%2Fhanovator%2Fpost%2F71820829-b6fd-4e30-8014-318fb484404b%2Fimage.png)
Reference