【Kafka】Kafka 1.0.1案例詳解之Kafka Connect

Kafka Connect是一個用於Kafka與外部系統之間高可靠的、可擴展的流數據傳輸工具。它使得我們能夠簡單快速的定義數據集合在Kafka與外部系統之間輸入輸出。Kafka Connect可以從數據庫或者應用程序服務器中手機數據指標到Kafka的topic中,以便數據進行低延遲的數據處理。一個實現了導出功能的Connect可以將數據從Kafka中導出到外部存儲系統、查詢系統或者批處理系統進行離線分析。

Kafka Connect包括如下特性:

  • 提供了一個通用的Connectors開發框架

  • 支持分佈式模式或者單機模式

  • 支持REST接口

  • 自動offset管理

  • 分佈式並且可擴展

  • 支持流處理和批處理

Kafka Connect功能示意圖

運行Kafka Connect

支持兩種運行模式:standalone模式(單線程)和分佈式

standalone模式

standalone模式中,所有的工作都在單個線程中完成。一般情況下這種模式適合於只有單節點工作的情況,但是這並不能做到Kafka Connect的高容錯性,如果進程down掉則沒有替代的進程來完成後續的工作。那麼如何啓動一個standalone進程呢:

> bin/connect-standalone.sh config/connect-standalone.properties connector1.properties [connector2.properties ...]

connect-standalone.properties中配置了worker的相關信息,包括連接參數、系列化格式、和提交offset的時間間隔等,第二個配置文件則指定了connect的相關信息,是source還是sink,輸入的源或者輸出的目標。

分佈式模式

分佈式模式和standalone模式有點區別,我們先來看看啓動命令:

> bin/connect-distributed.sh config/connect-distributed.properties

這樣我們相當於啓動了一個Connect服務,Kafka Connect的本意就是打算以服務的方式運行,所以它提供了REST API來管理connectors,分佈式模式啓動之後,我們就可以通過REST服務進行job管理了。

現在我們來嘗試創建一個connector:

POST方式發送到:http://192.168.0.181:8083/connectors

返回:

{

   "name": "local-file-source",

       "config": {

   "connector.class": "FileStreamSource",

           "file": "test.txt",

           "tasks.max": "1",

           "name": "local-file-source-name",

           "topic": "connect-test"

},

   "tasks": [

   {

       "connector": "local-file-source",

           "task": 0

   }

],

   "type": "source"

}

GET方式獲取connectors列表:

[

   "local-file-source"

]

現在我們向文件中增加一行數據:

echo "nowcccsadfasdfasdfadvvc" >> test.txt

在connect-test消費端可以發現接收到了一條新紀錄:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning

{"schema":{"type":"string","optional":false},"payload":"nowcccsadfasdfasdfadvvc"}

Kafka Connect的內容就講解到這裏,實際上Connector是可以直接定製的,我們可以通過繼承SourceConnector、SinkConnector、SourceTask和SinkTask來實現我們所需要的功能。

生活

豈止於美

作者:蘇鷺彬

長按二維碼關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章