kafka集群搭建
kafka集群需要zookeeper集群支持。本文使用的kafka版本为kafka_2.11-0.10.2.1,只需要jdk1.7。
kafka_2.12-0.11.0.0需要jdk1.8。
配置
server.properties
# 每个节点单独配置
# 当前机器在集群中的唯一标识,每个节点都不能一样
broker.id=0
# 这个参数默认是关闭的,可以不配置。
host.name=192.168.5.185
# 当前kafka对外提供服务的端口默认是9092
port=9092
# 节点共通配置
# 设置zookeeper的连接端口
zookeeper.connect=192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181
如果不配置 host.name 时,linux 默认会使用 hostname,在集群环境下需要把每个节点的 ip 和 hostname 映射加入 /etc/hosts,否则会出现 LEADER_NOT_AVAILABLE 错误
启动
cd /usr/hadoop/application/kafka/bin
./kafka-server-start.sh
-daemon ../config/server.properties
查看日志:
cd /kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties
测试
#创建Topic
./kafka-topics.sh --create --zookeeper 192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181 --replication-factor 1 --partitions 1 --topic test
#查看topic
./kafka-topics.sh --list --zookeeper 192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181
#在一台服务器上创建一个发布者,创建后在控制台输入字符后换行即可发送消息
./kafka-console-producer.sh --broker-list 192.168.5.185:19092 --topic test
#在一台服务器上创建一个订阅者
./kafka-console-consumer.sh --zookeeper 192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181 --topic test --from-beginning
kafka集群监控
kafka-manager
github地址:https://github.com/yahoo/kafka-manager
####编译
1、安装sbt,可能不需要安装也可以执行下一步
curl https://bintray.com/sbt/rpm/rpm |tee /etc/yum.repos.d/bintray-sbt-rpm.repo
yum install sbt
2、编译 kafka-manager,下载速度很慢,请耐心等待
编译完以后,生成的包位于 kafka-manager/target/universal/kafka-manager-1.3.3.4.zip 。只需要JAVA环境就可以运行了,在部署的机器上不需要安装sbt。
cd kafka-manager
# 终端后可以使用sbt dist
sbt clean dist
3、修改配置,conf/application.conf
kafka-manager.zkhosts="192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181"
或者配置环境变量
ZK_HOSTS="192.168.5.172:2181,192.168.5.173:2181,192.168.5.174:2181"
4、(可选配置)开启JMX,默认kafka是不开启JMX监控。修改kafka/bin/kafka-server-start.sh文件,加入JMX_PORT
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
export JMX_PORT="9999"
fi
5、启动
cd /usr/hadoop/application/kafka-manager
nohup bin/kafka-manager -Dconfig.file=/usr/hadoop/application/kafka-manager/conf/application.conf &
-Dhttp.port=8080可以控制启动端口号,默认为9000
6、初始化,kafka-manager需要在页面上手动添加集群,访问http://localhost:9000/
添加完成后点击保存
Kafka日志清理策略
Kafka的默认日志清理策略时间比较久,不能满足生产环境需要,于是修改了日志清理策略
Kafka 日志清理涉及两个配置,配置文件位于 conf/server.properties
# 默认值 168,不设置即为 168
# 按照时间删除,超过 168 小时的文件会自动删除
log.retention.hours=168
# segment 文件删除大小,超过当单个 segment 文件超过 log.retention.bytes 值时,会自动进行删除,因此如果想此项生效,必须 log.retention.bytes 小于 log.segment.bytes
log.retention.bytes=1073741824
# 每个 segment 文件最大大小
log.segment.bytes=1073741824