Skip to content

JHLeeeMe/fake-data-pipeline

Repository files navigation

fake-data-pipeline

Data Generators -> Kafka -> Spark Streaming -> PostgreSQL -> Grafana fake-data-pipleine

1. fake data -> Kafka

2. Spark Structured Streaming -> PostgreSQL

  • iot, words, bike 토픽을 구독하고 처리함
  • 5초마다 토픽별로 필터링, 집계 및 timestamp관련 작업(for 실시간 시각화)을 한 후 PostgreSQL의 pipeline_db로 적재.
  • StreamHandler.scala

3. Grafana

  • PostgreSQL에 담겨지는 데이터들을 시각화

IOT Dashboard IOT_Dashboard

Words Dashboard Words_Dashboard

Bike Dashboard Bike_Dashboard


한번 해보기

Docker & docker-compose로 작성했으므로 간단히 실행해보자.
Dockerfile 링크: Docker Images repo

1. git clone

git clone https://github.com/JHLeeeMe/fake-data-pipeline.git

2. Run docker-compose

cd fake-data-pipeline && docker-compose up -d

# Check
docker-compose ps

여기까지하면 아래와 같은 컨테이너가 실행된다.

Spark: master(10.0.0.10), slave-1, slave-2, slave-3 (10.0.0.11 ~ 10.0.0.13)
Kafka: kafka-single-node(10.0.0.30)
PostgreSQL: postgresql(10.0.0.40)
Grafana: grafana(10.0.0.50)

3. Run data-generators

master container에서 python script들을 실행하자.

docker exec -it master /bin/bash

# master container
master$ cd ~/fake-data-pipeline
master$ pip3 install -r requirements.txt
master$ python3 data-generators/iot_devices.py <home || seoul>

작성한 스크립트가 데몬실행에 적절하지 않음.
그러므로 3개의 콘솔창에 각 docker master로 접근해서 실행하면 된다.
아니면 스크립트 수정하자.
e.g. python-scripts

4. Run spark-submit

3번 과정에 의해 fake 데이터들이 iot, words 토픽으로 보내지는 중
StreamHandler를 실행시켜 데이터를 정제 후 PostgreSQL로 저장.
spark-submit 실행 스크립트를 만들어두었다.

docker exec -it master /bin/bash

# master container
master$ cd /root/fake-data-pipeline/StreamHandler
master$ ./run-spark-submit.sh

5. Grafana로 시각화

웹 브라우저를 켜고 localhost:3000로 접속
(초기 id: admin, password: admin)
data source를 postgresql로 만들고 시각화

위 스크린샷에서 보여지는 대쉬보드는 grafana/dashboards에 올려둠
import해서 쓰면 될것이다. (이것까지 자동화해서 작성할 수 있어보이던데 귀찮아서 더 안찾아봄...)