一、安裝
下載鏡像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
通過docker-compose啓動
docker-compose.yml腳本(zk+kafka版)
version: '2'
services:
zoo1:
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zoo1
ports:
- "2182:2181"
container_name: zookeeper
kafka1:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2182"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
depends_on:
- zoo1
container_name: kafka
啓動
docker-compose up -d
二、使用
進入kafka
docker exec -it kafka /bin/bash
cd /opt/kafka_2.11-1.1.0
創建主題
bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka //zk爲容器版
bin/kafka-topics.sh --create --zookeeper 192.168.247.131:2181 --replication-factor 1 --partitions 1 --topic mykafka //zk爲本地版
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka //運行一個消息生產者,指定topic爲剛剛創建的主題
bin/kafka-console-consumer.sh --zookeeper 192.168.247.131:2181 --topic mykafka --from-beginning //運行一個消費者,指定同樣的主題
查看
bin/kafka-topics.sh --list --zookeeper localhost:2181
發送消息
發送消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
啓動消費者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message
單節點集羣
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
config/server-1.properties:
broker.id=2
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1
zookeeper.connect=192.168.247.131:2182
config/server-2.properties:
broker.id=3
listeners=PLAINTEXT://:9094
log.dirs=/tmp/kafka-logs-2
zookeeper.connect=192.168.247.131:2183
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-2.properties &
//配置並啓動基於zk集羣的兩個kafka
bin/kafka-topics.sh --create --zookeeper 192.168.247.131:2182 --replication-factor 2 --partitions 1 --topic my-replicated-topic
複製數量小於等於相關聯的zk集羣數,且端口號必須是集羣內的zk
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
//查看集羣狀態
//“leader”是負責給定分區的所有讀取和寫入的節點。每個節點將成爲隨機選擇的分區部分的領導者。
//“replicas”是複製此分區日誌的節點列表,無論它們是否爲領導者,或者即使它們當前處於活動狀態。
//“isr”是“同步”複製品的集合。這是副本列表的子集,該列表當前處於活躍狀態並且已經被領導者捕獲。
數據處理(使用Kafka Connect導入/導出數據)
echo -e "foo\nbar" > test.txt
bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties
more test.sink.txt
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic connect-test --from-beginning
echo Another line>> test.txt