kafka集群搭建以及遇到的异常

1、kafka下载

官网地址:http://kafka.apache.org/ 

2、我的环境

Red Hat Linux 7.0、jdk1.8.0_144、zookeeper-3.4.10、kafka_2.12-0.11、服务器3台(虚拟机)

3、安装kafka

a、下载kafka_2.12-0.11压缩包,解压到指定目录


b、修改配置文件server.properties(以节点:192.168.34.128为例),配置文件都有详细英文说明


broker.id=128    #节点的ID,必须与其它节点不同
delete.topic.enable=true 
listeners=PLAINTEXT://:9092  #监听端口
advertised.listeners=PLAINTEXT://192.168.34.128:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
num.network.threads=3  #接受网络请求的线程数
num.io.threads=8   #进行磁盘IO的线程数
socket.send.buffer.bytes=102400   #套接字服务器使用的发送缓冲区大小
socket.receive.buffer.bytes=102400  #套接字服务器使用的接收缓冲区大小
socket.request.max.bytes=104857600  #单个请求最大能接收的数据量
log.dirs=/app/soft/data/kafka_data  #指定存储日志文件目录
num.partitions=6  # 每个主题的日志分区的默认数量
num.recovery.threads.per.data.dir=1 # 每个数据目录中的线程数,用于在启动时日志恢复,并在关闭时刷新。
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.flush.interval.messages=10000  # 在强制刷新数据到磁盘执勤啊允许接收消息的数量
log.flush.interval.ms=1000  # 在强制刷新之前,消息可以在日志中停留的最长时间
log.retention.hours=168  # 一个日志的最小存活时间,可以被删除
log.segment.bytes=1073741824 #指定数据分割的文件大小
log.retention.check.interval.ms=300000  # 检查日志段的时间间隔,看是否可以根据保留策略删除它们
zookeeper.connect=192.168.34.128:2181,192.168.34.129:2181,192.168.34.130:2181 这是一个以逗号为分割的部分,每一个都匹配一个Zookeeper
zookeeper.connection.timeout.ms=6000  #连接zk的超时时间
group.initial.rebalance.delay.ms=0

其它两个节点broker.id、listeners、advertised.listeners修改对应的值即可,这里就不一一列举了!!!

c、启动kafka集群

nohup  bin/kafka-server-start.sh  config/server.properties > /dev/null &

3台服务器分别执行这个命令就可以启动kafka了

d、启动过程中可能出现的异常

Java HotSpot(TM) 64-Bit Server VM warning: INFO:os::commit_memory(0x00000006fff80000, 2863661056, 0) failed; error=’Cannotallocate memory’ (errno=12

原因就是内存不够引起的,修改kafka bin目录下的 kafka-server-start.sh,调整下面这三个值即可,我这里是虚拟机,公司的服务器不方便给大家看,总之根据自己服务器的内存情况设置即可!!!



1、 -Xms :表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。有可能真的按照这样的一个规则分配时,设计出的软件还没有能够运行得起来就挂了。
2、 -Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。
3、 -XX:newSize:表示新生代初始内存的大小,应该小于 -Xms的值;
4、 -XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于 -Xmx的值;
5、 -Xmn:至于这个参数则是对 -XX:newSize、-XX:MaxnewSize两个参数的同时配置,也就是说如果通过-Xmn来配置新生代的内存大小,那么-XX:newSize = -XX:MaxnewSize = -Xmn,虽然会很方便,但需要注意的是这个参数是在JDK1.4版本以后才使用的。

e、 发送消息出现这样的异常:Failed to send messages after 3tries.

Exception in thread"main" kafka.common.FailedToSendMessageException: Failed to sendmessages after 3 tries.

atkafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)

atkafka.producer.Producer.send(Producer.scala:76)

at kafka.javaapi.producer.Producer.send(Producer.scala:33)

atcom.tuan55.kafka.test.TestP.main(TestP.java:20)

原因就是kafka服务可能挂了,可以查看kafka的监听端口,netstat -nltp | grep  9092 或者jps命令都可以

f、启动kafka时,发现zookeeper不能启动了,删除zookeeper_server.pid、zookeeper.out再重启,如果还不能启动,再删除versio-2继续重启


g、解决掉这些问题,kafka就可以用了,kafka的命令以及代码中的简单使用我在上期已经写了,安装就这些了,都是自己的个人总结,欢迎大家来吐槽,我会及时修改内容,谢谢!!!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燕少༒江湖

给我一份鼓励!谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值