Kafka安装详细教程

 

一、安装Zookeeper

本文以 zookeeper-3.4.10 版本

1、下载

下载地址:https://zookeeper.apache.org/releases.html

2、解压

解压到 F:\tool 目录

3、修改配置

找到解压后  F:/tool/zookeeper-3.4.10/config/zoo_sample.cfg  文件

复制一份重命名为zoo.cfg (默认的名称是这个),

#修改配置
dataDir=f:/zookeeper/data

#新增配置
dataLogDir=f:/zookeeper/log

zoo.cfg文件说明:

①tickTime:维持leader与follower以及客户端之间的心跳频率时间(单位毫秒,默认2000ms)

②initLimit:允许follower从节点追随leader主节点时的初始延迟,默认是10次,也就是允许的延迟时间为2000*10=20秒。如果在这个时间内还没有连接上的话,leader就会认为follower有问题,将会抛弃你不跟你玩了。

③syncLimit:默认是5.leader与follower之间的协作允许最大延迟时长,tickTime * syncLimit=2000*5=10秒。10秒之内没响应,也会认为follower存在问题。

④dataDir:用于存储持久化文件(日志、快照之类的)的路径。默认 /tmp/zookeeper 最好不要用/tmp这类的目录,一般改为/var,var在Linux中是存放临时文件的。

⑤cliientPort:客户端连接的端口号。默认是2181

⑥maxClientCnxns:最大的客户端连接数。也就是最多允许多少个客户端连接本台机器的zk

⑦配置集群中所有的节点信息:3888端口用于在没有leader时所有节点在3888建立socket连接进行投票选举出leader;2888端口是follower从节点连接leader主节点的端口。

server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

在zk中,leader可以理解成是“谦让”出来的,1,2,3,4中谁是最大的谁就立马是leader

过半通过:一共4个节点有 4/2+1=3台通过就行。比如1,2,3启动了之后3就是leader,因为遵循的是过半通过原则。
 

4、添加系统环境变量:

       在系统变量中添加ZOOKEEPER_HOME = D:\Java\Tool\zookeeper-3.4.10

       编辑path系统变量,添加为路径%ZOOKEEPER_HOME%\bin

5、启动Zookeeper

使用 Dos  输入命令 :zkServer

 

二、安装kafka

1、下载

Kafka官网下载安装包 http://kafka.apache.org/downloads.html

我们下载第二种(已经被编译过的),将安装包存在在 /software/ 下

 

2、解压

解压到 F:/tool 目录

3、修改配置

配置文件目录:F:/tool/kafka_2.13-2.4.1/config

修改配置文件:F:/tool/kafka_2.13-2.4.1/config/server.properties

找到以下配置项修改(事先讲好文件夹:F:/tool/kafka/log)

log.dirs=F:/tool/kafka/log
zookeeper.connect=localhost:2181

配置文件说明

server.properties

#broker的全局唯一编号,不能重复
broker.id=0

#用来监听链接的端口,producer或consumer将在此端口建立连接
port=9092

#处理网络请求的线程数量
num.network.threads=3

#用来处理磁盘IO的线程数量
num.io.threads=8 

#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400 

#接受套接字的缓冲区大小
socket.receive.buffer.bytes=102400 

#请求套接字的缓冲区大小
socket.request.max.bytes=104857600 

#kafka消息存放的路径
log.dirs=/home/servers-kafka/logs/kafka 

#topic在当前broker上的分片个数
num.partitions=2 

#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1 

#segment文件保留的最长时间,超时将被删除
log.retention.hours=168 

#滚动生成新的segment文件的最大时间
log.roll.hours=168 

#日志文件中每个segment的大小,默认为1G
log.segment.bytes=1073741824

#周期性检查文件大小的时间
log.retention.check.interval.ms=300000 

#日志清理是否打开
log.cleaner.enable=true 

#broker需要使用zookeeper保存meta数据
zookeeper.connect=hadoop02:2181,hadoop03:2181,hadoop04:2181 

#zookeeper链接超时时间
zookeeper.connection.timeout.ms=6000 

#partion buffer中,消息的条数达到阈值,将触发flush到磁盘
log.flush.interval.messages=10000 

#消息buffer的时间,达到阈值,将触发flush到磁盘
log.flush.interval.ms=3000 

#删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=true 

#此处的host.name为本机IP(重要),如果不改,则客户端会抛出:Producerconnection to localhost:9092 unsuccessful 错误!
host.name=hadoop02

 consumer.properties

# zookeeper连接服务器地址
zookeeper.connect=hadoop02:2181,hadoop03:2181,hadoop04:2181 

# zookeeper的session过期时间,默认5000ms,用于检测消费者是否挂掉
zookeeper.session.timeout.ms=5000 

#当消费者挂掉,其他消费者要等该指定时间才能检查到并且触发重新负载均衡
zookeeper.connection.timeout.ms=10000 

# 指定多久消费者更新offset到zookeeper中。注意offset更新时基于time而不是每次获得的消息。一旦在更新zookeeper发生异常并重启,将可能拿到已拿到过的消息
zookeeper.sync.time.ms=2000 

#指定消费组
group.id=xxx 

# 当consumer消费一定量的消息之后,将会自动向zookeeper提交offset信息
# 注意offset信息并不是每消费一次消息就向zk提交一次,而是现在本地保存(内存),并定期提交,默认为true
auto.commit.enable=true 

# 自动更新时间。默认60 * 1000
auto.commit.interval.ms=1000 

# 当前consumer的标识,可以设定,也可以有系统生成,主要用来跟踪消息消费情况,便于观察
conusmer.id=xxx 

# 消费者客户端编号,用于区分不同客户端,默认客户端程序自动产生
client.id=xxxx 

# 最大取多少块缓存到消费者(默认10)
queued.max.message.chunks=50 

# 当有新的consumer加入到group时,将会reblance,此后将会有partitions的消费端迁移到新  的consumer上,如果一个consumer获得了某个partition的消费权限,那么它将会向zk注册"Partition Owner registry"节点信息,但是有可能此时旧的consumer尚没有释放此节点, 此值用于控制,注册节点的重试次数.
rebalance.max.retries=5 

# 获取消息的最大尺寸,broker不会像consumer输出大于此值的消息chunk 每次feth将得到多条消息,此值为总大小,提升此值,将会消耗更多的consumer端内存
fetch.min.bytes=6553600 

# 当消息的尺寸不足时,server阻塞的时间,如果超时,消息将立即发送给consumer
fetch.wait.max.ms=5000
socket.receive.buffer.bytes=655360 

# 如果zookeeper没有offset值或offset值超出范围。那么就给个初始的offset。有smallest、largest、anything可选,分别表示给当前最小的offset、当前最大的offset、抛异常。默认largest
auto.offset.reset=smallest

# 指定序列化处理类
derializer.class=kafka.serializer.DefaultDecoder

 

4、启动kafka

注意:先zookeeper在启动,再启动kafka

进入kafka目录:F:\tool\kafka_2.13-2.4.1

运行命令:

.\bin\windows\kafka-server-start.bat .\config\server.properties

可能会报错:“找不到或无法加载主类 Files\java\jdk-9.0.1\lib;C:\Program”

 解决(3)的办法:

    在kafka安装目录中找到bin\windows目录中的kafka-run-class.bat为%CLASSPATH%加上双引号(可用Matlab打开,并进行搜索)

    修改前:setCOMMAND=%JAVA%%KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS%%KAFKA_LOG4J_OPTS% -cp%CLASSPATH% %KAFKA_OPTS% %*   

    修改后:SetCOMMAND=%JAVA%%KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS%%KAFKA_LOG4J_OPTS% -cp"%CLASSPATH%"%KAFKA_OPTS% %*
 

修改之后重新启动

启动成功!

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值