入門篇(二)
- 創建多個集群(broker)
- 同樣的,先創建一個終端1啟動zookeeper, 在創建一個終端2 cd 到kafka根目錄
9. 設置多個broker集群
cp /usr/local/etc/kafka/server.properties /usr/local/etc/kafka/server-1.properties
cp /usr/local/etc/kafka/server.properties /usr/local/etc/kafka/server-2.properties
10. 編輯這些新建的文件,設置以下屬性:
config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://:9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
listeners=PLAINTEXT://:9094
log.dir=/tmp/kafka-logs-2
我們已經運行了zookeeper和剛才的一個kafka節點(server.properties),現在只需要再啟動2個新的kafka節點。
- 分別新建不同的終端創建。
./bin/kafka-server-start /usr/local/etc/kafka/server-1.properties &
./bin/kafka-server-start /usr/local/etc/kafka/server-2.properties &
11. 創建一個新topic,把備份設置為:3
./bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
怎么知道每個集群在做什么呢?運行命令“describe topics”
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic my-replicated-topic
集群server-1.properties的信息
這是一個解釋輸出,第一行是所有分區(topics)的摘要,每一個線提供一個分區信息,因為我們只有一個分區,所有只有一條線。
"leader":該節點負責所有指定分區的讀和寫,每個節點的領導都是隨機選擇的。
"replicas":備份的節點,無論該節點是否是leader或者目前是否還活著,只是顯示。
"isr":備份節點的集合,也就是活著的節點集合。
運行下面的命令,看看之前創建的節點topic
./bin/kafka-topics --describe --zookeeper localhost:2181 --topic test
沒有驚喜,剛才創建的topic(主題/節點)沒有Replicas,所以是0
- 除了手工創建topic外,你也可以配置你的broker,當發布一個不存在的topic時自動創建topic
發布一些信息到自己的集群server-1節點my-replicated-topic上
./bin/kafka-console-producer --broker-list localhost:9092 --topic my-replicated-topic
現在消費這些信息
./bin/kafka-console-consumer --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
關閉生產者,關閉消費者
control+c
我們要測試集群的容錯,kill掉leader,Broker1作為當前的leader,也就是kill掉Broker1
ps | grep server-1.properties
7564 ttys002 0:15.91 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/bin/java...
使用 Kafka Connect (運行連接器)來 導入/導出 數據
- 1 、 首先,我們首先創建一些種子數據用來測試
cd /usr/local/Cellar/kafka/0.10.2.0
echo -e "foo\nbar" > test.txt
// 在test.txt增加一行
echo "Another line" >> test.txt
- 2 、 接下來,開始2個連接器運行在獨立的模式,這意味著它們運行在一個單一的、本地的、專用的進程。我們提供3個配置文件作為參數。第一個始終是kafka Connect進程,如kafka broker連接和數據庫序列化格式,剩下的配置文件每個指定的連接器來創建,這些文件包括一個獨特的連接器名稱,連接器類來實例化和任何其他配置要求的。
./bin/connect-standalone /usr/local/etc/kafka/connect-standalone.properties /usr/local/etc/kafka/connect-file-source.properties /usr/local/etc/kafka/connect-file-sink.properties
這是示例的配置文件,使用默認的本地集群配置并創建了2個連接器:第一個是導入連接器,從導入文件中讀取并發布到Kafka主題,第二個是導出連接器,從kafka主題讀取消息輸出到外部文件,在啟動過程中,你會看到一些日志消息,包括一些連接器實例化的說明。一旦kafka Connect進程已經開始,導入連接器應該讀取從
test.txt
寫入到connect-test
,導出連接器從主題connect-test
讀取消息寫入到test.sink.txt
通過驗證輸出文件的內容來驗證數據數據已經全部導出:
《不需要啟動kafka服務》
cat test.sink.txt
**
注意:`**,導入的數據也已經在Kafka主題
connect-test
里,所以我們可以使用該命令查看這個主題:
./bin/kafka-console-consumer --zookeeper localhost:2181 --topic connect-test --from-beginning
使用kafka steam 來處理數據(輸入/讀取數據)
./bin/kafka-topics --create \
--zookeeper localhost:2181 \
--replication-factor 1 \
--partitions 1 \
--topic streams-file-input
./bin/kafka-console-consumer --zookeeper localhost:2181 --from-beginning --topic streams-file-input
- 運行workCount來處理輸入的數據
./bin/kafka-run-class org.apache.kafka.streams.examples.wordcount.WordCountDemo