CentOS7.4搭建kafka單結點和集羣

 

 

操做系統選擇

  CentOS7.4x86-64(操做系統的x86_64是跟CPU有關的,最先AMD公司開發出了一款向下兼容x86CPU,向上又擴充了指令集,具備了64位CPU的特性,這款CPU後來更名爲AMD64,Intel在AMD以後也開發了這樣一款CPU,取名叫作x86_64),因此操做系統的x86_64就是指這款操做系統是64位的。使用uname -a查看操做系統版本。html

安裝Java環境

  首先找到jdk下載的官網網址,而後在你要下載的jdk版本上右鍵單擊,在彈出的選擇框選擇複製連接,獲得jdk11的下載連接爲:http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gzjava

  在/usr/目錄下建立java目錄,使用wget命令下載jdk安裝包到當前目錄,命令爲:(由於jdk下載時須要接收協議,因此wget命令比較特別)node

wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;"  http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gz

  下載好了之後可使用ls命令查看這個安裝包是否下載成功了。接下來使用tar命令解包linux

tar -zxvf jdk-11_linux-x64_bin.tar.gz

  而後,配置java環境,就是windows下的環境變量的配置,打開/etc/profile文件,在最下方插入下面兩行:apache

export JAVA_HOME=/usr/java/jdk-10.0.2   //這個就是你的包解壓後的結果
export PATH=$JAVA_HOME/bin/:$PATH

  最後,輸入source /etc/profile,強制刷新配置文件。而後輸入java -version便可查看你所安裝的jdk的版本號,在本次試驗中個人java版本是jdk10。bootstrap

安裝Zookeeper

  Kafka使用Zookeeper保存集羣的元數據信息和消費者信息。Kafka發行版本自帶了Zookeeper,能夠直接從腳本啓動。本例安裝一個完整的Zookeeper。windows

  元數據(Metadata),又稱中介數據、中繼數據,爲描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,爲了達到編制目錄的目的,必須在描述並收藏數據的內容或特點,進而達成協助數據檢索的目的。服務器

  元數據是關於數據的組織、數據域及其關係的信息,簡言之,元數據就是關於數據的數據cookie

  從apache.org下載Zookeeper的穩定版,下載地址爲:http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz。版本爲3.4.12。oracle

1.單機Zookeeper的安裝

  Zookeeper的安裝目錄爲/usr/local/zookeeper。數據目錄爲/var/lib/zookeeper。

  下載Zookeeper的安裝包:

wget http://mirrors.hust.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz

  解壓安裝包

tar -zxf zookeeper-3.4.12.tar.gz 

  建立數據目錄

mkdir -p /var/lib/zookeeper

  建立Zookeeper的配置文件,並填寫內容

[root@CentOs64-7 zookeeper]# mkdir -p /var/lib/zookeeper
[root@CentOs64-7 zookeeper]# cat > /usr/local/zookeeper/zookeeper-3.4.12/conf/zoo.cfg << EOF
> tickTime = 2000
> dataDir=/var/lib/zookeeper
> clientPort=2181
> EOF

   最後zookeeper完整的配置文件內容爲

#Zookeeper定義的基準時間間隔,單位:毫秒。服務器與客戶端之間交互的基本時間單元,也就是Zookeeper服務器之間或服務器與客戶端之間每隔一個tickTime就發送一次心跳
tickTime=2000
#數據目錄,zookeeper保存數據的目錄,默認狀況下,Zookeeper將寫數據的日誌文件也保存在這個目錄下
dataDir=/var/lib/zookeeper
#客戶端訪問zookeeper的端口號,Zookeeper會監聽這個端口,接收客戶端的訪問請求
clientPort=2181
#集羣中的Follower(F)服務器和Leader(L)服務器之間初始鏈接時能容忍的最多心跳數(即tickTime的數目)
initLimit=5
#syncLimit:Leader-Follower同步通訊時限,集羣中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(即tickTime的數量)
syncLimit=2

   啓動經過腳本啓動zookeeper,命令爲:

 /usr/local/zookeeper/zookeeper-3.4.12/bin/zkServer.sh start
 // start 前的目錄路徑爲腳本的保存路徑,它在你的zookeeeper的安裝目錄下

  執行結果以下:

  如上所示:說明單機版的zookeeper就已經啓動了。其它一些ookeeper的命令:

1.查詢 zookeeper 狀態:
zkServer.sh status
2.關閉 zookeeper 服務:
    zkServer.sh stop
    如打印以下信息則代表成功關閉:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED

3.重啓 zookeeper 服務:
    zkServer.sh restart
    如打印以下信息則代表重啓成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
1.查詢 zookeeper 狀態:
zkServer.sh status
2.關閉 zookeeper 服務:
    zkServer.sh stop
    如打印以下信息則代表成功關閉:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED

3.重啓 zookeeper 服務:
    zkServer.sh restart
    如打印以下信息則代表重啓成功:
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    ZooKeeper JMX enabled by default
    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

 

如今能夠鏈接到Zookeeper端口上,經過發送四字命令srvr是否安裝正確。使用命令:

  此時終端會停在這裏,它是在等待你的輸入。咱們發送srvr,得運行結果以下:

[root@CentOs64-7 ~]# telnet localhost 2181
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
srvr
Zookeeper version: 3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.

  這說明,單擊的zookeeper已經安裝成功而了。

最後爲zookeeper配置環境變量

添加export ZOOKEEPER_HOME=/usr/local/zookeeper
在path中添加$ZOOKEEPER_HOME/bin
 而後使用source /etc/profile 當即刷新配置文件

2.Zookeeper集羣的搭建

 先在結點下試驗(這個先欠着),還欠缺一個zookeeper是什麼的博客。

單節點 Kafka Broker 的安裝

  Kafkade 最新版本能夠從http://kafka.apache.org/downloads.html下載最新的版本。截止本試驗日期爲止,最新的穩定版是2.0.0。官網提供源碼包下載和兩個不一樣Scala版本編譯好的Kafka,能夠直接下載安裝運行。

  本次試驗下載編譯好的版本:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz

  使用wget命令,將這個安裝包下載到/usr/local/kafka目錄下

[root@CentOs64-7 kafka]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
--2018-10-18 10:44:31--  http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 55751827 (53M) [application/octet-stream]
Saving to: ‘kafka_2.11-2.0.0.tgz’

100%[=====================================================================================================================================================>] 55,751,827  13.5MB/s   in 3.6s   

2018-10-18 10:44:35 (14.8 MB/s) - ‘kafka_2.11-2.0.0.tgz’ saved [55751827/55751827]

  解壓(其實就是安裝了)

tar -zxf kafka_2.11-2.0.0.tgz

Kafka目錄介紹

  • /bin 操做kafka的可執行腳本,還包含windows下腳本

  • /config 配置文件所在目錄

  • /libs 依賴庫目錄

  • /logs 日誌數據目錄,目錄kafka把server端日誌分爲5種類型,分爲:server,request,state,log-cleaner,controller

建立保存kafka日誌的目錄

mkdir /tmp/kafka-logs

啓動kafka

/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-server-start.sh -daemon /usr/local/kafka/kafka_2.11-2.0.0/config/server.properties

檢查9092端口和2181端口,9092是kafka的默認端口,2181是zookeeper的默認端口

[root@CentOs64-7 site-docs]# netstat -tunlp|egrep "(2181|9092)"
tcp 0 0 0.0.0.0:9092 0.0.0.0:* LISTEN 28688/java
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 27193/java

  如上,說明kafka已經啓動。

接下來,驗證這個kafka是否安裝正確

1.建立並驗證主題

[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".   //說明主題建立成功

2.查看你建立的主題的詳細信息,若是不指定主題(添加--topic參數),那麼查看全部的主題信息

[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test
Topic:test    PartitionCount:1    ReplicationFactor:1    Configs:
    Topic: test    Partition: 0    Leader: 0    Replicas: 0    Isr: 0

3.向測試主題上發佈消息

[root@CentOs64-7 site-docs]# /usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>Test Mese ^H
>Test Message 1^H^[[3~
>q

  輸入後按Ctrl+D退出輸入。

4.從測試主題上讀取消息

/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test -- from-beginning
//上面這個命令用於kafka0.9以及0.9如下版本使用這個命令

/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
//上面命令用於kafka0.9用這個命令

  輸入Ctrl+C退出消費。

5.查看topic列表

/usr/local/kafka/kafka_2.11-2.0.0/bin/kafka-topics.sh --list --zookeeper localhost:2181

6.刪除topic

kafka-topics.sh --delete --zookeeper node1:2181 --topic my-kafka-topic

producer,指定的Socket(192.168.1.181+9092),說明生產者的消息要發往kafka,也便是broker

consumer, 指定的Socket(192.168.1.181+2181),說明消費者的消息來自zookeeper(協調轉發)

 kafka的編譯

本小節參考:https://blog.csdn.net/caoshangpa/article/details/79743830

會編譯,有備無患。下載源碼kafka-1.1.0-src.tgz

解壓,這裏也解壓到/home目錄下

> tar -xzf kafka-1.1.0-src.tgz
> cd kafka-1.1.0-src

查看裏面的README.md文檔,編譯依賴1.Gradle 3.0或更高版本;2.Java 7。jdk前面已經安裝過了,如今安裝Gradle。

Gradle下載https://gradle.org/install/,該頁面指出Gradle依賴Java 7或更高版本。最新的Gradle版本是4.6,下載其編譯好的二進制包gradle-4.6-bin.zip。

解壓,這裏也解壓到/home目錄下

$ unzip -d gradle-4.6-bin.zip
$ ls radle-4.6
LICENSE NOTICE bin getting-started.html init.d lib media

將bin添加到環境變量,編輯/etc/profile文件,在其末尾添加

export PATH=$PATH:/home/zhangcan/gradle-4.6/bin

使修改的profile當即生效

$ source /etc/profile

測試一下

$ gradle -v

CD到kafka源碼目錄,開始編譯

1.輸入gradle指令,開始下載環境

$ gradle

下載了一堆東西,若是提示有文件下載失敗,多執行幾回該指令便可

2.編譯

$ ./gradlew releaseTarGz -x signArchives

仍是下載了一堆東西,若是提示有文件下載失敗,多執行幾回該指令便可。編譯成功後會提示。

此時,會在kafka-1.1.0-src/core/build/distributions目錄下生成一個名爲kafka_2.11-1.1.0.tgz的二進制包,這個包和從官網下載的二進制包是同樣的

參考連接:http://kafka.apache.org/quickstart

相關文章
相關標籤/搜索