二、kafka & kafka-manager 安装
一、kafka安装过程(三个节点)
- 官网下载安装包:kafka_2.11-2.1.1.tgz。
- 分发,解压,创建软连接
- 修改配置文件
- server.properties
broker.id=2 #各个节点不一致 listeners=PLAINTEXT://:9092 advertised.listeners=PLAINTEXT://s1:9092 log.dirs=/data/kafka-logs zookeeper.connect=nn1.hadoop:2181,nn2.hadoop:2181,s1:2181 delete.topic.enable=true #设置日志数据是否自动删除 auto.create.topics.enable=true #开启自动创建topic
- producer.properties
bootstrap.servers=nn1.hadoop:9092,nn2.hadoop:9092,s1:9092
- consumer.properties
bootstrap.servers=nn1.hadoop:9092,nn2.hadoop:9092,s1:9092
- 启动关闭
- 启动:./ssh_all_zookeeper.sh "nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties > /tmp/kafka_logs 2>&1 &"
- 关闭:./ssh_all_zookeeper.sh /usr/local/kafka/bin/kafka-server-stop.sh
- kafka常用命令
- 创建topic:
- /usr/local/kafka/bin/kafka-topics.sh --create --replication-factor 2 --partitions 2 --topic xxd_test --zookeeper nn1.hadoop:2181,nn2.hadoop:2181,s1:2181
- 这里指定了2个副本,2个分区,topic名为xxd_test,并且指定zookeeper地址。
- 查看已有的topic:
- /usr/local/kafka/bin/kafka-topics.sh --list --zookeeper nn1.hadoop:2181,nn2.hadoop:2181,s1:2181
- 查看topic的信息:
- /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper nn1.hadoop:2181,nn2.hadoop:2181,s1:2181 --topic xxd_test
- 启动一个生产者:
- /usr/local/kafka/bin/kafka-console-producer.sh --broker-list nn1.hadoop:9092,nn2.hadoop:9092,s1:9092 --topic xxd_test
- 启动一个消费者:
- /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server nn1.hadoop:9092,nn2.hadoop:9092,s1:9092 --topic xxd_test
- 查看 consumer group 列表
- /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server nn1.hadoop:9092,nn2.hadoop:9092,s1:9092 --list
- 查看特定消费组的信息:
- /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server nn1.hadoop:9092,nn2.hadoop:9092,s1:9092 --group canal_consumer --describe
二、遇到的问题
- requirement failed: Configured end points nn1.hadoop:9092 in advertised listeners are already registered by broker 0
- server.properties文件中 advertised.listeners=PLAINTEXT://s1:9092 IP设置不对
三、kafka-manager 安装(一个节点)
-
下载压缩包,上传,解压,创建软连接。
-
修改配置文件 application.conf
kafka-manager.zkhosts="nn1.hadoop:2181,nn2.hadoop:2181,s1:2181" # 用于指明kafka连接的zookeeper。如果zookeeper有多个用逗号分隔。如果你不想直接写入配置文件,你可以设置环境变量ZK_HOSTS,在配置文件中是用{$ZK_HOSTS}引用即可。要想kafka-manager可以运行起来修改此配置即可。 ## 如果kafka安装在zk的/kafka目录那么配置下面的 kafka-manager.base-zk-path="/kafka" application.features=["features1","features2",...] # 设置kafka-manager对kafka集群具有的功能。有下面这四个功能 # KMClusterManagerFeature:容许kafka manager添加,更新,删除kafka集群 # KMTopicManagerFeature:容许kafka manager在kafka集群中添加,更新,删除topic # KMPreferredReplicaElectionFeature:容许kafka manager在kafka集群中执行优先复制选举 # KMReassignPartitionsFeature:容许kafka manager 生成分区设置,或重置分区设置。 basicAuthentication.enabled # 是否启动basic认证,启用使用true,不启用使用false。当启用是此选项是,用户请求访问资源时,浏览器就会弹出一个认证框让用户认证。 basicAuthentication.username # 启用basic认证时,认证的用户名 basicAuthentication.password # 启用basic认证时,认证的密码 basicAuthentication.realm # 可以看成是一个解释,认证用于什么。此字符串在弹出认证框上显示出来 basicAuthentication.excluded=["/api/health"] # 对kafka manager进行健康状态检测,不需要认证
注意:
- kafka 在 zk 中有 path 时,在 kafka-manager 界面配置 cluster 的时候
- Cluster Zookeeper Hosts 这一行 配置 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/kafka
- 是最后一个 host 加 path
-
命令
- 开启:
- nohup /usr/local/kafka-manager/bin/kafka-manager -Dconfig.file=/usr/local/kafka-manager/conf/application.conf -Dhttp.port=9999 > /usr/local/kafka-manager/logs/kafka-manager.log 2>&1 &
- 开启: