1. 程式人生 > >一臉懵逼學習KafKa集群的安裝搭建--(一種高吞吐量的分布式發布訂閱消息系統)

一臉懵逼學習KafKa集群的安裝搭建--(一種高吞吐量的分布式發布訂閱消息系統)

zkserver 搜索 block virtual 文件 內容 ava use 問題

1:KafKa的官方網址:http://kafka.apache.org/

開發流程圖,如:

技術分享

2:KafKa的基礎知識:

2.1:kafka是一個分布式的消息緩存系統
2.2:kafka集群中的服務器都叫做broker
2.3:kafka有兩類客戶端,一類叫producer(消息生產者),一類叫做consumer(消息消費者),客戶端和broker服務器之間采用tcp協議連接
2.4:kafka中不同業務系統的消息可以通過topic進行區分,而且每一個消息topic都會被分區,以分擔消息讀寫的負載
2.5每一個分區都可以有多個副本,以防止數據的丟失
2.6某一個分區中的數據如果需要更新,都必須通過該分區所有副本中的leader來更新

2.7消費者可以分組,比如有兩個消費者組A和B,共同消費一個topic:order_info,A和B所消費的消息不會重復
  比如 order_info 中有100個消息,每個消息有一個id,編號從0-99,那麽,如果A組消費0-49號,B組就消費50-99號
2.8消費者在具體消費某個topic中的消息時,可以指定起始偏移量

3:KafKa集群的安裝搭建,註意區分單節點KafKa集群的搭建。

  3.1:kafka集群安裝,第一步上傳kafka_2.10-0.8.1.1.tgz到虛擬機上面,過程省略,然後進行解壓縮操作:

技術分享

  3.2:修改kafka配置文件,修改server.properties

技術分享

修改如下所示,具體情況可以根據手冊修改,詳細修改可以參考Kafka的文檔:

技術分享

使用自己部署的Zookeeper集群,修改如下所示:

可以直接搜索:/zookeeper.connect找到所要修改的內容:

技術分享

將配置好的Kafka復制到另外兩個節點上面:

[root@master hadoop]# scp -r kafka_2.10-0.8.1.1/ slaver1:/home/hadoop/

[root@master hadoop]# scp -r kafka_2.10-0.8.1.1/ slaver2:/home/hadoop/

技術分享

然後修改一下另外兩臺的broker.id=2和broker.id=3:

技術分享

技術分享

  3.3:將zookeeper集群啟動:

[root@master hadoop]# cd /home/hadoop/zookeeper-3.4.5/bin/
[root@master bin]# ./zkServer.sh start
[root@slaver2 bin]# ./zkServer.sh status

技術分享

  3.4:在每一臺節點上啟動broker:

    bin/kafka-server-start.sh config/server.properties

Unrecognized VM option UseCompressedOops
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

啟動的時候報錯了,問題的根本是UseCompressedOops是jdk8的,而我的jdk是7,所以解決一下問題:

原因是jdk的版本不匹配,需要修改一下配置文件
修改文件:
  去掉這個配置
  -XX:+UseCompressedOops

技術分享

進去以後,搜索一下比較快:/UseCompressedOops,然後看到如下,刪除如此配置:

[root@master bin]# vim kafka-run-class.sh

其他兩個節點的都按照如此刪除掉即可

技術分享

修改好以後開始跑:

在每一臺節點上啟動broker
bin/kafka-server-start.sh config/server.properties

技術分享

然後按照如此將其他兩個節點都啟動起來,然後復制xshell的連接看一下jps進程啟動情況:

三個都啟動起來,可以看一下,broker 1,broker 2,broker 3都啟動起來了:

技術分享

可以使用復制的xshell窗口查看jps進程啟動情況:

技術分享

  3.5:在kafka集群中創建一個topic:

[root@master kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 3 --partitions 1 --topic order

技術分享

可以查看一下自己創建的topic:

[root@master kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --list --zookeeper master:2181

可以創建多個多個topic,也可以查看一下自己創建的topic:

技術分享

  3.6:用一個producer向某一個topic中寫入消息,生產者產生消息,消費者消費消息,如下生產者可以生產:

如下先啟動一下生產者,先不生產消息,然後一個消費者,看看是否有輸出,然後再生產消息,再去消費者看看消費消息:

#生產者
[root@master kafka_2.10-0.8.1.1]# bin/kafka-console-producer.sh --broker-list master:9092 --topic order
#消費者
[root@master kafka_2.10-0.8.1.1]# bin/kafka-console-consumer.sh --zookeeper master:2181 --from-beginning --topic order

技術分享

上面是生產者:

下面是消費者:

技術分享

  3.7:查看一個topic的分區及副本狀態信息:

自己可以找任意一個xshell復制連接進程查看:

[root@slaver1 kafka_2.10-0.8.1.1]# bin/kafka-topics.sh --describe --zookeeper master:2181 --topic order

技術分享

一臉懵逼學習KafKa集群的安裝搭建--(一種高吞吐量的分布式發布訂閱消息系統)