zookeeper1:192.168.1.11 zookeeper2:192.168.1.12 zookeeper3:192.168.1.13 kafka1:192.168.1.14 kafka2:192.168.1.15 kafka3:192.168.1.16 kafka3:192.168.1.17 kafka-manager:192.168.1.18
下載地址:html
http://kafka.apache.org/downloads.htmljava
http://mirrors.hust.edu.cn/apache/git
http://zookeeper.apache.org/releases.htmlgithub
已經安裝好java-1.8apache
[root@zookeeper1 ~]# yum install java-1.8.0
此處使用版本zookeeper-3.4.10.tar.gzvim
# 下載 ZooKeeper [root@zookeeper1 ~]# wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz # 解壓文件 [root@zookeeper1 ~]# tar -zxf zookeeper-3.4.10.tar.gz -C /opt/ [root@zookeeper1 ~]# cd /opt/ [root@zookeeper1 opt]# ln -s zookeeper-3.4.10 zookeeper [root@zookeeper1 opt]# cd zookeeper [root@zookeeper1 zookeeper]# cp ./conf/zoo_sample.cfg ./conf/zoo.cfg
zookeeper1,zookeeper2,zookeeper3都是一樣的配置bash
[root@zookeeper1 zookeeper]# vim ./conf/zoo.cfg tickTime=2000 initLimit=5 syncLimit=2 dataDir=/opt/push/kafka-test/zookeeper/data dataLogDir=/opt/push/kafka-test/zookeeper/logs clientPort=2181 server.1=192.168.1.11:2888:3888 server.2=192.168.1.12:2888:3888 server.3=192.168.1.13:2888:3888 [root@zookeeper1 zookeeper]# mkdir data logs [root@zookeeper1 zookeeper]# echo '1' > /opt/zookeeper/data/myid # 其它兩臺此處須要修改 [root@zookeeper2 zookeeper]# echo '2' > /opt/zookeeper/data/myid [root@zookeeper3 zookeeper]# echo '3' > /opt/zookeeper/data/myid
此處使用版本爲kafka_2.11-1.1.0.tgz服務器
# 下載 Kafka [root@kafka1 ~]# wget https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz # 解壓tar文件 [root@kafka1 ~]# tar -zxf kafka_2.11-1.1.0.tgz.gz -C /opt/ [root@kafka1 ~]# cd /opt/ root@kafka1 opt]# ln -s kafka_2.11-1.1.0 kafka root@kafka1 opt]# cd kafka
進入kafka的安裝配置目錄網絡
[root@kafka1 kafka]# cp config/server.properties config/server.properties.bak # 備份kafka默認配置文件
主要關注:server.properties
這個文件便可,咱們能夠發如今目錄下:app
有不少文件,這裏能夠發現有Zookeeper文件,咱們能夠根據Kafka內帶的zk集羣來啓動,可是建議使用獨立的zk集羣
server.properties(broker.id和host.name每一個節點都不相同)
//當前機器在集羣中的惟一標識,和zookeeper的myid性質同樣 broker.id=0 //Socket服務器偵聽的地址,當前kafka對外提供服務的端口默認是9092 listeners = PLAINTEXT://your.host.name:9092 //代理將向生產者和消費者作廣告的主機名和端口 advertised.listeners=PLAINTEXT://your.host.name:9092 //這個是borker進行網絡處理的線程數 num.network.threads=3 //這個是borker進行I/O處理的線程數 num.io.threads=8 //發送緩衝區buffer大小,數據不是一會兒就發送的,先回存儲到緩衝區了到達必定的大小後在發送,能提升性能 socket.send.buffer.bytes=102400 //kafka接收緩衝區大小,當數據到達必定大小後在序列化到磁盤 socket.receive.buffer.bytes=102400 //這個參數是向kafka請求消息或者向kafka發送消息的請請求的最大數,這個值不能超過java的堆棧大小 socket.request.max.bytes=104857600 //消息存放的目錄,這個目錄能夠配置爲「,」逗號分割的表達式,上面的num.io.threads要大於這個目錄的個數這個目錄, //若是配置多個目錄,新建立的topic他把消息持久化的地方是,當前以逗號分割的目錄中,那個分區數最少就放那一個 log.dirs=/home/hadoop/log/kafka-logs //默認的分區數,一個topic默認1個分區數 num.partitions=1 //每一個數據目錄用來日誌恢復的線程數目 num.recovery.threads.per.data.dir=1 //默認消息的最大持久化時間,168小時,7天 log.retention.hours=168 //這個參數是:由於kafka的消息是以追加的形式落地到文件,當超過這個值的時候,kafka會新起一個文件 log.segment.bytes=1073741824 //每隔300000毫秒去檢查上面配置的log失效時間 log.retention.check.interval.ms=300000 //設置zookeeper的鏈接端口 zookeeper.connect=localhost:2181 //設置zookeeper的鏈接超時時間 zookeeper.connection.timeout.ms=6000
kafka1:
[root@kafka1 kafka]# vim config/server.properties broker.id=1 # 當前機器在集羣中的惟一標識 listeners=PLAINTEXT://192.168.1.14:9092 # 監聽端口 advertised.listeners=PLAINTEXT://192.168.1.14:9092 # 提供給生產者,消費者的端口號。能夠不設置則使用listeners的值 zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka # 鏈接zookeeper
kafka2:
[root@kafka2 kafka]# vim config/server.properties broker.id=2 # 當前機器在集羣中的惟一標識 listeners=PLAINTEXT://192.168.1.15:9092 # 監聽端口 advertised.listeners=PLAINTEXT://192.168.1.15:9092 # 提供給生產者,消費者的端口號。能夠不設置則使用listeners的值 zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka # 鏈接zookeeper
kafka3:
[root@kafka3 kafka]# vim config/server.properties broker.id=3 # 當前機器在集羣中的惟一標識 listeners=PLAINTEXT://192.168.1.16:9092 # 監聽端口 advertised.listeners=PLAINTEXT://192.168.1.16:9092 # 提供給生產者,消費者的端口號。能夠不設置則使用listeners的值 zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka # 鏈接zookeeper
kafka4:
[root@kafka4 kafka]# vim config/server.properties broker.id=4 # 當前機器在集羣中的惟一標識 listeners=PLAINTEXT://192.168.1.17:9092 # 監聽端口 advertised.listeners=PLAINTEXT://192.168.1.17:9092 # 提供給生產者,消費者的端口號。能夠不設置則使用listeners的值 zookeeper.connect=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181/kafka # 鏈接zookeeper
全部zookeeper節點都須要執行
[root@zookeeper1 kafka]# ./bin/zkServer.sh start
全部kafka節點都須要執行
[root@kafka1 kafka]# ./bin/kafka-server-start.sh config/server.properties 或者: [root@kafka1 kafka]# ./bin/kafka-server-start.sh -daemon config/server.properties # 後臺啓動
[root@kafka1 kafka]# bin/kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 3 --partitions 3 --topic topic2
[root@kafka1 kafka]# ./bin/kafka-topics.sh --describe --zookeeper kafka1:2181 --topic topic2
[root@kafka1 kafka]# ./bin/kafka-topics.sh --list --zookeeper kafka1:2181
kafka1顯示接收到消息
[root@kafka1 kafka]# ./bin/kafka-console-producer.sh --broker-list kafka1:9092 --topic2
在kafka2上消費消息
[root@kafka2 kafka]# ./bin/kafka-console-consumer.sh --zookeeper kafka1:2181 --from-beginning --topic topic2
官網:https://github.com/yahoo/kafka-manager
[root@kafka-manager ~]# git clone https://github.com/yahoo/kafka-manager.git [root@kafka-manager ~]# cd kafka-manager # 部署 [root@kafka-manager kafka-manager]# ./sbt clean dist 解壓縮生成的zip文件 # 啓動 [root@kafka-manager kafka-manager]# bin/kafka-manager [root@kafka-manager kafka-manager]# bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=8080