本章目錄node
一 kafka簡介服務器
二 kafka安裝網絡
三 kafka測試測試
四 zk安裝spa
一 kafka簡介:code
一、角色:server
broker(一個kafka節點)中間件
producers(生產者)blog
topic(主題)ip
consumers(消費者,消費者能夠配置組,讓這一組消費哪一個主題,在一個分區中的生產與消費是有序的)
partition(topic的分區數,即表明這個topic數據分紅幾份)
副本(topic的副本數,萬一有的節點掛掉了,能夠保證數據不丟失)
offset(消費的偏移量,保證消費的有序性)
二、須要zk集羣,爲何?(zk在kafka中佔據核心地位的)
2.1 管理着全部 broker 節點。
2.2 主題管理:topic怎麼建立,分區,副本怎麼放,消費者如何消費,由zk管理。
2.3 記錄offset。
2.4 管理者消費者組:一個消費者組建立以後,來消費一個topic(消費者組是爲了提升對topic的消費速度)
三、優點
高吞吐量:零拷貝,Netty的網絡傳輸。
數據保存:數據默認保存7天。
偏移量管理:offset會更新到一個kafka自帶的topic【__consumer_offsets】
二 kafka安裝:
解壓:
tar gz -C 目錄
配置:
config/server.properties:
broker.id(broker集羣中惟一標識id,0、一、二、3依次增加(broker即Kafka集羣中的一臺服務器))
log.dirs=真實數據存儲路徑
zookeeper.connect=node01:2181,node02:2181,node03:2181(須要zk集羣)
啓動:
bin/kafka-server-start.sh config/server.properties //啓動kafka,且指定要讀取哪一個配置文件
三 kafka測試:(通常的使用都是整合其餘中間件使用,好比filebeat,flume等)
查看幫助手冊:
bin/kafka-console-consumer.sh help
查看topic列表:
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --list
查看「test」topic描述:
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --describe --topic test
Topic建立
bin/kafka-topics.sh --zookeeper node06:2181,node07:2181,node08:2181 --create --replication-factor 2 --partitions 3 --topic test
(參數說明:
--replication-factor:副本個數,默認1個
--partitions:指定當前建立的topic分區數量,默認1個(向幾個分區中分發數據,此時一個分區有序,總體無序)
--topic:指定新建topic的名稱
)
Producer建立(往主題中生產數據)
bin/kafka-console-producer.sh --broker-list node06:9092,node07:9092,node08:9092 --topic test
Consumer建立(消費某主題的數據)
bin/kafka-console-consumer.sh --zookeeper node06:2181,node07:2181,node08:2181 --from-beginning --topic test
(參數說明:
--from-beginning 從頭消費
)
四 zk安裝:
1:解壓 tar -zxvf zookeeper.tar.gz
2:修改 zoo.cfg 配置文件
cp zooo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir= /opt/zk/data //修改dataDir的目錄,用戶數據持久化的,這個目錄自定義位置 #在zoo.cfg末尾添加如下內容 #2888 集羣內機器通信使用 #3888 選舉leader使用 #2181 這個端口號是供外部客戶端使用的,配置文件中的clientport
#使用node01 node02 node03是配置了hosts文件,作了ip與名稱的映射 server.1=node01:2888:3888 server.2=node02:2888:3888 server.3=node03:2888:3888
3:myid(在dataDir目錄下)
echo 1 > /opt/zk/data/myid(上面配置的三個服務器對應的myid是1 2 3)
4:啓動(每一個節點都啓動)
zkServer.sh start