1. 概念
1. Kafka是一個分布式的基于發布/訂閱的訊息佇列,應用于大資料實時處理,
1.1 訊息佇列就是為了讓消費者跟生產者解耦,實作高效,但是安全性肯定降低,需要額外處理,
1.2 大資料一般處理流程:日志收集者(flume) ---> Kafka ---> 訊息消費者(spark、flink),
1.3 訊息佇列分兩種:
1.3.1 點對點(一對一)
1.3.2 發布/訂閱(一對多)
2. 架構
1. 每一個Topic分為多個partition
2. 每一個partition都有多個副本在不同機器
3. 消費者組內兩個消費者只能消費同一個topic的不同partition磁區的訊息,組內消費者形成一個訂閱者
3. 安裝部署
1. 依賴于zookeeper,首先安裝zookeeper
2. 解壓Kafka安裝包
3. 配置環境變數
4. 配置Kafka屬性
4.1 server.property檔案
// kafka只有幾臺并行的機器沒有主從結構:必須配置broker ID,集群時,分發后修改其他機器此值
broker.id=0
// kafka資料存盤的目錄
log.dirs=/kafka/logs
// 磁區數
num.partitions=1
// 資料存盤時間:一周以內資料不洗掉
log.retention.hours=168
// 訊息的每個segment的大小
log.retention.bytes=1073741824
// log被洗掉的的情況檢查時間 默認為5分鐘
log.retention.check.interval.ms=300000
// 配置依賴的zookeeper
zookeeper.connect=master:2181,slave1:2181,slave2:2181
5. 啟動Kafka(預先啟動zookeeper)
kafka-sever-start.sh config/server.property &
4. 命令列操作
1. 查看所有topic
kafka-topics.sh --list --zookeeper master:2181,slave1:2181
2. 新建topic 指定topic名 指定副本數 指定磁區數
kafka-topics.sh --create --zookeeper master:2181,slave1:2181 --topic first --replication-factor 2 --partitions 2
2.*** 修改磁區數2到3
kafka-topics.sh --alter --zookeeper master:2181,slave1:2181 --topic first --partitions 3
3. 查看/洗掉指定topic詳細
kafka-topics.sh --describe/delete --zookeeper master:2181,slave1:2181 --topic first
4. 控制臺開啟一個生產者
kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic first
5. 控制臺開啟一個消費者 --from-beginning 從頭開始消費
kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092 --topic first
5.