Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写。
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。
这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像 Hadoop 一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka 的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
Kafka 的分布式是基于 Zookeeper 之上的,所以必须先搭建好 Zookeeper。
参考我的这篇博客,其中提到了如何搭建 Zookeeper:HBase 分布式搭建
tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/
#更改名称
cd /opt/module/
mv kafka_2.11-2.4.1 kafka
使用 vi
命令编辑文件 /etc/profile
,在末尾添加如下配置,路径修改为自己的路径。
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
cd $KAFKA_HOME
mkdir logs
编辑 Kafka 配置文件目录下的 server.properties
。
cd $KAFKA_HOME/config/
设置 Kafka 的 id
,必须保持唯一,其余机器的 id
按顺序进行修改。
添加支持删除 topic
功能:delete.topic.enable=true
修改数据的存储位置,路径按照自己的安装路径来。
修改 Zookeeper 的连接地址,我的设置如下:
zookeeper.connect=hadoop104:2181,hadoop105:2181,hadoop106:2181/kafka
修改完成后,保存并退出。
将 Kafka 分发到其它机器上,修改 Kafka 的 id
,并同步环境变量。
scp -r kafka_2.11-2.4.1/ hadoop105:/opt/module/
scp -r kafka_2.11-2.4.1/ hadoop106:/opt/module/
scp -r /etc/profile hadoop105:/etc/profile
scp -r /etc/profile hadoop106:/etc/profile
环境变量分发完成后,注意在从机上使用 source /etc/profile
进行环境变量的刷新。
在从机上,分别在 $KAFKA_HOME/config/
目录下,编辑 server.properties
文件,按顺序修改 Kafka 的 id
。
Kafka 一般的启动命令为:
kafka-server-start.sh -daemon /opt/module/kafka/config/server-properties
显然,要在三台机器上都执行一遍比较复杂,所以,一般情况下都是通过自定义脚本进行启动。
首先,我们在主节点中进入 /bin
目录,创建 kf.sh
文件,在其中添加如下内容:
#!/bin/bash
case $1 in
"start"){
for host in hadoop104 hadoop105 hadoop106
do
echo "正在启动 $host Kafka 服务"
ssh $host "source /etc/profile;kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
};;
"stop"){
for host in hadoop104 hadoop105 hadoop106
do
echo "正在停止 $host Kafka 服务"
ssh $host 'source /etc/profile;kafka-server-stop.sh stop'
done
};;
*){
echo "参数有误,请选择 【start】 或 【stop】!"
};;
esac
注意将其中的节点以及路径更换成自己的,然后使用 chmod 777 kf.sh
命令增加脚本执行权限。
先启动 Zookeeper! 然后运行命令 kf.sh start
进行群起。
成功启动后节点如下图所示:
进入 Zookeeper Cli 界面,查看节点。
zkCli.sh
ls /
ls /kafka
Kafka 搭建完成~