安装kafka之前需要先安装zookeeper集群,虽然卡夫卡有自带的zk集群,但是建议还是使用单独的zk集群

下面是搭建kafka时候整理的一些学习笔记

1.卡夫卡角色
  消费者Consumer 消息队列中请求消息的客户端
  生产者Producer 想broker发布消息的客户端
  AMQP服务器端broker 接收生产者发布的消息,并路由给服务器中的队列
对于卡夫卡来说,一个broker为一个卡夫卡实例
主题概念(Topic):通常一个业务一个主题,一种类别  ?:卡夫卡集群中是否共享主题
分区概念(Partition):一个Topic的消息数据按照多个分区组织,Partition是卡夫卡消息队列组织中最小的单位
   ,一个分区可以看做事一个FIFO队列

卡夫卡会在每一台broker中备份Topic中的Partition

kafka虚拟机下载命令
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.1.0/kafka_2.10-0.10.1.0.tgz

配置文件:
server.properties

broker的基本的配置
broker.id  本机的broker在集群中的编号
port 当前的broker对外提供的tcp端口
host.name 当前broker服务绑定的ip地址,如果不配置,默认为localhost,dns域名解析有失败率,会导致文件句柄累计,
 导致linux系统崩溃
num.network.threads   broker进行网络线程处理的线程数
num.io.threads    broker进行IO处理的线程数,IO线程数要大于log.dirs的数量
socket.send.buffer.bytes  kafka发送消息缓冲区大小
socket.receive.buffer.bytes  kafka接收消息的缓冲区大小,kafka缓冲区用于接收消息,当到达一定数量时序列化到磁盘
socket.request.max.bytes  像kafka发送消息的最大数,数量不能超过java堆栈大小

log.dirs   队列中消息持久化的地方,配置多个用逗号分隔,当配置多个时,持久化时会查看哪个目录消息数比较少
num.partitions  一个topic默认分区的个数

zookeeper.connect zookeeper集群的ip和端口 ,用逗号分隔
zookeeper.connection.timeout.ms 卡夫卡集群连接zookeeper集群的超时时间

log的刷新策略一般使用默认的


log的注入策略
log.retention.hours 发送到卡夫卡的消息的失效时间 默认的是168个小时
message.max.bytes  每条消息能容纳的最大值 默认是1 注意如果你增大这个尺寸,你也必须增大你consumer的fetch 尺寸,这样consumer才能fetch到这些最大尺寸的消息。
default.replication.factor 每个topic中的备份数量,默认是1个副本,一般改为两个副本
replica.fetch.max.bytes topic可复制的消息的最大值,一般和每条消息能容纳的最大值相对应
log.segment.bytes  消息序列化到文件,文件的最大大小


log.retention.check.interval.ms 每个多长时间检查当前消息持久化目录是否存在,和消息持久化是否失效,单位是秒
log.cleaner.enable=false 是否启用log压缩  

其他选项
flush.messages 此项配置指定时间间隔:强制进行fsync持久化日志。例如,如果这个选项设置为1,那么每条消息之后都需要进行fsync,如果设置为5,则每5条消息就需要进行一次fsync。一般来说,建议你不要设置这个值。此参数的设置,需要在"数据可靠性"与"性能"之间做必要的权衡.如果此值过大,将会导致每次"fsync"的时间较长(IO阻塞),如果此值过小,将会导致"fsync"的次数较多,这也意味着整体的client请求有一定的延迟.物理server故障,将会导致没有fsync的消息丢失.

jbs 查看卡夫卡进程 ,jps是查看当前所有java进程Id的命令
后台启动kafka :./kafka-server-start.sh -daemon ../config/server.properties

创建topic命令                (zk地址)                  (topic名称)   (分区数)      (备份数)                     (消息的最大值)      (每条都需要持久化)
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 1 --replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1


其余更多kafka配置

http://www.cnblogs.com/rilley/p/5391268.html点击打开链接

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐