Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka专为分布式高吞吐量系统而设计。
最新定义:Kafka是一个开源的分布式事件流平台(EventStreamingPlatform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。
主要应用场景包括:
消息队列得两种模式:
下载地址:http://kafka.apache.org/downloads.html
Kafka集群需要首先配置好Hadoop集群以及Zookeeper集群,一个Hadoop节点以及zookeeper结点对应一个Kafka集群节点。
1、解压安装
[root@node01 software]# tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/module/ #修改名称 [root@node01 module]# mv kafka_2.11-2.4.1/ kafka
2、修改配置文件
$ cd /opt/module/kafka/config $ vim server.properties
按以下内容配置:
#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔 log.dirs=/opt/module/kafka/datas #配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理) zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka
3、使用分发脚本分发安装包
$ xsync kafka/
4、修改另外两台服务器配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2
5、在/etc/profile.d/my_env.sh文件中增加kafka环境变量配置 (三台服务器都需要配置)
#KAFKA_HOME export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin #保存退出,刷新环境变量 $ source /etc/profile
6、编写Kafka群起脚本(kfk.sh)
#!/bin/bash case $1 in "start"){ for i in node01 node02 node03 do echo " --------启动 $i Kafka-------" ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties" done };; "stop"){ for i in node01 node02 node03 do echo " --------停止 $i Kafka-------" ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh " done };; esac
#给脚本添加执行权限 $ chmod +x kfk.sh
7、启动kafka集群
注意:先启动Zookeeper集群,然后启动Kafka。停止Kafka集群时,一定要等Kafka所有节点进程全部停止后再停止Zookeeper集群。因为Zookeeper集群当中记录着Kafka集群相关信息,Zookeeper集群一旦先停止,Kafka集群就没有办法再获取停止进程的信息,只能手动杀死Kafka进程了。
#启动集群 kfk.sh start #关闭集群 kfk.sh stop