1 概述
Apache Kafka 是一個分散式高吞吐量的流訊息系統,Kafka建立在ZooKeeper同步服務之上。它與Apache Storm和Spark完美整合,用於實時流資料分析,與其他訊息傳遞系統相比,Kafka具有更好的吞吐量,內建分割槽,資料副本和高度容錯功能,因此非常適合大型訊息處理應用場景。
2 部署圖3 Kafka叢集部署前環境準備3.1 安裝Java推薦安裝Java 8,請自行安裝。
3.2 部署Zookeeper叢集3.2.1 下載Zookeeper安裝包這裡部署的zk版本是:zookeeper-3.4.14.tar.gz
#wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6.tar.gz
## 執行bin目錄下的 zkCli.sh 出現 Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
##解決辦法更換3.4.14
wget https://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
3.2.2 安裝1、首先在172.20.0.10中安裝
(1)解壓:tar -zxvf zookeeper-3.4.14.tar.gz
(2)cd zookeeper-3.4.14/conf
(3)cp zoo_sample.cfg zoo.cfg
(4)修改zoo.cfg配置檔案,內容如下
tickTime=2000# zk資料目錄dataDir=/home/hadoop/app/zookeeper/data# 客戶端連線埠配置clientPort=2181initLimit=10syncLimit=5# 服務地址,2888為叢集內個節點通訊的埠,3888為leader選舉時使用的埠server.1=172.20.0.10:2888:3888server.2=172.20.0.11:2888:3888server.3=172.20.0.12:2888:3888
注:配置完後,要在dataDir配置屬性值的目錄下建立myid檔案,用作叢集的節點標識,內容為server.id屬性指定的值,如這裡server.id中的id的值為1,所以myid檔案內容為1,其他zk節點分別為2、3
2 、拷貝相同的一份zookeeper-3.4.9到172.20.0.11、172.20.0.12伺服器中
3、 配置Zookeeper的環境變數並分別啟動即可完成zk叢集的部署
4 部署Kafka叢集4.1 安裝並配置這裡安裝的版本為:kafka_2.11-2.3.1.tgz
注:先在server1中安裝,然後在拷貝一份至172.20.0.11、172.20.0.12伺服器中
(1)解壓
$tar -zxvfkafka_2.11-2.3.1.tgz -C /home/app
(2)重新命名
$mv kafka_2.12-1.1.0 kafka
(3)配置Kafka的環境變數
(4)修改Kafka配置檔案server.properties,修改如下配置項
修改broker(代理)id標識,叢集中需要保證唯一broker.id=1
修改日誌儲存目錄配置log.dirs=/home/app/kafka/log-data
修改Zookeeper的連線地址,Kafka自帶了Zookeeper,但是這裡我們配置成自己的zk叢集地址zookeeper.connect=172.20.0.10:2181,172.20.0.11:2181,172.20.0.12:2181
(5)拷貝172.20.0.10中部署好的kafka包到172.20.0.11、172.20.0.12伺服器中
(6)修改172.20.0.11中kafka的server.properties配置檔案
broker.id=2
(7)修改172.20.0.12中kafka的server.properties配置檔案
broker.id=3
5 啟動叢集5.1 先啟動Zookeeper叢集分別在172.20.0.10、172.20.0.11、172.20.0.12中使用如下命令啟動
$zkServer.sh start
5.2 啟動Kafka叢集
分別在172.20.0.10、172.20.0.11、172.20.0.12中使用如下命令啟動
5.3 檢視叢集啟動情況通過jps命令來檢視服務啟動程序,172.20.0.10、172.20.0.11、172.20.0.12都包含Kafka、QuorumPeerMain服務程序表示叢集啟動成功
$jps5506 Kafka5733 Jps5212 QuorumPeerMain期間出現無法啟動的狀況,解決辦法:##檢視狀態[root@0d4b66f319ef local]# /usr/local/zookeeper-3.4.14/bin/zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfgError contacting service. It is probably not running.##解決辦法:echo 1 >> /tmp/zookeeper/myid,刪除節點殘留資訊(rm -rf version-2/ zookeeper_server.pid),防火牆攔截埠##啟動成功,要確保有java環境,啟動順序:先啟動zookeeper,再啟動kafka