Apache Kafka系列(五) Kafka Connect及FileConnector樣本

來源:互聯網
上載者:User

標籤:doc   大批量資料匯入   produce   enter   ref   開發   java   arch   dem   

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令列工具(CLI) Apache Kafka系列(三) Java API使用 Apache Kafka系列(四) 多線程Consumer方案 Apache Kafka系列(五) Kafka Connect及FileConnector樣本一. Kafka Connect簡介

  Kafka是一個使用越來越廣的訊息系統,尤其是在大資料開發中(即時資料處理和分析)。為何整合其他系統和解耦應用,經常使用Producer來發送訊息到Broker,並使用Consumer來消費Broker中的訊息。Kafka Connect是到0.9版本才提供的並極大的簡化了其他系統與Kafka的整合。Kafka Connect運用使用者快速定義並實現各種Connector(File,Jdbc,Hdfs等),這些功能讓大批量資料匯入/匯出Kafka很方便。

             

中所示,左側的Sources負責從其他異構系統中讀取資料並匯入到Kafka中;右側的Sinks是把Kafka中的資料寫入到其他的系統中。

二. 各種Kafka Connector

  Kafka Connector很多,包括開源和商業版本的。如下列表中是常用的開源Connector

Connectors References
Jdbc Source, Sink
Elastic Search Sink1, Sink2, Sink3
Cassandra Source1, Source 2, Sink1, Sink2 
MongoDB Source
HBase Sink
Syslog Source
MQTT (Source) Source
Twitter (Source) Source, Sink
S3 Sink1, Sink2

  商業版的可以通過Confluent.io獲得

三. 樣本3.1 FileConnector Demo

 本例示範如何使用Kafka Connect把Source(test.txt)轉為流資料再寫入到Destination(test.sink.txt)中。如所示:

          

      本例使用到了兩個Connector:

  • FileStreamSource:從test.txt中讀取並發布到Broker中
  • FileStreamSink:從Broker中讀取資料並寫入到test.sink.txt檔案中

  其中的Source使用到的設定檔是${KAFKA_HOME}/config/connect-file-source.properties

name=local-file-sourceconnector.class=FileStreamSourcetasks.max=1file=test.txttopic=connect-test

  其中的Sink使用到的設定檔是${KAFKA_HOME}/config/connect-file-sink.properties

name=local-file-sinkconnector.class=FileStreamSinktasks.max=1file=test.sink.txttopics=connect-test

  Broker使用到的設定檔是${KAFKA_HOME}/config/connect-standalone.properties

bootstrap.servers=localhost:9092key.converter=org.apache.kafka.connect.json.JsonConvertervalue.converter=org.apache.kafka.connect.json.JsonConverterkey.converter.schemas.enable=truevalue.converter.schemas.enable=trueinternal.key.converter=org.apache.kafka.connect.json.JsonConverterinternal.value.converter=org.apache.kafka.connect.json.JsonConverterinternal.key.converter.schemas.enable=falseinternal.value.converter.schemas.enable=falseoffset.storage.file.filename=/tmp/connect.offsetsoffset.flush.interval.ms=10000

 

3.2 運行Demo

  需要熟悉Kafka的一些命令列,參考本系列之前的文章Apache Kafka系列(二) 命令列工具(CLI)

 3.2.1 啟動Kafka Broker

[[email protected] bin]# cd /opt/kafka_2.11-0.11.0.0/[[email protected] kafka_2.11-0.11.0.0]# lsbin  config  libs  LICENSE  logs  NOTICE  site-docs[[email protected] kafka_2.11-0.11.0.0]# ./bin/zookeeper-server-start.sh ./config/zookeeper.properties &
[[email protected] kafka_2.11-0.11.0.0]# ./bin/kafka-server-start.sh ./config/server.properties &

3.2.2 啟動Source Connector和Sink Connector

[[email protected] kafka_2.11-0.11.0.0]# ./bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties 

3.3.3 開啟console-consumer

./kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic connect-test

3.3.4 寫入到test.txt檔案中,並觀察3.3.3中的變化

[[email protected] kafka_2.12-0.11.0.0]# echo ‘firest line‘ >> test.txt[[email protected] kafka_2.12-0.11.0.0]# echo ‘second line‘ >> test.txt3.3.3中開啟的視窗輸出如下{"schema":{"type":"string","optional":false},"payload":"firest line"}{"schema":{"type":"string","optional":false},"payload":"second line"}

3.3.5 查看test.sink.txt

[[email protected] kafka_2.12-0.11.0.0]# cat test.sink.txt firest linesecond line

 

四. 結論

本例僅僅示範了Kafka內建的File Connector,後續文章會完成JndiConnector,HdfsConnector,並且會使用CDC(Changed Data Capture)整合Kafka來完成一個ETL的例子

 PS:

相比編譯過Kafka-Manager都知道各種坑,經過了3個小時的努力,我終於把Kafka-Manager編譯通過並打包了,並且新增了Kafka0.11.0版本支援。

附: 連結: https://pan.baidu.com/s/1miiMsAk 密碼: 866q

  

Apache Kafka系列(五) Kafka Connect及FileConnector樣本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.