docker/base : kafka cluster를 Dockerfile로 구성.
cluster : cluster 를 analysis하는 코드.
- 구성환 환경에서는 별도의 zookeeper를 사용하고 port를 3개 모두 통일시켰다.
구현의 용이성을 위하여 Kafka-Spark 클러스터로 구성된 도커 이미지 파일을 다음 docker hub에 업로드 하였습니다. https://hub.docker.com/repository/docker/sperospera1225/kafka_spark_cluster/general
docker pull sperospera1225/kafka_spark_cluster
docker network create --gateway 172.28.5.254 --subnet 172.28.0.0/16 base_2
execute network.sh
execute build.sh
select 3 directory in host
and change host mount directory in run script
execute run1.sh run2.sh run3.sh
execute zookeeper_start.sh in each container
execute kafka_start.sh in each container
$ ~/spark/sbin/start-all.sh
$ ~/spark/sbin/start-history-server.sh
- Kafka에서 ingestion한 topic의 consumer코드로 data를 받아옵니다.
- hadoop yarn기반의 resource manager를 통해 현재 3개의 노드에서 spark-cluster모드로 설정해놓았습니다.
- Spark MLlib기반의 코드로 data processing을 하고 Elephas 라이브러리로 연동하여 딥러닝 모델을 학습합니다.
- 분류된 데이터를 MongoDB에 Spark-Mongo Connector를 이용하여 실시간으로 저장합니다.
1. 토픽 리스트 확인.
bin/kafka-topics.sh --list --zookeeper kafka1:2181,kafka2:2181,kafka3:2181/twitter
# console producer 실행
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicname
# console consumer 실행
bin/kafka-console-consumber.sh –bootsrap-server localhost:9092 –topic topicname
# topic 생성
bin/kafka-topics.sh --create --zookeeper kafka1:2181,kafka2:2181,kafka3:2181/twitter --replication-factor 3 --partitions 1 --topic connect-configs