一.介绍
Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。 它最初由LinkedIn(领英)公司发布,使用Scala语言编写,与2010年12月份开源,成为Apache的顶级子项目。 它主要用于处理消费者规模网站中的所有动作流数据。动作指(网页浏览、搜索和其它用户行动所产生的数据)。
它由 消费者,生产者和broker组成,kafka可以将数据存储在日志文件中让消息能够多次消费
二.对比
三.安装
1.依赖
本教程是基于你已经安装了 java,scala,zk
2.安装
1.步骤:
- 1.下载kafka
- 2.解压并安装
- 3.配置环境变量
- 4.修改bin/kafka-server-start.sh
- 5.修改config/server.properties
- 6.复制到其他机器
- 7.在集群集群重复【3,5】步骤
- 8.启动
跟着尝试一下吧
1.kafka下载/安装
# 前往https://kafka.apache.org/downloads 下载对应的版本,上传到服务器/opt/kafka
tar zxfv kafka_2.12-3.1.0.tgz #解压kafka
mv kafka_2.12-3.1.0 kafka #(可选)改不改名字都可以
2.kafka环境变量
vim /etc/profile #配置环境变量
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile #刷新配置
3.修改启动脚本 bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1g -Xms256m -Xmn256m -Xss128m -XX:+DisableExplicitGC -XX:SurvivorRatio=8 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"
export JMX_PORT="9900"
fi
- kafka JVM内存根据自己实际情况设置,默认是4g,个人集群配置比较低所以设置1g。以上是在个人或者测试环境的配置,如果你想应用到生产科研结合实际情况并结合Kafka最佳实践:Kafka 最佳实践 - 腾讯云开发者社区-腾讯云 (tencent.com)
4.修改配置文件 config/server.properties
broker.id=0 #每一台kafka的broker.id都必须是唯一的,所以另外两台机器上的broker.id是需要更改的
listeners=PLAINTEXT://192.168.0.116:9092 #填写本机ip
zookeeper.connect=127.0.0.1:2181 #如果多台zk使用,分割配置
log.dirs=/opt/kafka/data/ #指定数据文件的保存地址,3台kafka机器的配置都一样
- kafka的主要配置参考:https://www.cnblogs.com/yinchengzhe/p/5111635.html
5.集群配置
scp -r /opt/kafka [email protected]:/opt
scp -r /opt/kafka [email protected]:/opt
6.集群成员 config/server.properties 修改
broker.id=1 #修改成唯一值
listeners=PLAINTEXT://192.168.0.116:9092 #改成自己的IP和端口
7.启动
cd /opt/kafka
bin/kafka-server-start.sh -daemon config/server.properties
- jps看一下是否启动,集群其他服务器也需要相同操作;如果没有发现 ** Kafka 需要去logs目录打印看一下日志 tail -f .log
四.测试
1.创建topic:
bin/kafka-topics.sh --describe --bootstrap-server xxxx:9092 --topic test0
- 注意:低版本kafka 是使用 --zookeeper 替换 --bootstrap-server 咱们目前是高版本
2.查询topic:
bin/kafka-topics.sh --list --bootstrap-server xxxx:9092
3.创建消费者
bin/kafka-console-consumer.sh --bootstrap-server xxxx:9092 --topic test
4.创建生产者
bin/kafka-console-producer.sh --bootstrap-server XXXX:9092 --topic test
五.控制台安装
使用命令去查看,创建topic显然不方便。推荐使用eagle来查看集群和kafka其他信息
项目地址 :https://www.kafka-eagle.org/
1.安装/环境变量
tar zfxv kafka-eagle-bin-3.0.1.tar.gz #解压eagle
mv kafka-eagle-web-3.0.1 eagle #解压后有多个目录,找到web这个项目 改名eagle
pwd
vim /etc/profile #添加环境变量
export KE_HOME=/opt/eagle
export PATH=${PATH}:${KE_HOME}/bin
source /etc/profile
2.修改配置 conf/system-config.properties
# multi zookeeper&kafka cluster list -- The client connection address of the Zookeeper cluster is set here
#如果只有一个集群的话,就写一个cluster1就行了
#kafka.eagle.zk.cluster.alias=cluster1,cluster2 #多个集群的写法
kafka.eagle.zk.cluster.alias=cluster1
#zookeeper.connect地址
cluster1.zk.list=192.168.0.113:2181,192.168.0.114:2181,192.168.0.115:2181
#如果多个集群,继续写,如果没有注释掉
#如果说这里的zookeeper地址后面加了其他路径,在kafka-eagle里面也要配置,否则在kafka-eagle的Dashboard中无法读取到kafka的信息。比如我们有人安装的kafka集群里面就有 192.168.18.11:2181/kafka 这种地址。
#cluster2.zk.list=192.168.0.21:2181,192.168.0.22:2181,192.168.0.23:2181/kafka
# zk limit -- Zookeeper cluster allows the number of clients to connect to
#Zookeeper集群允许连接的客户端数量
kafka.zk.limit.size=25
# web界面地址端口
kafka.eagle.webui.port=8048
#如果你的offsets存储在Kafka中,这里就配置属性值为kafka,如果是在Zookeeper中,可以不用配置该属性。一般情况下,Offsets的也和你消费者API有关系,如果你使用的Kafka版本为0.10.x以后的版本,但是,你的消费API使用的是0.8.2.x时的API,此时消费者依然是在Zookeeper中
cluster1.kafka.eagle.offset.storage=kafka
#超级管理员删除主题的Token
kafka.eagle.topic.token=keadmin
#是否启动监控图表,默认是不启动的。需要改成 true。数据默认保存30天
kafka.eagle.metrics.charts=true
kafka.eagle.metrics.retain=30
#在使用Kafka SQL查询主题时,如果遇到错误,可以尝试开启这个属性,默认情况下不开启。需要改成 true
kafka.eagle.sql.fix.error=true
#在使用 Kafka SQL 查询 topic主题 时的 记录数最大值
kafka.eagle.sql.topic.records.max=50000
#邮件服务器设置,用来告警
#kafka.eagle.mail.enable=false
#kafka.eagle.mail.sa=
#kafka.eagle.mail.username=
#kafka.eagle.mail.password=
#kafka.eagle.mail.server.host=
#kafka.eagle.mail.server.port=
#设置告警用户,多个用户以英文逗号分隔
#[email protected]
#如果kafka开启了sasl认证,需要在这个地方配置sasl认证文件。false:不启用认证
kafka.eagle.sasl.enable=false
kafka.eagle.sasl.protocol=SASL_PLAINTEXT
kafka.eagle.sasl.mechanism=PLAIN
kafka.eagle.sasl.client=/data/kafka-eagle/conf/kafka_client_jaas.conf
# Kafka Eagle默认存储在Sqlite中,如果要使用 MySQL可以替换驱动、用户名、密码、连接地址
kafka.eagle.driver=org.sqlite.JDBC
kafka.eagle.url=jdbc:sqlite:/opt/eagle/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=123456
#虚拟机 nat 模式下安装的mysql,eagle无法正常使用,但是 hive,Navicat 等可以正常使用mysql。原因暂时未知
#kafka.eagle.driver=com.mysql.jdbc.Driver
#kafka.eagle.url=jdbc:mysql://192.168.1.100:3306/eagle?useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
#kafka.eagle.username=root
#kafka.eagle.password=123456
- 注意1:system-config.properties 文件中默认配置是有 2个cluster的,所以需要把 cluster2 的相关配置都注释掉
- 注意2:默认是mysql这段需要注释掉,使用SqlLite将SqlLite的注释打开
3.启动
bin/ke.sh 返回一下信息:记得开启防火墙
url: http://IP:8048/ke账号:admin
密码:123456
六.其他
开放端口:
#开通防火墙端口命令(仅限 centos 6.x 以及之前版本):
/sbin/iptables -I INPUT -p tcp --dport 9092 -j ACCEPT
/sbin/iptables -I INPUT -p udp --dport 9092 -j ACCEPT
service iptables save
service iptables restart
#开通防火墙端口命令(仅限 centos 7.x 版本):
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=9092/udp --permanent
firewall-cmd --reload
zk安装:
tar zvfx apache-zookeeper-3.6.3-bin.tar.gz #解压zk
cd apache-zookeeper-3.6.3-bin\conf #进入conf目录
copy zoo_sample.cfg zoo.cfg #复制一份模版配置文件,名字取为zoo.cfg
cd ../bin #返回上一级目录,并进入bin目录
./zkServer.sh start #启动单机zk
安装java
tar zvfx jdk-8u351-linux-x64.tar.gz #解压jdk文件
pwd #获取路径
vim /etc/profile #配置环境变量
export JAVA_HOME=/usr/xxxxx
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile #刷新环境变量
java -version #检查是否安装成功,root用户安装需要下放jdk目录权限
scala安装
tar zvfx scala-2.12.16.tgz #解压scala文件
pwd #获取路径
vim /etc/profile #配置环境变量
export SCALA_HOME=/usr/xxxxx
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile #刷新环境变量
scala -version #检查是否安装成功,root用户安装需要下放scala目录权限
七.引用
kafka官方文档:https://kafka.apache.org/documentation/
kafka的主要配置参考:https://www.cnblogs.com/yinchengzhe/p/5111635.html
Kafka 最佳实践:https://cloud.tencent.com/developer/article/1430988
docker安装kafka,zk:https://juejin.cn/post/6844903829624848398
标签:bin,eagle,--,server,kafka,集群,Kafka,安装 From: https://blog.51cto.com/u_13917663/6899877