Flume+Kafka整合使用


一、背景

Flume和Kafka都是Apache的開源項目。

1.Flume的優點和適用場景

支持的數據源較多、可自定義網絡請求的安全配置(filter)

適合下游數據消費者不多的情況(一個消費者開一個channel)
適合數據安全性要求不高的操作(數據沒有備份、沒有副本)
適合與Hadoop生態圈對接的操作(HDFS、Hbase等)

 

2.Kafka的優點和適用場景

高負載、高可用、數據安全性高

適合數據下游消費眾多的情況(kafka從磁盤讀,並且只找Leader讀)
適合數據安全性要求較高的操作,支持replication(多副本)

 

3.Flume的缺點

(1) 沒有提供高可用機制(整合ZooKeeper)。當然,可以自行實現,但增加了成本

(2) 多數場景是配置成把數據保存在內存,如果內存爆了或突然宕機,數據容易丟失

(3) 如果配置成把數據保存在硬盤,沒有分區(Partition)和冗余副本(Replication),大數據場景不適合單獨使用

 

4.Kafka的缺點

(1) 舊版本的Kafka的接收端性能比Flume差

(2) 支持接收的數據源沒Flume多

(3) 沒有內置的過濾器(filter),例如,請求的過濾器。當然,可以自行實現,但增加了成本

 

5.整合使用

大數據場景下有3種選擇:

(1) 數據發送端 -> Flume -> Kafka -> HBase/Hive/Solr/ES

(2) 數據發送端 -> Flume -> Kafka -> Java程序 -> HBase/Hive/Solr/ES

(3) 數據發送端 -> Flume -> Kafka -> Spark/Storm/Flink -> HBase/Hive/Solr/ES

 

二、預安裝和部署

1.硬件環境

假設有4台機,IP及主機名如下:

192.168.100.105 c1
192.168.100.110 c2
192.168.100.115 c3
192.168.100.120 c4

Flume只部署在c1機,Kafka在4台機都部署。

 

2.軟件環境

操作系統:Ubuntu Server 18.04

JDK:1.8.0

 

3.Flume的安裝與部署

https://www.cnblogs.com/live41/p/15554223.html

 

4.Kafka的安裝與部署

https://www.cnblogs.com/live41/p/15522443.html

 

三、整合配置

* 先登錄root賬號再進行以下操作

1.修改Flume配置

vim /home/flume/conf/flume-conf

把原來的配置修改為:

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
# 如果是用Java通過Flume API發送數據,把netcat改成avro a1.sources.r1.type
= netcat
a1.sources.r1.bind
= c1 a1.sources.r1.port = 44444 # Describe the sink a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.topic = topic1 a1.sinks.k1.kafka.bootstrap.servers = c1:9092,c2:9092,c3:9092 a1.sinks.k1.serializer.class = kafka.serializer.StringEncoder # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1

 

四、操作

1.啟動ZooKeeper

* 在每台機都要執行

zkServer.sh start

 

2.啟動Kafka

* 在每台機都要執行

kafka-server-start.sh -daemon /home/kafka/config/server.properties

 

3.創建topic並啟動topic的監聽

* 在c2機執行

這里topic的名字是topic1

kafka-topics.sh --create --bootstrap-server c1:9092 --topic topic1 --partitions 8 --replication-factor 2
kafka-console-consumer.sh --bootstrap-server c1:9092 --topic topic1

 

4.啟動Flume

* 在c1機執行

flume-ng agent -c conf/ -f /home/flume/conf/flume-conf -n a1 -Dflume.root.logger=INFO,console

 

5.命令測試

* 在c3機執行

telnet c1 44444

然后輸入任意內容,看到c1和c2的窗口顯示對應消息,就是部署成功了。

 

6.代碼測試

* 在c3機執行

用Flume和Kafka的安裝與部署文章中的代碼測試即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM