kafka入门、安装详解
kafka是什么?
Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统。Kafka具有高吞吐量、内置分区、支持数据副本和容错的特性,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展能力,适合在大规模消息处理场景中使用。
l 分布式系统,易于向外扩展;
l 同时为发布和订阅提供高吞吐量;
l 支持多订阅者,当失败时能自动平衡消费者;
l 将消息持久化到磁盘,可用于批量消费;
一、安装kafka
kafka的安装需要依赖于jdk和zookeeper。(kafka 2.11-1.1.0版本才与JDK1.7兼容,更高版本需要JDK1.8)
1、yum 安装
yum过于简单,此处不再赘述!
2、二进制安装
Kafka官方下载:http://kafka.apache.org/downloads.html
Zookeeper官方下载:https://zookeeper.apache.org/releases.html
Jdk官方下载:https://www.oracle.com/java/technologies/downloads/
需要说明的是,kafka的安装依赖于Zookeeper,所以运行kafka需要先启动Zookeeper,zk的部署可参考《Zookeeper介绍与基本部署》。当然,kafka默认也内置了zk的启动脚本,在kafka安装路径的bin目录下,名称为zookeeper-server-start.sh,如果不想独立安装zk,可直接使用该脚本。
# 下载并解压kafka部署包至/usr/local/目录 tar -zxvf kafka_2.13-3.1.0.tgz -C /usr/local/ # 修改配置文件 vim config/zookeeper.properties vim config/server.properties # 重点配置参数说明: broker.id=0 #唯一标识,集群里每个broker的id需不同 listeners=PLAINTEXT://192.168.121.132:9092 #暴露服务,否则连接超时 log.dirs=/data/kafka #日志路径,路径需提前创建好,且必须有读写权限 zookeeper.connect=localhost:2181 #设置zk的连接地址及端口
启动zk:./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动kafka:./bin/kafka-server-start.sh -daemon config/server.properties
3、测试验证
注意:kafka高版本已不再使用”--zookeeper”参数来创建topic,而是采用” --bootstrap-server”来代替。
#创建topic ./bin/kafka-topics.sh --create --zookeeper localhost:9092 --replication-factor 1 --partitions 1 --topic panwei #旧版本创建方式 ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic panwei #查询topic详情 ./bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic panwei #查询所有topic ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list #修改topic参数配置 ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic panwei --parti-tions count #删除topic ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic panwei #创建生产者 ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic panwei #创建消费者(有非必须参数,分区与consumer之间的关系:一个分区不能分给两个consumer,但是两个分区可以分给一个consumer) ./bin/kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic panwei --from-beginning --group testgroup
二、kafka配置文件
Kafka配置文件目录:../config/server.properties
#是否允许删除topic,默认false不能手动删除 delete.topic.enable=true #当前机器在集群中的唯一标识,和zookeeper的myid性质一样 broker.id=0 #当前kafka服务侦听的地址和端口,端口默认是9092 listeners = PLAINTEXT://192.168.100.21:9092 #这个是borker进行网络处理的线程数 num.network.threads=3 #这个是borker进行I/O处理的线程数 num.io.threads=8 #发送缓冲区buffer大小,数据不是一下子就发送的,先会存储到缓冲区到达一定的大小后在发送,能提高性能 socket.send.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘 socket.receive.buffer.bytes=102400 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小 socket.request.max.bytes=104857600 #消息日志存放的路径 log.dirs=/opt/module/kafka_2.11-1.1.0/logs #默认的分区数,一个topic默认1个分区数 num.partitions=1 #每个数据目录用来日志恢复的线程数目 num.recovery.threads.per.data.dir=1 #默认消息的最大持久化时间,168小时,7天 log.retention.hours=168 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件 log.segment.bytes=1073741824 #每隔300000毫秒去检查上面配置的log失效时间 log.retention.check.interval.ms=300000 #是否启用log压缩,一般不用启用,启用的话可以提高性能 log.cleaner.enable=false #设置zookeeper的连接端口,集群多个地址用,分隔 zookeeper.connect=node21:2181,node22:2181,node23:2181 #设置zookeeper的连接超时时间 zookeeper.connection.timeout.ms=6000
---