Kafka安装配置之Broker配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Simon_09010817/article/details/83242856

                           Kafka安装配置之Broker配置

常规配置:

  • broker.id

每个broker都需要有一个标识符,使用broker.id来表示。它的默认值是0,也可以被设置成其他的任意整数。这个值在整个Kafka集群里必须是唯一的。

  • port

如果使用配置样本来启动Kafka,他会监听9092端口,可以修改为其他任意可用端口,如果使用1024以下的端口,需要使用root权限启动kafka。

  • zookeeper.connect

用于保存元素据的Zookeeper地址是通过zookeeper.connect来指定的。该配置参数是用冒号分隔的一组hostname:port/path列表。含义如下:
            hostname:是zookeeper服务器的机器或ip地址;
            port:是zookeeper客户端连接端口
            /path:是可选的zookeeper路径,作为kafka集群的chroot环境,如果不指定,默认使用根路径。

  • log.dirs

如果指定了多个路径,那么broker会根据“最少使用”原则,把同一个分区的日志片段保存到同一个路径下。

  • num.recovery.threads.per.data.dir

默认情况下,每个日志目录只是用一个线程。所配置的数字对应的是log.dirs指定的单个日志目录。也就是说,如果num.recovery.threads.per.data.dir被设置为8,并且log.dirs制定了3个路径,那么总共需要24个线程。

  • auto.create.topic.enable

默认情况下,kafka会在如下情形下自动创建主题:

                    当一个生产者开始往主题写入消息时;

                    当一个消费者开始往主题读取消息时;

                    当任意一个客户端向主题发送元数据请求时;

如果显式创建主题,不管是手动还是通过其他配置系统创建,都可以将其设为false。

 

默认配置:

  • num.partition

指定新创建的主题将包含多少分区。该参数默认值是1,要注意,我们可以增加主题的分区个数,但是不能减少分区的个数。

  • log.retention.ms

kafka默认使用log.retention.hours参数来配置时间,默认是168小时。还有其他两个参数:log.retention.minutes、log.retention.ms,三个参数作用是一样的,推荐使用log.retention.ms。如果配置了不止一个参数,kafka会优先选择最小的参数。

  • log.retention.bytes

kafka通过设置保留的消息字节数来判断消息是否过期,该配置作用在每个分区上,也就是说,如果一个包含8个分区的主题,并且log.retention.bytes被设置为1GB,那么该主题最多可保留8GB数据。如果同时设定了log.retention.bytes、log.retention.ms(或者其他时间参数)只要任意一个条件得到满足,消息就会被删除。

  • log.segment.bytes

以上的设置都作用在日志片段上,而不是作用在单个消息上。当消息到达broker时,它们被追加到分区的当前日志片段上。当日志片段大小达到log.segment.bytes指定的上限(默认为1GB)时,当前日志片段就会被关闭,一个新的日志片段被打开。如果主题的消息量不大,那么如何调整这个参数大小变的尤为重要。例如:如果一个主题每天只接收100MB的消息,而log.segment.bytes使用默认设置,那么需要10天时间才能填满一个日志片段。因为在日志片段被关闭之前消息时不会过期的,所有如果log.retention.ms设置为60480000(7天),那么日志片段最多需要17天才会过期。这是因为关闭日志片段需要10天的时间,而根据配置的过期时间,还需要再保留7天,因为要等到日志片段里的最后一个消息过期才能被删除。

日志片段的大小会影响使用时间戳获取偏移量。在使用时间戳获取日志偏移量时,Kafka会检查分区里最后修改时间大于指定时间戳的日志片段(已经被关闭的),该日志片段的前一个文件的最后修改时间小于指定时间戳,然后,kafka返回该日志片段(也就是文件名)开头的偏移量。对于使用时间戳获取偏移量的操作来说,日志片段越小,结果越准确。

  • log.segment.ms

它指定了多长时间之后日志片段会被关闭,和log.segment.bytes之间也不存在互斥问题,日志片段会在大小或时间达到上限时被关闭,就看哪个参数先满足条件。默认情况下,log.segment.ms没有设定值,所以只根据大小来关闭日志片段。在使用基于时间的日志片段时,如果多个分区的日志片段永远不能达到大小的上限,就会发生对磁盘的影响,因为broker在启动之后就开始计算日志片段的过期时间,对于那些数据量小的分区来说,日志片段的关闭总是同时发生。

  • message.max.bytes

broker通过设置message.max.bytes参数来限制单个消息的大小,默认时1000000,也就是1MB。该参数指的是压缩后的消息大小。这个值对性能有显著的影响。值越大,那么负责处理网络连接和请求的线程就需要花越多的时间来处理这些请求,他还会增加磁盘写入块的大小,从而影响IO吞吐量。

消费者和客户端设置的fetch.message.max.bytes必须与服务器设置的消息大小进行协调。如果这个值比message.max.bytes小,那么消费者就无法读取到比较大的消息,导致消费者被阻塞。为集群broker配置replica.fetch.max.bytes参数时,也遵循此原则


 

猜你喜欢

转载自blog.csdn.net/Simon_09010817/article/details/83242856