05【線上日誌分析】之Kafka 0.10.1.0 Cluster的搭建和Topic簡單操作實驗

hackeruncle發表於2017-01-07

【kafka cluster機器】:
機器名稱   使用者名稱稱
sht-sgmhadoopdn-01/02/03 root

【安裝目錄】: /root/learnproject/app


1.將scala資料夾同步到叢集其他機器(scala 2.11版本,可單獨下載解壓)
[root@sht-sgmhadoopnn-01 app]# scp -r scala
[root@sht-sgmhadoopnn-01 app]# scp -r scala
[root@sht-sgmhadoopnn-01 app]# scp -r scala

#環境變數
[root@sht-sgmhadoopdn-01 app]# vi /etc/profile
export SCALA_HOME=/root/learnproject/app/scala
export PATH=$SCALA_HOME/bin:$HADOOP_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

[root@sht-sgmhadoopdn-02 app]# vi /etc/profile
export SCALA_HOME=/root/learnproject/app/scala
export PATH=$SCALA_HOME/bin:$HADOOP_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

[root@sht-sgmhadoopdn-02 app]# vi /etc/profile
export SCALA_HOME=/root/learnproject/app/scala
export PATH=$SCALA_HOME/bin:$HADOOP_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH


[root@sht-sgmhadoopdn-01 app]# source /etc/profile
[root@sht-sgmhadoopdn-02 app]# source /etc/profile
[root@sht-sgmhadoopdn-03 app]# source /etc/profile

 

2.下載基於Scala 2.11的kafka版本為0.10.1.0
[root@sht-sgmhadoopdn-01 app]# pwd
/root/learnproject/app
[root@sht-sgmhadoopdn-01 app]# wget
[root@sht-sgmhadoopdn-01 app]# tar xzvf kafka_2.11-0.10.1.0.tgz
[root@sht-sgmhadoopdn-01 app]# mv kafka_2.11-0.10.1.0 kafka

3.建立logs目錄和修改server.properties(前提zookeeper cluster部署好,見“03【線上日誌分析】之hadoop-2.7.3編譯和搭建叢集環境(HDFS HA,Yarn HA)” )
[root@sht-sgmhadoopdn-01 app]# cd kafka
[root@sht-sgmhadoopdn-01 kafka]# mkdir logs
[root@sht-sgmhadoopdn-01 kafka]# cd config/
[root@sht-sgmhadoopdn-01 config]# vi server.properties
broker.id=1
port=9092
host.name=172.16.101.58
log.dirs=/root/learnproject/app/kafka/logs
zookeeper.connect=172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka


4.同步到02/03伺服器,更改broker.id 及host.name
[root@sht-sgmhadoopdn-01 app]# scp -r kafka sht-sgmhadoopdn-03:/root/learnproject/app/
[root@sht-sgmhadoopdn-01 app]# scp -r kafka sht-sgmhadoopdn-03:/root/learnproject/app/

[root@sht-sgmhadoopdn-02 config]# vi server.properties
broker.id=2
port=9092
host.name=172.16.101.59

[root@sht-sgmhadoopdn-03 config]# vi server.properties
broker.id=3
port=9092
host.name=172.16.101.60

5.環境變數

[root@sht-sgmhadoopdn-01 kafka]# vi /etc/profile
export KAFKA_HOME=/root/learnproject/app/kafka
export PATH=$KAFKA_HOME/bin:$SCALA_HOME/bin:$ZOOKEEPER_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

[root@sht-sgmhadoopdn-01 kafka]# scp /etc/profile sht-sgmhadoopdn-02:/etc/profile
[root@sht-sgmhadoopdn-01 kafka]# scp /etc/profile sht-sgmhadoopdn-03:/etc/profile
[root@sht-sgmhadoopdn-01 kafka]#

[root@sht-sgmhadoopdn-01 kafka]# source /etc/profile
[root@sht-sgmhadoopdn-02 kafka]# source /etc/profile
[root@sht-sgmhadoopdn-03 kafka]# source /etc/profile

 

6.啟動/停止
[root@sht-sgmhadoopdn-01 kafka]# nohup kafka-server-start.sh config/server.properties &
[root@sht-sgmhadoopdn-02 kafka]# nohup kafka-server-start.sh config/server.properties &
[root@sht-sgmhadoopdn-03 kafka]# nohup kafka-server-start.sh config/server.properties &

###停止
bin/kafka-server-stop.sh

---------------------------------------------------------------------------------------------------------------------------------------------

7.topic相關的操作
a.建立topic,如能成功建立topic則表示叢集安裝完成,也可以用jps命令檢視kafka程式是否存在。
[root@sht-sgmhadoopdn-01 kafka]# bin/kafka-topics.sh --create --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --replication-factor 3 --partitions 1 --topic test

b.透過list命令檢視建立的topic:
[root@sht-sgmhadoopdn-01 kafka]# bin/kafka-topics.sh --list --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka

c.檢視建立的Topic
[root@sht-sgmhadoopdn-01 kafka]# bin/kafka-topics.sh --describe --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --topic test
Topic:test      PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2
[root@sht-sgmhadoopdn-01 kafka]#
第一行列出了這個topic的總體情況,如topic名稱,分割槽數量,副本數量等。
第二行開始,每一行列出了一個分割槽的資訊,如它是第幾個分割槽,這個分割槽的leader是哪個broker,副本位於哪些broker,有哪些副本處理同步狀態。

Partition: 分割槽
Leader :   負責讀寫指定分割槽的節點
Replicas : 複製該分割槽log的節點列表
Isr :      “in-sync” replicas,當前活躍的副本列表(是一個子集),並且可能成為Leader
我們可以透過Kafka自帶的bin/kafka-console-producer.sh和bin/kafka-console-consumer.sh指令碼,來驗證演示如果釋出訊息、消費訊息。

d.刪除topic
[root@sht-sgmhadoopdn-01 kafka]# bin/kafka-topics.sh  --delete --zookeeper  172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka  --topic test

e.修改topic
使用—-alert原則上可以修改任何配置,以下列出了一些常用的修改選項:
(1)改變分割槽數量
[root@sht-sgmhadoopdn-02 kafka]#bin/kafka-topics.sh --alter  --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --topic test --partitions 3
[root@sht-sgmhadoopdn-02 kafka]# bin/kafka-topics.sh --describe --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --topic test
Topic:test      PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: test     Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2
        Topic: test     Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3
        Topic: test     Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1
[root@sht-sgmhadoopdn-02 kafka]#

(2)增加、修改或者刪除一個配置引數
 bin/kafka-topics.sh —alter --zookeeper 192.168.172.98:2181/kafka  --topic my_topic_name --config key=value
 bin/kafka-topics.sh —alter --zookeeper 192.168.172.98:2181/kafka  --topic my_topic_name --deleteConfig key

 

8.模擬實驗1
在一個終端,啟動Producer,並向我們上面建立的名稱為my-replicated-topic5的Topic中生產訊息,執行如下指令碼:
[root@sht-sgmhadoopdn-01 kafka]# bin/kafka-console-producer.sh --broker-list 172.16.101.58:9092,172.16.101.59:9092,172.16.101.60:9092 --topic test

在另一個終端,啟動Consumer,並訂閱我們上面建立的名稱為my-replicated-topic5的Topic中生產的訊息,執行如下指令碼:
[root@sht-sgmhadoopdn-02 kafka]# bin/kafka-console-consumer.sh --zookeeper 172.16.101.58:2181,172.16.101.59:2181,172.16.101.60:2181/kafka --from-beginning --topic test

可以在Producer終端上輸入字串訊息行,就可以在Consumer終端上看到消費者消費的訊息內容。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2132049/,如需轉載,請註明出處,否則將追究法律責任。

相關文章