聊聊 Kafka: 在 Linux 環(huán)境上搭建 Kafka

點擊上方老周聊架構(gòu)關(guān)注我
一、環(huán)境準備
1.1 Java環(huán)境為前提
1.1.1 上傳jdk-8u261-linux-x64.rpm到服務(wù)器并安裝
# 安裝命令
rpm -ivh jdk-8u261-linux-x64.rpm

1.1.2 配置環(huán)境變量
# 編輯配置文件,jdk的bin目錄到/etc/profile文件,對所有用戶的shell有效
vim /etc/profile
# 生效
source /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
export PATH=$PATH:$JAVA_HOME/bin

# 驗證
java -version

至此,jdk安裝成功。
1.2 Zookeeper的安裝配置
1.2.1 上傳zookeeper-3.4.14.tar.gz到服務(wù)器,解壓到/opt
# 解壓zk到指定目錄
tar -zxf zookeeper-3.4.14.tar.gz -C /opt

1.2.2 修改
Zookeeper保存數(shù)據(jù)的目錄,dataDir# 進入conf配置目錄
cd /opt/zookeeper-3.4.14/conf
# 復制zoo_sample.cfg命名為zoo.cfg
cp zoo_sample.cfg zoo.cfg
# 編輯zoo.cfg文件
vim zoo.cfg
dataDir=/var/riemann/zookeeper/data


1.2.3 編輯
/etc/profile,使配置生效設(shè)置環(huán)境變量
ZOO_LOG_DIR,指定Zookeeper保存日志的位置;
ZOOKEEPER_PREFIX指向Zookeeper的解壓目錄;
將Zookeeper的bin目錄添加到PATH中:

export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/riemann/zookeeper/log
配置完以后再生效配置:
source /etc/profile
1.2.4 啟動Zookeeper,確認Zookeeper的狀態(tài)
zkServer.sh start

至此,zookeeper安裝成功。
1.3 Kafka 的安裝與配置
1.3.1 上傳kafka_2.12-1.0.2.tgz到服務(wù)器并解壓
tar -zxf kafka_2.12-1.0.2.tgz -C /opt

1.3.2 配置環(huán)境變量并生效
vim /etc/profile
export KAFKA=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA/bin
source /etc/profile
1.3.3 配置/opt/kafka_2.12-1.0.2/config中的server.properties文件
vi /opt/kafka_2.12-1.0.2/config/server.properties

`Kafka`連接`Zookeeper`的地址,此處使用本地啟動的`Zookeeper`實例
連接地址是`localhost:2181`
后面的 `myKafka` 是`Kafka`在Zookeeper中的根節(jié)點路徑

配置kafka存儲持久化數(shù)據(jù)目錄

log.dirs=/var/riemann/kafka/kafka-logs
創(chuàng)建上述持久化數(shù)據(jù)目錄
mkdir -p /var/riemann/kafka/kafka-logs
1.4 啟動Kafka
進入Kafka安裝的根目錄,執(zhí)行如下命令:
kafka-server-start.sh ../config/server.properties

啟動成功,可以看到控制臺輸出的最后一行的started狀態(tài):此時kafka安裝成功。

1.5 重新開一個窗口,查看Zookeeper的節(jié)點


如果要后臺啟動,使用命令:
kafka-server-start.sh -daemon config/server.properties
查看Kafka的后臺進程:
ps -ef | grep kafka

停止后臺運行的Kafka:
kafka-server-stop.sh
二、生產(chǎn)與消費
查看zookeeper狀態(tài),zookeeper啟動成功,再啟動kafka。

2.1 kafka-topics.sh 用于管理主題
查看命令的幫助信息

# 列出現(xiàn)有的主題
[root@master1 ~]# kafka-topics.sh --list --zookeeper localhost:2181/myKafka
# 創(chuàng)建主題,該主題包含一個分區(qū),該分區(qū)為Leader分區(qū),它沒有Follower分區(qū)副本。
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_test --partitions 1 --replication-factor 1
# 查看分區(qū)信息
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --list
# 查看指定主題的詳細信息
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --describe --topic topic_test
# 刪除指定主題
[root@master1 ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --delete --topic topic_test
列出現(xiàn)有主題,創(chuàng)建主題,該主題包含一個分區(qū),該分區(qū)為Leader分區(qū),它沒有Follower分區(qū)副本。

查看指定主題的詳細信息

創(chuàng)建主題,該主題包含多個分區(qū)、
多個分區(qū):橫向擴展
多個副本:高可用

2.2 kafka-console-consumer.sh用于消費消息
# 開啟消費者
[root@node1 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_test
# 開啟消費者方式二,從頭消費,不按照偏移量消費
[root@node1 ~]# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic_test --from-beginning
2.3 kafka-console-producer.sh用于生產(chǎn)消息
# 開啟生產(chǎn)者
[root@node1 ~]# kafka-console-producer.sh --topic topic_test --broker-list localhost:9020
2.4 具體操作
開啟消費者和生產(chǎn)者,生產(chǎn)并消費消息。

消費者,按照偏移量消費

消費者從頭消費,不按照偏移量消費

歡迎大家關(guān)注我的公眾號【老周聊架構(gòu)】,Java后端主流技術(shù)棧的原理、源碼分析、架構(gòu)以及各種互聯(lián)網(wǎng)高并發(fā)、高性能、高可用的解決方案。
喜歡的話,點贊、再看、分享三連。

點個在看你最好看
