栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

通俗易懂、完整的kafka安装及使用——保姆级教程

通俗易懂、完整的kafka安装及使用——保姆级教程

通俗易懂、完整的kafka安装及使用——保姆级教程

author:陈镇坤27

日期:好久前写的了,忘了日期了

创作不易,转载请注明出处

大致阅读时间:20分钟

以下的教程,假设读者无linux、kafka、zookeeper、shell、内外网相关经验
——————————————————————————————

文章目录

通俗易懂、完整的kafka安装及使用——保姆级教程

一、准备二、开始安装

1、上传文件2、解压文件3、配置环境变量 三、修改zk配置四、修改Kafka配置

1.1、配置1.2、主要踩坑2、最完美的配置服务启动方案 五、安装监控工具

配置环境变量修改配置创建数据库,配置账号查看启动错误日志基本命令激活监控趋势图 六、遇到的困难

一、准备

​ 1、安装VMware,建议安装最高版本(否则可能遇到关闭服务器卡死,必须重启电脑才能恢复的情况)

​ 2、按照网上已有的教程,创建3台linux虚拟机,并各自配置固定的ip

​ 参考已有博客:https://blog.csdn.net/tandelin/article/details/87106883?utm_medium=distribute.pc_relevant.none-task-blog-title-5&spm=1001.2101.3001.4242

和 https://blog.csdn.net/qq_32278887/article/details/109273542

​ 3、搜索kafka官网,根据官网指引,找到下载页面,本文选择1.1.1版本

​ kafka是用Scala语言编写的,运行需要Scala支持,我们选择kafka 2.12-1.1.1.tgz包,“-”前面的数字代表Scala版本,后面代表kafka版本。关于版本的选择,参考博客:https://blog.csdn.net/merryxuan/article/details/107105416

​ 4、搜索zookeeper官网,找到下载页面,测试时选用的3.4.5版本(下面截图使用的是3.4.1版)。关于版本选择,需要参考项目现有的依赖,建议用这个网站查看适合自己某个框架版本的对应框架版本号区间:https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.12/1.1.1 (如何查看自己本机的zk版本:yum install -y nc 然后启动zk,最后echo stat|nc localhost 2181)

​ 5、安装SecureCRT,一款不错的远程连接Linux工具。目的利用SFTP命令上传文件(有空可以调整页面展示,舒心敲码)。

二、开始安装 1、上传文件

使用SecureCRT上传tgz包到服务器

相关命令:pwd cd 和 lpwd lcd ,上传使用put 文件 下载使用get 文件

这里出现点小插曲,因为服务器相关文件夹拒绝我的访问,所以我将上传文件放到了其他的文件夹,然后在利用mv 文件 目标目录 剪切过去。

2、解压文件
tar -zxvf tgz文件
3、配置环境变量
vi /etc/profile    阅览系统环境变量文件


# kafka2.12-1.1.1
export KAFKA_HOME=/data/apps/kafka_2.12-1.1.1
export PATH=$PATH:$KAFKA_HOME/bin

source /etc/profile   立即生效

其他:

问题:单机部署后,发现java代码连接不上,没报错,就是没反馈

解决:zk这里配置了server.0 并且创建了myid文件,然后在kafka那里配置了listener,两个都配置了

然后重启就好了

三、修改zk配置

zk的话,若需要集群配置zk服务,则需要快照目录写myid,还需要在配置文件中指定本zk服务的代号和地址(单机可操作可不操作)

vi zoo.cfg

server.0=ip地址:2888:3888 #为该zk应用分配代号
0表示服务器编号(必须唯一)、2888是集群中服务器与leader交换信息的端口,而3888是选举服务器时通信的端口

这个目录需要我们创建zkData,当然命名可以自己做

dataDir=/data/apps/zookeeper-3.4.10/data  #数据
dataLogDir=/data/apps/zookeeper-3.4.10/logs   #日志

然后在快照的目录里面创建一个myid文件,文件中输入一个之前设定的代号值

四、修改Kafka配置 1.1、配置
kafka的根目录
mkdir logs
再
vi config/server.properties
增加下面配置

############################# Server setting####################
broker.id=0  #服务唯一代号

#允许物理删除创建的topic
delete.topic.enble=true
#注意zk地址,由于是单机部署,只连一台即可
zookeeper.connect=localhost:2181
#日志存放目录
log.dirs=/data/apps/kafka_2.12-1.1.1/logs

#socket 服务监听对这个应用的请所有ip请求,如果不配置,则执行消费等请求时需要指定联机ip,使用localhost会报错
listeners=PLAINTEXT://0.0.0.0:9092  

#外部与本服务器的kafka通讯(如果是使用云服务器则必配,本地虚拟机则直接用虚拟机的ip即可)
#建立生产者与消费者之间的通道
advertised.listeners=PLAINTEXT://外网ip:9092  
#踩坑  https://blog.csdn.net/wc188996/article/details/86702641

#plaintext是什么
#https://www.liankexing.com/notetwo/12680

#9092是kafka的默认端口
1.2、主要踩坑

单机启动后通过脚本调试生产者和消费者是可以正常进行操作的,但是本地代码调试无反馈,判断是通讯失效,和配置问题,所以做了三个操作。把listeners的配置做上去,然后补充zk的server配置和myid配置,后两个估计无作用,但暂时没进行验证。

启动命令

 #按照配置文件的内容启动kafka服务
JMX_PORT=9988 /data/apps/kafka_2.12-1.1.1/bin/kafka-server-start.sh  -daemon /data/apps/kafka_2.12-1.1.1/config/server.properties 
#打开zk客户端(如果你需要去检查kafka的注册情况和消息发送情况的话)
    zkCli.sh start    
2、最完美的配置服务启动方案

参考这篇博客:https://blog.csdn.net/weixin_41877978/article/details/99467679

五、安装监控工具

这是官方的文档,比较简略

http://www.kafka-eagle.org/articles/docs/installation/linux-macos.html

配置环境变量 修改配置
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=内网ip:2181

cluster1.kafka.eagle.offset.storage=kafka
#把存储在zk的那行删除

kafka.eagle.driver=com.mysql.cj.jdbc.Driver
kafka.eagle.url=jdbc:mysql://数据库ip:8200/kafka_eagle?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=数据库账号
kafka.eagle.password=数据库密码


创建数据库,配置账号
创建账户
create user '账户名'@'%' identified by '密码';     '%'表示所有ip都可访问 

在此之前我用的是
insert into mysql.user(Host,User,Password) values('localhost','账户名',password('密码'));

然后报错
#Field 'ssl_cipher' doesn't have a default value
原因是之前的创建账户已经被废弃了

grant all privileges on 表名.* to 账户名@'%' identified by '密码';
flush privileges;
之前我只为这个库配置所有权限,然而登录400,还报错,日志说
 DruidDataSource.Druid-ConnectionPool-Create-308212988 - ERROR - create connection error, url: jdbc:mysql://193.112.220.108:8200/kafka_eagle?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull, errorCode 1045, state 28000
 java.sql.SQLException: Access denied for user 'root'@'106.52.233.210' (using password: YES)
 
于是我使用了
grant all privileges on *.* to 账户名@'%' identified by '密码'; 
flush privileges;
再顺序重启了kafka,kafka-eagle,发现登录没问题了


查看启动错误日志
cd logs
tail -100f error.log

大部分情况报错是因为数据库连接问题导致的

基本命令
ke.sh start
ke.sh stop
激活监控趋势图

要开启监控趋势图,需要在kafka的启动命令中加代码

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    #export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    #kafka-eagle的配置
    export KAFKA_HEAP_OPTS="-server -Xms1G -Xmx1G -XX:PermSize=128m 
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
 export JMX_PORT="9999"

fi

然后kafka便可以通过加的jmx端口收集到kafka的消息消费趋势情况

六、遇到的困难

第一个,单机部署后,java代码访问不了——kafka配置没有开放通讯地址

第二个,eagle监控登录不了,一直在加载——配置文件没有配置数据库或没有数据库不存在

第三个,登录后直接400——数据库问题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746349.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号