kafka叢集搭建超詳細教程

語言: CN / TW / HK

前言

大家好,我是風雲,歡迎大家關注我的部落格,在未來的日子裡我們一起來學習大資料相關的技術,一起努力奮鬥,遇見更好的自己! 百度百科對Kafka有如下描述: Kafka是由Apache軟體基金會開發的一個開源流處理平臺,由ScalaJava編寫。Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者在網站中的所有動作流資料。 具備以下特點: - 高吞吐量、低延遲kafka每秒可以處理百萬條訊息,它的延遲最低只有幾毫秒,topic可以分多個partition, consumer grouppartition進行consumer操作 - 可擴充套件性kafka叢集支援熱擴充套件 - 永續性、可靠性:訊息被持久化到本地磁碟,並且支援資料備份防止資料丟失 - 容錯性:允許叢集中節點失敗(若副本數量為n,則允許n-1個節點失敗) - 高併發:支援數千個客戶端同時讀寫

基於Kafka具備這麼多特點,在大資料開發領域已經佔據不可或缺的地位,我們在工作中就會不可避免與之打交道,那麼搭建Kafka叢集就非常有必要了,今天就來分享一下kafka 叢集搭建的詳細過程。

詳細步驟

前期準備:

  1. 準備三個虛擬機器: 192.168.36.121 hadoop1 192.168.36.122 hadoop2 192.168.36.123 hadoop3
  2. 虛擬機器上配置有ssh服務,可以進行免密登入
  3. Kafka執行在JVM上,需要安裝JDK
  4. kafka依賴zookeeper,需要安裝zookeeper,可以參考我的另一篇文章《zookeeper叢集搭建超詳細教程》

注意:下邊的步驟都是在hadoop1這個節點上進行的操作,除特殊說明外。

1、下載安裝包

```powershell cd /opt/module

下載kafka安裝包

wget https://archive.apache.org/dist/kafka/2.6.0/kafka_2.13-2.6.0.tgz ```

2、解壓

```powershell

解壓kafka安裝包

tar -zxvf kafka_2.13-2.6.0.tgz mv kafka_2.13-2.6.0 kafka ```

3、建立存放kafka訊息的目錄

powershell cd kafka mkdir kafka-logs

4、修改配置檔案

```powershell vim /opt/module/kafka/config/server.properties

修改如下引數

broker.id=0 listeners=PLAINTEXT://hadoop1:9092 log.dirs=/opt/module/kafka/kafka-logs zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181 ```

引數說明: broker.id : 叢集內全域性唯一標識,每個節點上需要設定不同的值 listeners:這個IP地址也是與本機相關的,每個節點上設定為自己的IP地址 log.dirs :存放kafka訊息的 zookeeper.connect : 配置的是zookeeper叢集地址

5、分發kafka安裝目錄

```powershell

分發kafka安裝目錄給其他叢集節點

scp -r /opt/module/kafka/ hadoop2:/opt/module scp -r /opt/module/kafka/ hadoop3:/opt/module `` 分發完成後,其他叢集節點都需要修改配置檔案server.properties中的broker.idlisteners` 引數。

6、編寫kafka叢集操作指令碼

```powershell

匯入java環境

vim /etc/profile

新增如下內容(注意:填寫自己的java安裝目錄)

export JAVA_HOME=/usr/java/jdk1.8.0_131 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin

cd /opt/module/kafka/bin

建立kafka啟動指令碼

vim kafka-cluster.sh

新增如下內容

!/bin/bash

case $1 in "start"){ for i in hadoop1 hadoop2 hadoop3 do echo -------------------------------- $i kafka 啟動 --------------------------- ssh $i "source /etc/profile;/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties" done } ;; "stop"){ for i in hadoop1 hadoop2 hadoop3 do echo -------------------------------- $i kafka 停止 --------------------------- ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh" done } ;; esac

儲存退出後,修改執行許可權

chmod +x ./kafka-cluster.sh ```

指令碼命令說明:

```powershell 啟動kafka叢集命令 ./kafka-cluster.sh start

停止kafka叢集命令 ./kafka-cluster.sh stop ```

7、啟動kafka叢集

首先啟動zookeeper叢集 然後執行kafka叢集指令碼啟動命令

powershell cd /opt/module/kafka/bin ./kafka-cluster.sh start

8、測試

kafka叢集啟動成功後,我們就可以對kafka叢集進行操作了。

建立主題

powershell cd /opt/module/kafka ./bin/kafka-topics.sh --create --bootstrap-server hadoop1:9092 --replication-factor 3 --partitions 1 --topic test

檢視主題列表

powershell ./bin/kafka-topics.sh --list --bootstrap-server hadoop1:9092

啟動控制檯生產者

powershell ./bin/kafka-console-producer.sh --broker-list hadoop1:9092 --topic test

啟動控制檯消費者

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

在生產者控制檯輸入hello kafka,消費者控制檯,就可以消費到生產者的訊息,輸出hello kafka,表示消費端成功消費了生產者生產的訊息!

至此,我們就順利完成了kafka叢集搭建的整個過程!

希望大家都能有所收穫,喜歡的可以點贊和收藏,有疑問的可以在評論區留言,也歡迎轉發分享給更多的人!

謝謝大家!

-------------- end ----------------

微信公眾號:請掃描下面的二維碼進行關注!