天天看點

Kafka-manager部署與測試(完整)Kafka-manager部署

一、概念

    概念百度了一下,可以根據相關資料進行了解。

1.1 Kafka是一種高吞吐量的分布式釋出訂閱消息系統,它可以處理消費者規模的網站中的所有動作流資料。

Broker

Kafka叢集包含一個或多個伺服器,這種伺服器被稱為broker。 

Topic

每條釋出到Kafka叢集的消息都有一個類别,這個類别被稱為Topic。(實體上不同Topic的消息分開存儲,邏輯上一個Topic的消息雖然儲存于一個或多個broker上但使用者隻需指定消息的Topic即可生産或消費資料而不必關心資料存于何處)

Partition

Partition是實體上的概念,每個Topic包含一個或多個Partition.

Producer

負責釋出消息到Kafka broker

Consumer

消息消費者,向Kafka broker讀取消息的用戶端。

Consumer Group

每個Consumer屬于一個特定的Consumer Group(可為每個Consumer指定group name,若不指定group name則屬于預設的group)。

1.2 ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實作,是Hadoop和Hbase的重要元件。它是一個為分布式應用提供一緻性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。

ZooKeeper的基本運轉流程:

1、選舉Leader。

2、同步資料。

3、選舉Leader過程中算法有很多,但要達到的選舉标準是一緻的。

4、Leader要具有最高的執行ID,類似root權限。

5、叢集中大多數的機器得到響應并follow選出的Leader。

1.3 kafka-manager為了簡化開發者和服務工程師維護Kafka叢集的工作,yahoo建構了一個叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。這個管理工具可以很容易地發現分布在叢集中的哪些topic分布不均勻,或者是分區在整個叢集分布不均勻的的情況。它支援管理多個叢集、選擇副本、副本重新配置設定以及建立Topic。同時,這個管理工具也是一個非常好的可以快速浏覽這個叢集的工具,有如下功能:

1.管理多個kafka叢集

2.便捷的檢查kafka叢集狀态(topics,brokers,備份分布情況,分區分布情況)

3.選擇你要運作的副本

4.基于目前分區狀況進行

5.可以選擇topic配置并建立topic(0.8.1.1和0.8.2的配置不同)

6.删除topic(隻支援0.8.2以上的版本并且要在broker配置中設定delete.topic.enable=true)

7.Topic list會指明哪些topic被删除(在0.8.2以上版本适用)

8.為已存在的topic增加分區

9.為已存在的topic更新配置

10.在多個topic上批量重分區

11.在多個topic上批量重分區(可選partition broker位置)

二、部署

2.1 初始化環境

初始化系統,關閉防火牆修改主機名與ip名稱

名稱

HOSTNAME

IP

1

kafka-1

172.17.10.207

2

kafka-2

172.17.10.208

3

kafka-3

172.17.10.209

<a href="https://s5.51cto.com/wyfs02/M01/98/9A/wKioL1k-hyLTzoIdAABA_mIhOu8456.png" target="_blank"></a>

2.2 java安裝

yum install -y java-1.8.0-openjdk

2.3 安裝zookeeper(三台都裝)

4

5

6

<code>cd</code> <code>/usr/local</code>

<code>wget http:</code><code>//apache</code><code>.fayea.com</code><code>/zookeeper/zookeeper-3</code><code>.4.9</code><code>/zookeeper-3</code><code>.4.9.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>zxf zookeeper-3.4.9.</code><code>tar</code><code>.gz</code>

<code>mv</code> <code>zookeeper-3.4.9 zookeeper</code>

<code>cd</code> <code>zookeeper</code><code>/conf</code>

<code>cp</code> <code>zoo_sample.cfg zoo.cfg</code>

編輯zoo.cfg

7

8

9

10

<code>tickTime=2000                            </code><code>#服務之間或者用戶端與服務段之間心跳時間</code>

<code>initLimit=10                             </code><code>#Follower啟動過程中,從Leader同步所有最新資料的時間</code>

<code>syncLimit=5                              </code><code>#Leader與叢集之間的通信時間</code>

<code>dataDir=</code><code>/usr/local/zookeeper/data</code>        <code>#zookeeper存儲資料</code>

<code>datalogDir=</code><code>/usr/local/zookeeper/logs</code>     <code>#zookeeper存儲資料的日志</code>

<code>clientPort=2181                          </code><code>#zookeeper預設端口</code>

<code>#叢集配置資訊</code>

<code>server.1=172.17.10.207:2888:3888</code>

<code>server.2=172.17.10.208:2888:3888</code>

<code>server.3=172.17.10.209:2888:3888</code>

server.1 這個1是伺服器的辨別也可以是其他的數字, 表示這個是第幾号伺服器,用來辨別伺服器,這個辨別要寫到快照目錄下面myid檔案裡

#172.17.10.207為叢集裡的IP位址,第一個端口是master和slave之間的通信端口,預設是2888,第二個端口是leader選舉的端口,叢集剛啟動的時候選舉或者leader挂掉之後進行新的選舉的端口預設是3888

完整配置

<a href="https://s4.51cto.com/wyfs02/M02/98/9A/wKiom1k-h_Owof1zAAA_S3ARDa0331.png" target="_blank"></a>

<code>cd</code> <code>/usr/local/zookeeper</code>

<code>mkdir</code> <code>data logs                                </code><code>#建立資料與日志檔案夾</code>

<code>cd</code> <code>data</code>

<code>echo</code>  <code>“1”&gt;myid                              </code><code>#第2 台zookeeper伺服器就echo 2</code>

<code>/usr/local/zookeeper/bin/zkServer</code><code>.sh start                               </code><code>#啟動</code>

<a href="https://s4.51cto.com/wyfs02/M00/98/9A/wKiom1k-iH2y-sQCAAAogzjGDyY630.png" target="_blank"></a>

<code>/usr/local/zookeeper/bin/zkServer</code><code>.sh status                                   </code><code>#檢視狀态</code>

<a href="https://s3.51cto.com/wyfs02/M01/98/9A/wKiom1k-iH7DJXzEAAAllbZYLJo128.png" target="_blank"></a>

2.4 安裝kafka(三台都裝)

<code>wget http:</code><code>//apache</code><code>.fayea.com</code><code>/kafka/0</code><code>.10.0.0</code><code>/kafka_2</code><code>.11-0.10.0.0.tgz</code>

<code>tar</code> <code>zxf kafka_2.11-0.10.0.0.tgz</code>

<code>mv</code> <code>kafka_2.11-0.10.0.0/ kafka</code>

<code>cd</code> <code>kafka</code><code>/config</code>

編輯 server.properties

<code>broker.</code><code>id</code><code>=1                                              </code><code>#kafka叢集辨別,不能相同,第一台是1以此類推,其他都一樣。</code>

<code>log.</code><code>dirs</code><code>=</code><code>/usr/local/kafka-logs</code>

<code>host.name=172.17.10.184                                  </code><code>#主機ip</code>

<code>zookeeper.connect=172.17.10.185:2181,172.17.10.184:2181,172.17.10.183:2181</code>

<code>mkdir</code> <code>/usr/local/kafka/kafka-logs</code>

<code>/usr/local/kafka/bin/kafka-server-start</code><code>.sh </code><code>/usr/local/kafka/config/server</code><code>.properties &amp;     </code><code>#啟動kafka</code>

檢視是否啟動成功

netstat -ntpl|grep 9092

<a href="https://s2.51cto.com/wyfs02/M00/98/9A/wKiom1k-iaGwXahGAAAYQ_ZMmhY407.png" target="_blank"></a>

2.4 安裝kafka-manager

<code>git clone https:</code><code>//github</code><code>.com</code><code>/yahoo/kafka-manager</code>

<code>cd</code> <code>kafka-manager</code>

<code>sbt clean distcd            </code><code>#過程比較長</code>

得到檔案kafka-manager-1.3.0.8.zip

<code>unzip kafka-manager-1.3.0.8.zip -d </code><code>/usr/local</code>

<code>cd</code> <code>/usr/local/kafka-manager-1</code><code>.3.0.8</code>

<code>修改配置 conf</code><code>/application</code><code>.properties</code>

<code># 如果zk是叢集,這裡填寫多個zk位址</code>

<code>kafka-manager.zkhosts=</code><code>"172.17.10.185:2181,172.17.10.184:2181,172.17.10.183:2181"</code>

啟動

<code>kafka-manager 預設的端口是9000,可通過 -Dhttp.port,指定端口; -Dconfig.</code><code>file</code><code>=conf</code><code>/application</code><code>.conf指定配置檔案:</code>

<code>nohup</code> <code>bin</code><code>/kafka-manager</code> <code>-Dconfig.</code><code>file</code><code>=conf</code><code>/application</code><code>.conf -Dhttp.port=8080 &amp;</code>

浏覽器通路

<a href="https://s5.51cto.com/wyfs02/M01/98/9A/wKiom1k-ilHwIVsiAAEBN18X5LI789.png" target="_blank"></a>

三、測試

對Kafka進行測試。分别建立topic,producer,consumer,最好是在不同的節點上建立。在producer的控制台上輸入資訊,觀察consumer控制台是否能夠接收到。

3.1 建立topic

<code>.</code><code>/kafka-topics</code><code>.sh --create --zookeeper 172.17.10.207:2181,172.17.10.208:2181,172.17.10.209:2181 --replication-factor 3 --partitions 3 --topic xuel</code>

--replication-factor   指定partition的replicas數,建議設定為2;

--partitions 指定分區數,這個參數需要根據broker數和資料量決定,正常情況下,每個broker上兩個partition最好;

--topic xuel  主題為xuel

3.2 檢視topic

<code>.</code><code>/kafka-topics</code><code>.sh --describe --zookeeper 172.17.10.207:2181,172.17.10.208:2181,172.17.10.209:2181  --topic xuel</code>

通過web界面建立topic-{1-4}

<a href="https://s4.51cto.com/wyfs02/M01/98/9A/wKioL1k-jHvTd4c5AAEQFPD_9XY185.png" target="_blank"></a>

3.3 删除topic

<code>.</code><code>/kafka-topics</code><code>.sh --delete --zookeeper 172.17.10.207:2181,172.17.10.208:2181,172.17.10.209:2181  --topic xuel</code>

3.4 建立釋出者

在一台伺服器上建立一個釋出者(釋出者發送消息)

建立broker

<code>.</code><code>/kafka-console-producer</code><code>.sh --broker-list  172.17.10.173:9092,172.17.10.172:9092,172.17.10.171:9092,172.17.10.170:9092 --topic xuel</code>

<a href="https://s2.51cto.com/wyfs02/M02/98/9A/wKiom1k-jTeTHVbhAAAdr3tLEtE956.png" target="_blank"></a>

3.5 建立消費者

在一台伺服器上建立一個訂閱者(訂閱者接受消息)

<code>.</code><code>/kafka-console-consumer</code><code>.sh --zookeeper 172.17.10.173:2181,172.17.10.172:2181,172.17.10.171:2181,172.17.10.170:2181 --from-beginning --topic xuel</code>

<a href="https://s5.51cto.com/wyfs02/M02/98/9A/wKiom1k-jemwSYJbAABFsoEWlIY706.png" target="_blank"></a>

3.6 通過web界面檢視

<a href="https://s3.51cto.com/wyfs02/M01/98/9B/wKiom1k-j_Hw2x3nAADeFgEEgQU296.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M01/98/9B/wKioL1k-j_KwKOlNAACVsjFBz_0250.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M02/98/9B/wKiom1k-j_OgAEpyAADPLeK_rfY052.png" target="_blank"></a>

本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/1934696,如需轉載請自行聯系原作者