一、kafka單節點單broker環境搭建
系統環境:centos 64位 mini
虛擬機:Virtual Box
如果你不熟悉virtual box的使用,不知道如何安裝centos系統,可以參考之前發佈的文章:
如果你不想用virtual box,也可以使用docker,之前發佈的文章也有介紹,請進入頭條號查看
1、Windows下搭建單節點kafka環境
請參考之前發佈在頭條號上的文章,已經詳細介紹了
1)JDK環境搭建
2)zookeeper環境搭建
3)kafka環境搭建
2、Linux下搭建
1)JDK環境搭建
下載:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
解壓:
cd /usr/local/src
tar -zxvf jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181 ../
配置:
cd /usr/local/jdk1.8.0_181
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
驗證:java -version
2)zookeeper環境搭建
- 下載
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.12.tar.gz
- 解壓
cd /usr/local/src
tar -zxvf zookeeper-3.4.12.tar.gz
mv zookeeper-3.4.12 ../
- 配置環境變量
cd /usr/local/zookeeper-3.4.12
vim /etc/profile
export ZK_HOME=/usr/local/zookeeper-3.4.12
export PATH=$ZK_HOME/bin:$PATH
source /etc/profile
- 修改zoo.cfg
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
dataDir=/usr/local/zookeeper-3.4.12/data
- 啟動測試
zkServer.sh start
[root@jikeh zookeeper-3.4.12]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
- 查看啟動進程信息
[root@jikeh local]# jps
3829 QuorumPeerMain
3848 Jps
[root@jikeh local]# jps -m
3858 Jps -m
3829 QuorumPeerMain /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
註釋:zookeeper啟動後,會多一個進程QuorumPeerMain
3)kafka環境搭建
- 下載:
cd /usr/local/src
wget https://archive.apache.org/dist/kafka/1.0.2/kafka_2.12-1.0.2.tgz
註釋:我們使用的版本是0.11
- 解壓:
tar -zxvf kafka_2.12-1.0.2.tgz
mv kafka_2.12-1.0.2 ../
- 配置環境變量:
vim /etc/profile
export KAFKA_HOME=/usr/local/kafka_2.12-1.0.2
export PATH=$KAFKA_HOME/bin:$PATH
使得環境變量立即生效:source /etc/profile
- 配置server.properties
cd /usr/local/kafka_2.12-1.0.2
vim conf/server.properties
server.properties重要參數說明:
broker.id=0//This must be set to a unique integer for each broker
advertised.listeners=PLAINTEXT://192.168.0.108:9092:遠程連接需要配置下
log.dirs=/usr/local/kafka_2.12-1.0.2/kafka-logs//默認的是不會持久化存儲的,這裡必須更改下
zookeeper.connect=//zookeeper的連接地址:根據實際進行配置
3)啟動測試
配置你的hosts:
127.0.0.1 jikeh
啟動zookeeper:
cd /usr/local/zookeeper-3.4.12
bin/zookeeper-server-start.sh config/zookeeper.properties
啟動kafka:
cd /usr/local/kafka_2.12-1.0.2
bin/kafka-server-start.sh config/server.properties
註釋:一個server.properties其實,就可以當做一個broker
jps:查看當前運行的進程
jps -m:查看當前運行進程的詳細信息
二、kafka基本使用
1、創建Topic
1)新建topic
查看命令的幫助信息:直接輸入bin/kafka-topics.sh,然後enter,就可以查看所有的參數信息
bin/kafka-topics.sh --create --zookeeper 192.168.0.108:2181 --replication-factor 1 --partitions 1 --topic test
註釋:參數說明
- replication-factor:設置副本數
- partitions:設置分區數
2)查看當前所有的topic列表
bin/kafka-topics.sh --list --zookeeper 192.168.0.108:2181
3)看下topic的詳情信息
查看所有topic:
bin/kafka-topics.sh --describe --zookeeper 192.168.0.108:2181
查看指定topic:
bin/kafka-topics.sh --describe --zookeeper 192.168.0.108:2181 --topic test
2、發送消息
bin/kafka-console-producer.sh --broker-list 192.168.0.108:9092 --topic test
3、消費消息
bin/kafka-console-consumer.sh --zookeeper 192.168.0.108:2181 --topic test --from-beginning
[root@jikeh kafka_2.12-1.0.2]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
上面的警告信息,表示:這是個廢棄的用法,建議使用新的用法[bootstrap-server]
bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.108:9092 --topic test
註釋:
- --from-beginning參數的作用:重新開始消費消息,不管是否已經被消費了
- 對於低版本的kafka需要這樣連接:
bin/kafka-console-consumer.sh --zookeeper 192.168.0.108:2181 --topic test --from-beginning
4、疑惑點
通過以上命令,很多人就有疑問了,到底什麼時候跟zookeeper打交道,什麼時候跟broker打交道呢,這很容易讓人糊塗
創建topic我是跟zookeeper打交道,而生產、消費消息卻與broker打交道,但是低版本的kafka,消費者還是與zookeeper進行打交道的
注意:
低版本的kafka:需要這樣消費
bin/kafka-console-consumer.sh --zookeeper 192.168.0.108:2181 --topic test --from-beginning
高版本的kafka:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.108:9092 --topic test --from-beginning
註釋:官網上的文檔,其實是按高版本的kafka來更新文檔的
為什麼會有這種區別呢?
Kafka consumers在早先的版本中,offset默認存儲在ZooKeeper中。
三、kafka客戶端遠程連接測試
![這一講絕了,秒會Linux下Kafka環境搭建及基本使用,還能學點英文](http://p2.ttnews.xyz/loading.gif)
如果你理解上有困難,歡迎留言,或者參考視頻教程:
閱讀更多 極客慧 的文章