Kafka安裝和簡單使用


Kafka是一個比RabbitMQ更加強大的消息中間件,處理消息的能力為80-100M/s,下面安裝記錄一下,Linux版本為Centos6。

解壓壓縮包

直接解壓即可。

[root@hadoop01 /home/software]# tar -zxvf kafka_2.11-1.0.0.tgz

修改server.properties

(1)指定broker編號,需獨一無二的整數,broker就是經紀人,一個broker代表一個kafka節點。

(2)指定kafka數據本地化的位置

(3)kafka注冊節點在zookeeper上,需配置zookeeper節點

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

# A comma seperated list of directories under which to store log files
log.dirs=/home/software/kafka-2/kafka-logs

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181

分發到其他節點

將剛配置好的kafka分發到其他兩台節點,並修改server.properties文件,將broker分別修改為1和2。

# 分發到節點2
[root@hadoop01 /home/software]# scp -r kafka-2/ root@hadoop02:$PWD

# 分發到節點3
[root@hadoop01 /home/software]# scp -r kafka-2/ root@hadoop03:$PWD

kafka使用初體驗

分發完成后,就可以啟動一下kafka,下面操作一下。

(1)節點1上啟動一個broker,需加載剛才修改的配置文件。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-server-start.sh ../config/server.properties

啟動成功。

(2)重開一個遠程連接窗口,創建主題topic,並在kafka-logs下查看目錄情況。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic football
Created topic "football".
[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 2 --topic music
Created topic "music".

創建topic成功后目錄中多了football和music的topic文件夾,其中music設置了2個分區就有兩個文件夾。

(3) 節點2上也啟動一個broker,並在節點1上再次創建一個topic。

節點2啟動一個broker。

[root@hadoop02 /home/software/kafka-2/bin]# sh kafka-server-start.sh ../config/server.properties

節點1上再次創建一個topic,指定分區為2。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 2 --topic book
Created topic "book".

創建成功后,發現兩個分區分布在兩個broker對應的kafka-logs目錄中。

book-0分區在節點1中。

book-1分區在節點2中。 

如果topic指定了多個partition,則這個topic的partition會均勻的分布在多個節點上,partition就是為了讓數據均勻分布,存儲在節點。 

(4)可以使用如下命令查看剛才創建的topic,需連接zookeeper獲取信息。

# 列出剛創建的3個topic
[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --list --zookeeper hadoop01:2181 book football music

(5)使用如下命令刪除topic,也需連接zookeeper。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --delete --zookeeper hadoop01:2181 --topic music
Topic music is marked for deletion.
# 設置delete.topic.enable為true,則為立即刪除 Note: This will have no impact
if delete.topic.enable is not set to true.

刪除完后,不會立即刪除topic,只是先標記為刪除,默認1分鍾后會刪除,想修改為立即刪除需在server.properties中配置delete.topic.enable為true。

(6) 副本數目不能超過節點數目,上面開啟了2個broker,如果設置副本數為3會提示報錯。另外副本是以topic為單位來復制的。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 3 --partitions 2 --topic replication
# 報錯提示不能超過節點數
Error
while executing topic command : Replication factor: 3 larger than available brokers: 2. [2019-12-30 21:11:05,625] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 2. (kafka.admin.TopicCommand$) You have new mail in /var/spool/mail/root
# 修改副本數為2后ok [root@hadoop01
/home/software/kafka-2/bin]# sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 2 --partitions 2 --topic replication Created topic "replication".

節點1和節點2上均有topic目錄,並有2個分區。

節點1

節點2

(7)消息的生產端和消費端

生產端,--broker-list為獲取節點的信息,后面配置的9092為kafka端口號,發送消息最后還需要指定主題。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-console-producer.sh --broker-list hadoop01:9092 --topic football
>hello buddy , i am football king messi

消費端,直接連接zookeeper,指定好主題就可以接收消息了。

[root@hadoop01 /home/software/kafka-2/bin]# sh kafka-console-consumer.sh --zookeeper hadoop01:2181 --topic football
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].
hello buddy , i am football king messi

以上就是kafka安裝和使用初體驗,記錄一下后面使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM