예전부터 실시간 데이터 처리를 진행해보고 싶었는데 회사에서는 마땅한 기회가 없어서 이번에 한투 API와 업비트 API 를 이용하여 프로젝트를 진행했다. 이번 프로젝트의 목표는 여러 데이터 플랫폼 툴이 있는데 안 써본 것들이 많아서 이거저거 써보기 위해서 최대한 조합해본 것이다. 베스트라고 생각하지 않는다.
일단 프로젝트 아키텍처는 다음과 같다.
Prerequisite
1. GCP 계정 생성 -> 나의 경우 새로 계정을 만들어서 무료 credit 으로 진행
2. 한투API나 업비트 API 신청
Project 개요
1. 카프카 클러스터를 통해 실시간 데이터를 받는다.
2. Apache Druid 를 연동해 실시간 데이터를 일차로 저장하고 이를 superset 과 연동해 실시간으로 차트를 생성한다.
3. Spark Streaming 을 통해 Kafk를 통해 실시간으로 들어오는 데이터를 필터링 해 알람 기능을 구현
(토스의 알림처럼, 주식 가격이 5% 상승, 10% 상승 이런 알림을 생성하고자 함)
4. Kafka에서 BigQuery로 데이터를 저장해 추후 ML분석으로는 SparkML을 사용하고자 함
구축과정
1. Hadoop 클러스터 생성. 아래 강의를 들으면서 구축
2. Spark 클러스터 생성
Spark는 Hadoop yarn 위에 생성.
"Spark on Yarn" 형태로 띄웠기 때문에 ResourceManager 가 떠있는 노드에서 Spark 를 설치하면 된다.
https://spidyweb.tistory.com/300
이 분 블로그에서 도움을 많이 받았다.
3. Apache Druid With Kafka
공식 문서를 참고해서 진행했다.
https://druid.apache.org/docs/latest/tutorials/tutorial-kafka.html
4. Superset With Druid
superset의 경우 이 분 블로그를 참고해서 druid 와 연동 후 실시간 차트를 그릴 수 있었다.
https://passwd.tistory.com/entry/Superset-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89
5. DataFlow를 활용해 BigQuery에 적재
DataFlow의 경우 Kafka to BigQuery 기능을 이용해서 쉽게 구축할 수 있었다.
틈틈이 시간나는대로 하나하나씩 진행했던 내용을 정리해두어야겠다.
댓글