1.zookeeper在Kafka中的作用
Kafka实用zookeeper保存集群的元数据和消费者信息。Kafka发行版了自带Zookeeper,可以直接从脚本安装,不过安装一个完整版的Zookeeper也很easy。
2.安装zookeeper
下载 zookeeper-3.4.13.tar.gz
安装
tar -zxvf zookeeper-3.4.13.tar.gz mv zookeeper-3.4.13 /usr/local/zookeepermkdir -p /var/lib/zookeepercd /usr/local/zookeeper/confcp zoo_sample.cfg zoo.cfg sudo /usr/local/zookeeper/bin/zkServer.sh start
验证
$telnet localhost 2181Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.srvrZookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMTLatency min/avg/max: 0/0/0Received: 1Sent: 0Connections: 1Outstanding: 0Zxid: 0x0Mode: standaloneNode count: 4Connection closed by foreign host.
3.安装Kafka Broker
安装
tar -zxvf kafka_2.12-2.1.1.tgz sudo mv kafka_2.12-2.1.1 /usr/local/kafka mkdir /tmp/kafka-logs /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
测试
发消息
$/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test>hello word>
收消息
$/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginningTest Message 1Test Message 2u123abchello word
4.配置说明
位置:kafka/config/server.properties里面的参数
- broker.id:每个broker都有一个唯一的标识符,默认值是0,在整个Kafka集群里是唯一的。值可以任意选定,为了便于维护可以配置为机器名
- zookeeper.connect:用于配置保存broker元数据的Zookeeper地址,格式:hostname:port/path(如localhost:2181),多个用逗号隔开
- logs.dirs: Kafka把所有的消息都保存在磁盘上,存放这些认知片段的目录通过logs.dir指定,它是用逗号隔开的本地文件系统路径(默认配置是/tmp/kafka-logs)
5.监控工具:Kafka Manager
下载安装
执行:./sbt clean dist
执行完后生成:kafka-manager-1.3.3.22.zip (位置:kafka-manager/target/universal/)
解压
unzip kafka-manager-1.3.0.8.zip -d /usr/localcd /usr/local/kafka-manager-1.3.0.8
修改配置 conf/application.properties
# 如果zk是集群,这里填写多个zk地址kafka-manager.zkhosts="localhost:2181"
启动服务
sudo nohup bin/kafka-manager &
默认端口9000,如果修改端口
bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=8080
启动验证
访问:ip:port
创建一个cluster
Cluster Zookeeper Hosts
地址配置为Zookeeper地址,和配置文件中的地址保持一致,全部打钩,保存。
查看topic详情和消费信息:
6.常见问题解决
6.1 Kafka代码连接异常TimeoutException
此异常的出现的时候,多半是网络问题,检查/etc/hosts中的主机ip映射的hostname与配置的listeners中hostname是否保持一致,如下图
修改脚本:config/server.properties
6.2 kafka服务必需要开启JMX,否则在下一步启动kafka-manager时会出现:
java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!
解决:在bin/kafka-server-start.sh前面加上
export JMX_PORT=9999
6.3 WARN [Producer clientId=console-producer] Connection to node -1 could not be established. Broker may not be available
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
如果弹出需将上文中localhost改为队列配置的地址
还没有人抢沙发呢~