Docker安装及配置kafka
一、下载镜像
# 如果已经安装了zookeeper,则不需要重新pull zookeeper镜像
docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka
二、先启动zookeeper
#如果已经安装并启动了zookeeper,则跳过 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
三、启动kafka
docker run -d --restart=always --name kafka \ -p 9092:9092 \ -e KAFKA_BROKER_ID=1 \ -e KAFKA_auto_create_topics_enable=true \ -e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" \ -e KAFKA_ZOOKEEPER_CONNECT=公网ip:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://公网ip:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \ -t wurstmeister/kafka
说明:
//配置分组id
KAFKA_BROKER_ID=1//开启自动创建主题(不然代码整合服务后启动报错,必须自己手动到服务上创建)
KAFKA_auto_create_topics_enable=true//连接zookeeper
KAFKA_ZOOKEEPER_CONNECT=公网ip:2181//默认内存1G自己服务器太小,调小一点不然启动报错内存溢出(此处也比较坑)
KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"//配置外网ip访问kafka
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://公网ip:9092
四、创建一个topic(使用代码此步可省略)
#进入容器 docker exec -it ${CONTAINER ID} /bin/bash cd /opt/kafka #创建主题 bin/kafka-topics.sh --create --zookeeper 公网ip:2181 --replication-factor 1 --partitions 1 --topic mytopic #查看主题列表: bin/kafka-topics.sh --list --zookeeper 公网ip:2181 #运行生产者发送消息 bin/kafka-console-producer.sh --broker-list 公网ip:9092 --topic mytopic 发送消息: {"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"} #运行消费者接收 bin/kafka-console-consumer.sh --bootstrap-server 公网ip:9092 --topic mytopic --from-beginning
五、kafka设置分区数量
#分区数量的作用:有多少分区就能负载多少个消费者,生产者会自动分配给分区数据,每个消费者只消费自己分区的数据,每个分区有自己独立的offset #进入kafka容器 vi opt/kafka/config/server.properties 修改run.partitions=2 #退出容器 ctrl+p+q #重启容器 docker restart kafka ? #修改指定topic ./kafka-topics.sh --zookeeper localhost:2181 --alter --partitions 3 --topic topicname
六、kafka相关操作指令
Kafka命令行
查看topic
bin/kafka-topics.sh --zookeeper localhost:2181 --list
创建topic
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic test1 --partitions 4 --replication-factor 1
查看topic信息
bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic test1
消费命令
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test1
生产命令
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test1
简单性能测试:
bin/kafka-producer-perf-test.sh --topic test1 --num-records 100000 --record-size 1000 --throughput 2000 --producer-props bootstrap.servers=localhost:9092
bin/kafka-consumer-perf-test.sh --bootstrap-server localhost:9092 --topic test1 -- fetch-size 1048576 --messages 100000 --threads 1
至此,Docker安装配置kafka完毕。