環(huán)境準(zhǔn)備
我使用的是centos-6.7版本的3個虛擬機(jī),主機(jī)名為hadoop01、hadoop02、hadoop03。這3臺虛擬機(jī)既是zookeeper集群,又是kafka集群(但在生產(chǎn)環(huán)境中,這兩個集群通常會部署在不同的機(jī)架上)。我將使用hadoop用戶來搭建集群(在生產(chǎn)環(huán)境中,root用戶通常不被允許隨意使用)。關(guān)于虛擬機(jī)的安裝,可以參考以下兩篇文章:在Windows中安裝一臺Linux虛擬機(jī),以及通過已有的虛擬機(jī)克隆四臺虛擬機(jī)。Zookeeper集群參考zookeeper-3.4.10的安裝配置。Kafka安裝包的下載地址為:https://www.php.cn/link/90797bef9ef6175e04f3c9383568f9e4。
- 將Kafka安裝包上傳到服務(wù)器并解壓
[hadoop@hadoop01 ~]$ tar -zxvf /opt/soft/kafka_2.11-0.10.2.1.tgz -C /opt/apps/
- 進(jìn)入Kafka的config目錄下,修改server.properties文件
[hadoop@hadoop01 ~]$ cd /opt/apps/kafka_2.11-0.10.2.1/config/ [hadoop@hadoop01 config]$ vim server.properties broker.id=1 host.name=192.168.42.101 log.dirs=/opt/data/kafka zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181
說明:
只需修改上述列出的4個配置,其余保持默認(rèn)。host.name這個配置在原文件中不存在,需要手動添加,建議使用IP地址而不是主機(jī)名。這個配置在Kafka單節(jié)點(diǎn)或偽分布式集群中不需要設(shè)置。broker.id在每個節(jié)點(diǎn)上必須唯一,我設(shè)置hadoop01的broker.id=1,hadoop02的broker.id=2,hadoop03的broker.id=3。log.dirs指定Kafka數(shù)據(jù)的存儲位置,默認(rèn)的tmp目錄會定期清空,因此需要修改,并且在啟動Kafka集群前需要創(chuàng)建指定的目錄。zookeeper.connect如果不指定,將使用Kafka自帶的Zookeeper。
- 分發(fā)安裝包
[hadoop@hadoop01 apps]$ scp -r kafka_2.11-0.10.2.1 hadoop03:`pwd`
-
分別修改hadoop02和hadoop03的broker.id和host.name
-
在每個節(jié)點(diǎn)下創(chuàng)建log.dirs指定的目錄
-
啟動Zookeeper服務(wù)
[hadoop@hadoop01 ~]$ zkServer.sh start [hadoop@hadoop02 ~]$ zkServer.sh start [hadoop@hadoop03 ~]$ zkServer.sh start
- 在3個節(jié)點(diǎn)上都啟動Kafka
[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties [hadoop@hadoop02 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties [hadoop@hadoop03 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties # -daemon選項的意思是后臺啟動服務(wù)
- 驗(yàn)證Kafka服務(wù)是否啟動
- 測試Kafka集群
(1) 在任意節(jié)點(diǎn)上創(chuàng)建”test01″這個topic
[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-topics.sh --create --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --replication-factor 1 --partitions 1 --topic test01
(2) 在hadoop01上開啟kafka–console-producer,向test01這個topic中寫入數(shù)據(jù)
[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-console-producer.sh --broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 --topic test01
(3) 在另一臺節(jié)點(diǎn)上開啟kafka-console-consumer,將hadoop01節(jié)點(diǎn)接收到的數(shù)據(jù)打印出來
[hadoop@hadoop02 kafka_2.11-0.10.2.1]$ bin/kafka-console-consumer.sh --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --topic test01 --from-beginning
Kafka集群搭建成功!