step 1: 下载代码

你可以登录Apache kafka 官方下载。
http://kafka.apache.org/downloads.html

下载和自己系统匹配的

需要说明的是,kafka的安装依赖于zk,zk的部署可直接参考《Zookeeper介绍与基本部署》。当然,kafka默认也内置了zk的启动脚本,在kafka安装路径的bin目录下,名称为zookeeper-server-start.sh,如果不想独立安装zk,可直接使用该脚本。

CP 可以拷贝自己存放的位置,建议:/usr/local/

tar xf kafka_2.12-2.2.0.tgz -C /usr/local/

cd /usr/local

ln -s kafka_2.12-2.2.0 kafka

配置

kafka主配置文件为/usr/local/kafka/config/server.properties,配置示例如下:

broker.id=0
 listeners=PLAINTEXT://192.168.0.29:9092
 num.network.threads=3
 num.io.threads=8
 socket.send.buffer.bytes=102400
 socket.receive.buffer.bytes=102400
 socket.request.max.bytes=104857600
 log.dirs=/data/kafka/logs
 num.partitions=3
 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.retention.hours=168
 log.segment.bytes=1073741824
 log.retention.check.interval.ms=300000
 zookeeper.connect=192.168.0.29:2181,192.168.0.195:2181,192.168.0.27:2181
 zookeeper.connection.timeout.ms=6000
 group.initial.rebalance.delay.ms=0
 auto.create.topics.enable=true
 delete.topics.enable=true


配置说明:

  • broker.id:每个broker在集群中的唯一标识,正整数。当该服务器的ip地址发生变更,但broker.id未变,则不会影响consumers的消费情况
  • listeners:kafka的监听地址与端口,在实际测试中如果写0.0.0.0会报错。
  • num.network.threads:kafka用于处理网络请求的线程数
  • num.io.threads:kafka用于处理磁盘io的线程数
  • socket.send.buffer.bytes:发送数据的缓冲区
  • socket.receive.buffer.bytes:接收数据的缓冲区
  • socket.request.max.bytes:允许接收的最大数据包的大小(防止数据包过大导致OOM)
  • log.dirs:kakfa用于保存数据的目录,所有的消息都会存储在该目录当中。可以通过逗号来指定多个路径,kafka会根据最少被使用的原则选择目录分配新的partition。需要说明的是,kafka在分配partition的时候选择的原则不是按照磁盘空间大小来定的,而是根据分配的partition的个数多少而定
  • num.partitions:设置新创建的topic的默认分区数
  • number.recovery.threads.per.data.dir:用于恢复每个数据目录时启动的线程数
  • log.retention.hours:配置kafka中消息保存的时间,还支持log.retention.minutes和log.retention.ms。如果多个同时设置会选择时间最短的配置,默认为7天。
  • log.retention.check.interval.ms:用于检测数据过期的周期
  • log.segment.bytes:配置partition中每个segment数据文件的大小。默认为1GB。超出该大小后,会自动创建一个新的segment文件。
  • zookeeper.connect:指定连接的zk的地址,zk中存储了broker的元数据信息。可以通过逗号来设置多个值。格式为:hostname:port/path。hostname为zk的主机名或ip,port为zk监听的端口。/path表示kafka的元数据存储到zk上的目录,如果不设置,默认为根目录
  • zookeeper.connection.timeout:kafka连接zk的超时时间
  • group.initial.rebalance.delay.ms:在实际环境当中,当将多个consumer加入到一个空的consumer group中时,每加入一个consumer就会触发一次对partition消费的重平衡,如果加入100个,就得重平衡100次,这个过程就会变得非常耗时。通过设置该参数,可以延迟重平衡的时间,比如有100个consumer会在10s内全部加入到一个consumer group中,就可以将该值设置为10s,10s之后,只需要做一次重平衡即可。默认为0则代表不开启该特性。
  • auto.create.topics.enable:当有producer向一个不存在的topic中写入消息时,是否自动创建该topic
  • delete.topics.enable:kafka提供了删除topic的功能,但默认并不会直接将topic数据物理删除。如果要从物理上删除(删除topic后,数据文件也一并删除),则需要将此项设置为true

Step 2: 启动服务

运行kafka需要使用Zookeeper,所以你需要先启动Zookeeper,如果你没有Zookeeper,你可以使用kafka自带打包和配置好的Zookeeper(PS:在kafka包里)。

在和kafka一个目录bin文件夹下面;

kafka 依赖包 kafka依赖zk吗_flink

//这是前台启动,启动以后,当前就无法进行其他操作(不推荐)
 ./zookeeper-server-start.sh ../config/zookeeper.properties//后台启动(推荐)
 ./zookeeper-server-start.sh ../config/zookeeper.properties 1>/dev/null 2>&1 &


 

现在启动kafka

config/server1.properties:
    broker.id=0
    listeners=PLAINTEXT://192.168.10.130:9092  (换成自己机器的IP)
    log.dirs=kafka-logs
    zookeeper.connect=localhost:2181
主要是的这些,默认的就是9092和2181 如果测试可以不用修改任何同喜

//后台启动kafka
 ./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &

Step 3:创建一个主题

创建一个名为“test”的Topic,只有一个分区和备份(2181是zookeeper的默认端口)

./kafka-topics.sh --create --zookeeper localhost:2181 --config max.message.bytes=12800000 --config flush.messages=1 --replication-factor 1 --partitions 1 --topic test

命令解析:
--create: 指定创建topic动作

--topic:指定新建topic的名称

--zookeeper: 指定kafka连接zk的连接url,该值和server.properties文件中的配置项{zookeeper.connect}一样

--config:指定当前topic上有效的参数值,参数列表参考文档为: http://kafka.apache.org/082/documentation.html#brokerconfigs

--partitions:指定当前创建的kafka分区数量,默认为1个

--replication-factor:指定每个分区的复制因子个数,默认1个
 

创建好之后,可以通过运行以下命令,查看已创建的topic信息:

>./kafka-topics.sh --list --zookeeper localhost:2181

显示:test

未完后续继续