kafka传递文件_kafka处理大文件注意事项

这篇文章是我在粗略学习kafka时遇到的问题和网上查阅过的资料。kafka和java我都不是很熟悉,只知道基本的概念。文章中可能有疏漏和错误的地方,大家参考一下就好。有错误拜托大家指正!

broker端

配置文件需要配置的参数

message.max.bytes : kafka 会接收单个消息size的最大限制, 默认为1M左右。如果producer发送比这个大的消息,kafka默认会丢掉。producer可以从callback函数中获得错误码:10。

log.segment.bytes : kafka数据文件的大小。默认为1G, 需要确保此值大于一个消息的最大大小。

replica.fetch.max.bytes : broker可复制的消息的最大字节数, 默认为1M。这个值应该比message.max.bytes大,否则broker会接收此消息,但无法将此消息复制出去,从而造成数据丢失。

bin目录下的kafka-run-class.sh中需要配置的参数

kafka是由scala和java编写的。所以需要调一些jvm的参数。java的内存分为堆内内存和堆外内存。

-Xms2048m, -Xmx2048m,设置的是堆内内存。-Xms是初始可用的最大堆内内存。-Xmx设置的是最大可用的堆内内存。二者设置成一样是因为效率问题,可以让jvm少做一些运算。如果这两个参数设置的太小,kafka会出现java.lang.OutOfMemoryError: Java heap space的错误。

--XX:MaxDirectMemorySize=8192m。这个参数配置的太小,kafka会出现java.lang.OutOfMemoryError: Direct buffer memory的错误。 因为kafka的网络IO使用了java的nio中的DirectMemory的方式,而这个

你可能感兴趣的:(kafka传递文件)