Kafka安装
- 下载安装包,此次安装的kafka版本为
0.11.0.3
wget https://archive.apache.org/dist/kafka/0.11.0.3/kafka_2.11-0.11.0.3.tgz
- 解压并设置软链接
tar -xzvf kafka_2.11-0.11.0.3.tgz -C /opt/module/
ln -s kafka_2.11-0.11.0.3 kafka
- 设置环境变量
# KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
配置kafka集群
- 编辑
server.properties
文件
# broker.id为唯一的集群节点标识,必须为整数
broker.id=201
# 是否允许删除topic,此处设置为允许
delete.topic.enable=true
# kafka数据暂存目录,用于将数据和日志分开存储,数据会存放到/opt/module/kafka/data
# 日志会存放到/opt/module/kafka/logs目录
log.dirs=/opt/module/kafka/data
# 数据保存时间,此处为7天,超过7天数据会被删除
log.retention.hours=168
# zookeeper集群地址
zookeeper.connect=hadoop201:2181,hadoop202:2181,hadoop203:2181
- 将
server.properties
文件分发到其他节点,并且修改broker.id
的值 - 启动kafka集群
# 启动kafka集群之前需要先启动zookeeper集群
zookeeper-cluster start
kafka-server-start.sh -daemon config/server.properties
设置日志输出路径
默认Kafka
运行的时候都会通过log4j
打印很多日志文件,比如server.log
, controller.log
, state-change.log
等,而都会将其输出到$KAFKA_HOME/logs
目录下,这样很不利于线上运维,因为经常容易出现打爆文件系统,一般安装的盘都比较小,而数据和日志会指定打到另一个或多个更大空间的分区盘
具体方法是,打开$KAFKA_HOME/bin/kafka-run-class.sh
,找到下面标示的位置,并定义一个变量,指定的值为系统日志输出路径,重启broker即可生效。
Kafka集群启动脚本
#!/bin/bash
. /etc/rc.d/init.d/functions
KAFKA_CLUSTER=(
hadoop201
hadoop202
hadoop203
)
do_start(){
for host in ${KAFKA_CLUSTER[@]}; do
ssh $host "source /etc/profile; kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
if [ $? -eq 0 ]
then
action "$host start" /bin/true
else
action "$host start" /bin/false
fi
done
}
do_stop(){
for host in ${KAFKA_CLUSTER[@]}; do
ssh $host "source /etc/profile;kafka-server-stop.sh"
if [ $? -eq 0 ]
then
action "$host stop" /bin/true
else
action "$host stop" /bin/false
fi
done
}
do_jps(){
for host in ${KAFKA_CLUSTER[@]}; do
echo "$host jps reporting: "
ssh $host "source /etc/profile; jps"
done
}
case $1 in
start) do_start
;;
stop) do_stop
;;
jps) do_jps
;;
restart)
do_stop
sleep 3s
do_start
;;
*) echo "Usage: $0 {start|stop|restart|jps}" >&2
esac
- 将上述脚本放入/home/bin目录下,添加可执行权限
chmod +x kafka-cluster.sh
- 编辑~/.bash_profile文件,设置环境变量,执行source ~/.bash_profile命令,使之生效
PATH=$PATH:$HOME/bin