相关约定
1.kafka安装在/usr/local下
2.数据目录保存在/data*/kafka-logs下
3.运行日志保存在/data0/kafka_runlog
4.建议使用内存大,磁盘多,带宽高的机器
5.zookeeper地址 : Zookeeper_address/kafka/业务号
一.下载安装
- su root
- cd /usr/local
- tar xvf kafka_2.11-0.8.2.1.tgz
- ln -s ln -s kafka_2.11-0.8.2.1 kafka
二.配置
本文仅介绍重要的配置项和部分优化参数,具体不同的优化项请根据实际业务需求设定
详细配置请参考http://kafka.apache.org/082/documentation.html
- cd /usr/local/kafka
- vim config/server.properties
重要配置:
粗体部分若配置错误,可能导致无法启动
配置项 | 推荐值 | 作用 |
---|---|---|
broker.id | 自行规划 | broker唯一区分名 |
port | Default(9092) | 工作端口 |
num.network.threads | 不应大于本机逻辑核心数 | 最大网络处理线程数 |
num.io.threads | 应大于等于使用磁盘数 | 最大io线程数 |
socket.send.buffer.bytes | 1048576 | socket连接发送缓存 |
socket.receive.buffer.bytes | 1048576 | socket连接接收缓存 |
log.dirs | PATH1,PATH2...请参照约定 | 数据保存位置 |
log.retention.hours | 12 | 数据保存时间(小时) |
log.retention.check.interval.ms | 300000 | 数据文件保存超时检查时间 |
replica.lag.max.messages | 800000 | replica与leader消息lag阈值 |
replica.socket.timeout.ms | 30000 | 判断replica是否存活的阈值 |
replica.fetch.wait.max.ms | 800 | leader与replica间数据同步超时时间 |
zookeeper.connect | 参照相关约定 | 所依赖zookeeper地址 |
controlled.shutdown.enable | true | 开启后,执行shutdown时,broker主动将自己有leader身份的partition转移给ISR里的其他broker |
zookeeper.connection.timeout.ms | 1000000 | broker与zookeeper连接超时阈值,设置较大防止zookeeper leader宕机时的zookeeper不可用问题造成影响 |
delete.topic.enable | true | 是否允许删除topic |
auto.create.topics.enable | false | 是否允许api自动创建topic |
日志存储配置
- vim bin/kafka-run-class.sh
- mkdir /data0/kafka_runlog
- 找到
LOG_DIR="$base_dir/logs"
,将其修改为LOG_DIR="/data0/kafka_runlog"
三、运行:
- cd /usr/local/kafka
- bin/kafka-server-start.sh config/server.properties &
四、常用运维命令:
- 创建topic:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication 2 --topic test1 --partition 1
--creat 创建topic
--replication-factor 每个partition需要的replica数目,
-- zookeeper zookeeper地址
--topic 设置topic名字
--parition 为此topic创建多少个partition
- 查看全部topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181
- 查看全部topic的详细信息:
bin/kafka-topics.sh --describe --zookeeper
- 启动producer生产测试:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
--broker-list {broker_number} 确定输入到那个broker
- 启动consumer消费测试:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
--from-beginning :去掉此项则消耗当前实时的数据
- 增加topic的partition数量
bin/kafka-topics.sh --zookeeper localhost:2181 -alter -partitions 5 -topic test
此命令只能增量调整partitions数量
修改topic的replication信息:
1.首先查看topic的describe信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test1
- 2.根据查询到的describe信息,修改配置文件partitions-to-move.json
注意replicas修改时,只有填写存在的brokerid才有效
内容填写格式如下:
{
"partitions" :
[
{
"topic" : "test1",
"partition" : 0,
"replicas" : [1,3]
},
{
"topic" : "test1",
"partition" : 1,
"replicas" : [1,3]
}
],
"version" : 1
}
- 3.执行命令
bin/kafka-reassign-partitions.sh -zookeeper localhost:2181 -reassignment-json-file partitions-to-move.json -execute
- 4.查看验topic的describe验证
bin/kafka-topics.sh --zookeeper localhost:2181 --describe -topic test1
- 设置kafka_topic级别的配置:
当存在topic级别配置时,优先使用此配置,若无则自动使用默认的配置
- 创建topic时:
bin/kafka-topics.sh --zookeeper 192.168.89.129:2181,192.168.89.128:2181 --create --topic change --replication-factor 2 --partitions 2 --config max.message.bytes=54000
- 修改已创建的Topic配置:
bin/kafka-topics.sh --zookeeper 192.168.89.129:2181,192.168.89.128:2181 --topic change --alter --config max.message.bytes=5400
- 删除已创建的topic配置:
bin/kafka-topics.sh --zookeeper 192.168.89.129:2181,192.168.89.128:2181 --topic change --alter --delete-config max.message.bytes
重新负载
1.使用generate模式,生成reassign plan。指定需要重新分配的Topic ({“topics”:[{“topic”:”topic1”}],”version”:1}),并存入/tmp/topics-to-move.json文件中,然后执行
/bin/kafka-reassign-partitions.sh
--zookeeper localhost:2181
--topics-to-move-json-file /tmp/topics-to-move.json
--broker-list "4,5,6,7" --generate
- 2. 使用execute模式,执行reassign plan
将上一步生成的reassignment plan存入/tmp/reassign-plan.json文件中,并执行
bin/kafka-reassign-partitions.sh
--zookeeper localhost:2181
--reassignment-json-file /tmp/reassign-plan.json --execute
- 3.使用verify模式,验证reassign是否完成。执行verify命令
bin/kafka-reassign-partitions.sh
--zookeeper localhost:2181 --verify
--reassignment-json-file /tmp/reassign-plan.json