docker安装kafka

1.下载镜像

docker pull wurstmeister/kafka
docker pull zookeeper:latest

2.启动镜像

1)启动zookeeper

docker run -d -p2181:2181 -v /etc/localtime:/etc/localtime --name zookeeper zookeeper:latest

2)启动kafka

docker run -d -p9092:9092 \
 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
 -e KAFKA_ADVERTISED_HOST_NAME=10.229.5.94 \
 -e KAFKA_ADVERTISED_PORT=9092 \
 -v /etc/localtime:/etc/localtime \
 --link zookeeper \
 --name kafka \
 wurstmeister/kafka:latest

KAFKA_ADVERTISED_HOST_NAME:写kafka所在宿主机的IP

3.验证

1)进入kafka容器

docker exec -it kafka bash

2)进入kafka目录

cd /opt/kafka_2.13-2.8.1

bin目录下存在大量对Kafka进行操作的脚本

3)创建一个名字为test的topic

bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test



root@9d43ff45db41:/opt/kafka_2.13-2.8.1# bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test

Created topic test.

4)查看所有topic

bin/kafka-topics.sh --list --zookeeper zookeeper:2181

5)运行一个生成者,向test写入数据

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

6)运行一个消费者,查看

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

 7)删除topic,test对应的topic被删除

bin/kafka-topics.sh --delete --zookeeper zookeeper:2181 --topic test

删除topic ,配置项delete.topic.enable=true开启

3.1查看命令

topic相关

1)查看所有topic

bin/kafka-topics.sh --list --zookeeper zookeeper:2181

或者

/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

2)查看特定topic详情

bin/kafka-topics.sh --zookeeper zookeeper:2181 --topic 1237csv_connector --describe

consumer-group相关

1)查看所有消费组

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

2)查看特定消费组详情

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group 9d4c20e0-d791707f --describe

分别显示了 

group名称,消费的topic名称,分区ID,consumer group最后一次提交的offset,最后提交的生成消息offset等

3.2一些默认值

enable.auto.commit 的默认值是 true;就是默认采用自动提交的机制。

auto.commit.interval.ms 的默认值是 5000,单位是毫秒。

4.编译rdkafka

1)安装依赖

2)编译

git clone --recursive https://github.com/confluentinc/librdkafka.git

cd librdkafka

./configure --prefix=`pwd`/install

make -j4
make install

 因此,手动安装了缺少的

apt-get install libsasl2-dev -y
apt-get install libzstd-dev -y

5.使用cppkafka

apt-get install librdkafka-dev -y ///把librdkafka安装到系统目录就不需要了

cppkafka允许 C++ 应用程序使用 Apache Kafka 协议使用和生成消息。该库建立在librdkafka 之上,并提供了一个高级 API,该 API 使用现代 C++ 功能来简化代码编写,同时将包装器的性能开销保持在最低水平。

git clone --recursive https://github.com/mfontanini/cppkafka.git

cmake -DRDKAFKA_ROOT=/library/librdkafka/install -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
make 
make install

cmake  -DCMAKE_INSTALL_PREFIX=`pwd`/install ..

6.使用modern-cpp-kafka

git clone --recursive https://github.com/morganstanley/modern-cpp-kafka.git
cd modern-cpp-kafka
mkdir build
cd build
cmake  -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
make

问题解决:

1)需要注意kafka的C库和C++库的链接顺序,需要先连接C++库,后连接C库

即lrdkafka++ -lrdkafka

2)在linux在pthread可能不是默认的库,在连接时需要指定

target_link_libraries(
  test
  rdkafka++ 
  rdkafka
  pthread
)

参考Docker入门(七):使用镜像安装kafka+zookeeper_刘李404not found的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_38196982/article/details/128551355
今日推荐