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