1. 程式人生 > >Kafka 學習筆記(5)—— flume + kafka 整合(1)

Kafka 學習筆記(5)—— flume + kafka 整合(1)

1 需求分析

  1. 採集訂單系統應用列印的日誌檔案。
  • 日誌檔案使用 log4j 生成,滾動生成。
  1. 將採集的日誌檔案儲存到 kafka中。
  • (source) 輸入: tail -F xx.log
  • (channel) 儲存 : 記憶體
  • (sink)輸出:kafka config
  • a1.source=s1
  • a1.channel=c1
  • a1.sink=k1
  • source == > type = exec tail -F xxx,.log
  • channel ==> RAM
  • sink ==> xxx.xxxx.xxxx.KafkaSink //該類必須放在lib目錄
  • sink.topic = orderMq
  • sink.mytopic = mytopic
map=getConfig()
value=map.get(''itcast)
  1. 通過 storm 程式消費 Kafka 中資料
KafkaSpout()
Bolt1()
Bolt2()

2 配置flume

2.1 上傳解壓

在這裡插入圖片描述

 tar -zxvf apache-flume-1.6.0-bin.tar.gz -C /export/servers
[[email protected] ~]$ cd /export/servers/
[[email protected] servers]$ ln -s apache-flume-1.6.0-bin/ flume
[
[email protected]
servers]$

2.2 建立配置檔案

[[email protected] ~]$ cd /export/servers/flume/conf/
[[email protected] conf]$ mkdir myconf
[[email protected] conf]$ vim exec.conf

a1.sources=r1
a1.channels=c1
a1.sinks=k1

al.sources.r1.type=exec
a1.sources.r1.command=tail -F /export/data/flume_sources/click_log/1.log
a1.sources.r1.channels=c1

a1.channels.c1.type=memory
a1.channels.c1.capacity=10000
a1.channels.c1.transactionCapacity=100

a1.sinks.k1.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic=test
a1.sinks.k1.brokerList=node1:9092
a1.sinks.k1.requiredAcks=1
a1.sinks.k1.batchSize=20
a1.sinks.k1.channel=c1

2.3 建立目標資料的目錄

mkdir -p /export/data/flume_sources/click_log

2.4 通過指令碼建立目標檔案併產生資料

click_log_out.sh

for((i=0;i<=50000;i++));
do echo *message-*+$i>>/export/data/flume_sources/click_log/1.log;
done

指令碼需要root使用者賦權

[[email protected] ~]$ sudo chmod +x click_log_out.sh 

3 開始啟動各個流程

3.1 啟動 zk 叢集

zkServer.sh start

3.2 啟動 kafka 叢集

[[email protected] ~]$ kafka-server-start.sh /export/servers/kafka/config/server.properties 

3.3 建立一個topic 並開啟 consumer

kafka-console-consumer.sh --topic=test --zookeeper node1:2181

3.4 啟動flume 客戶端

[[email protected] ~]$ cd /export/servers/flume/
[[email protected] flume]$ ./bin/flume-ng agent -n a1 -c /export/servers/flume/conf -f /export/servers/flume/conf/myconf/exec.conf -Dflume.root.logger=INFO,console

3.5 產生資料

[[email protected] ~]$ sh click_log_out.sh 
[[email protected] ~]$ 

3.6 在 consumer 視窗可以看到資料

在這裡插入圖片描述