1:kafka需要zookeeper管理,所以需要先安裝zookeeper绽昏。 下載docker pull wurstmeister/zookeeper:latest版本
docker pull wurstmeister/zookeeper
2:啟動鏡像生成容器
docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
3:下載kafka鏡像
docker pull wurstmeister/kafka
4:啟動kafka鏡像生成容器
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
-e KAFKA_BROKER_ID=0? 在kafka集群中褥赊,每個kafka都有一個BROKER_ID來區(qū)分自己
-e KAFKA_ZOOKEEPER_CONNECT=192.168.155.56:2181/kafka 配置zookeeper管理kafka的路徑192.168.155.56:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092? 把kafka的地址端口注冊給zookeeper
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092?配置kafka的監(jiān)聽端口
-v /etc/localtime:/etc/localtime 容器時間同步虛擬機的時間
5:驗證kafka是否可以使用
進入容器
docker exec -it kafka /bin/sh
進入路徑:/opt/kafka_2.11-2.0.0/bin下
運行kafka生產(chǎn)者發(fā)送消息
./kafka-console-producer.sh --broker-list localhost:9092 --topic sun
發(fā)送消息
{"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
運行kafka消費者接收消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning
-------------------------------------------------------------------關鍵總結------------------------------------------------------------------------
1:進入zookeeper容器內康吵,可以看到kafka注冊信息
docker exec -it zookeeper /bin/sh
進入bin目錄
運行zkCli.sh進入zookeeper客戶端
./zkCli.sh
ls /? 可以查看zookeeper根節(jié)點下都掛了那些目錄
可以看到我注冊的kafka目錄展懈,運行
ls /kafka/brokers/topics/sun/partitions?
可以看到我建立的topic叫sun主題的partitions信息
get命令會顯示該節(jié)點的節(jié)點數(shù)據(jù)內容和屬性信息
get /kafka/brokers/topics/sun
ls2命令會顯示該節(jié)點的子節(jié)點信息和屬性信息
ls2 /kafka/brokers/topics/sun
通過命令行創(chuàng)建topic和partitions
kafka-topics.sh --create --zookeeper 192.168.155.56:2181/kafka --topic topic-test1 --replication-factor 1 --partitions 2
當創(chuàng)建的replication-factor=2時史辙,因為zookeeper的zoo.cfg配置文件中tickTime=2000會報鏈接超時,把這個值調大一些浩习,重啟zookeeper静暂,再創(chuàng)建topic正常。
刪除topic 使用命令:
若 delete.topic.enable=true
直接徹底刪除該 Topic谱秽。
若 delete.topic.enable=false
如果當前 Topic 沒有使用過即沒有傳輸過信息:可以徹底刪除洽蛀。
如果當前 Topic 有使用過即有過傳輸過信息:并沒有真正刪除 Topic 只是把這個 Topic 標記為刪除(marked for deletion),重啟 Kafka Server 后刪除疟赊。
我的kafka版本是最新的郊供,在service.config文件中是找不到delete.topic.enable=true,系統(tǒng)默認是true.
進入kafka容器听绳,cd opt/kafka/bin
kafka-topics.sh --delete --zookeeper 192.168.155.56:2181/kafka --topic sun
命令可以刪除容器中的topic數(shù)據(jù)颂碘,還有zookeeper中的topic目錄。
可以在zookeeper中查看目錄是否已經(jīng)刪除掉了
進入zookeeper容器椅挣,在bin下運行./zkCli.sh
ls /kafka/brokers/topics
還有一種暴力刪除方法头岔,因為我啟動kafka容器的時候,沒有外掛topic路徑鼠证。所以我直接把容器刪除掉峡竣,再重新啟動一個新的容器也能實現(xiàn)topic的刪除。(這種方式不推薦用)
docker kafka 數(shù)據(jù)文件保存的路徑:
在配置文件service.config中配置的量九,log.dirs配置保存路徑适掰。
進入kafka容器,找到配置文件路徑/opt/kafka_2.11-2.0.0/config
vi?service.config?
默認配置在/kafka/kafka-logs-4eaa3ff7f59d下