- 一、kafka集群搭建详细步骤
- 1、装好jdk,并配置好zookeeper、hdfs集群
- 2、下载好kafka安装包,解压。
- 3、进入解压后的kafkaconfig目录,主要是server.properties(kafka配置文件)
本文主要参考:http://blog.51cto.com/lee90/2067533,仅个人笔记使用。
cd /soft/kafka/config
vi /server.properties
修改如下:
#唯一的服务器id,每台机器分别不一样。
broker.id=001
#允许删掉主题
delete.topic.enable=true
#监听ip和端口
listeners=PLAINTEXT://192.168.56.131:9092
#监听端口
port=9092
#节点需要绑定的主机名称。如果没有设置,服务器会绑定到所有接口
host.name=192.168.56.131
#节点的主机名会通知给生产者和消费者。如果没有设置,它将会使用"host.name"的值(前提是设置了host.name)
#否则他会使用java.net.InetAddress.getCanonicalHostName()的返回值
advertised.listeners=PLAINTEXT://192.168.56.131:9092
# 接受网络请求的线程数
num.network.threads=3
# 进行磁盘IO的线程数
num.io.threads=8
# 套接字服务器使用的发送缓冲区大小
socket.send.buffer.bytes=102400
# 套接字服务器使用的接收缓冲区大小
socket.receive.buffer.bytes=102400
# 单个请求最大能接收的数据量
socket.request.max.bytes=104857600
#用来存储日志文件
log.dirs=/tmp/kafka-logs
# 每个主题的日志分区的默认数量。更多的分区允许更大的并行操作,但是它会导致节点产生更多的文件。副本数量,建议设置成3,免得单点故障
num.partitions=1
# 每个数据目录中的线程数,用于在启动时日志恢复,并在关闭时刷新。
num.recovery.threads.per.data.dir=1
############################# Log Flush Policy #############################
# Messages are immediately written to the filesystem but by default we only fsync() to sync
# the OS cache lazily. The following configurations control the flush of data to disk.
# There are a few important trade-offs here:
# 1. Durability: Unflushed data may be lost if you are not using replication.
# 2. Latency: Very large flush intervals may lead to latency spikes when the flush does occur as there will be a lot of data to flush.
# 3. Throughput: The flush is generally the most expensive operation, and a small flush interval may lead to exceessive seeks.
# The settings below allow one to configure the flush policy to flush data after a period of time or
# every N messages (or both). This can be done globally and overridden on a per-topic basis.
# 在强制刷新数据到磁盘执勤啊允许接收消息的数量
#log.flush.interval.messages=10000
# 在强制刷新之前,消息可以在日志中停留的最长时间
#log.flush.interval.ms=1000
#一个日志的最小存活时间,可以被删除
log.retention.hours=168
# 一个基于大小的日志保留策略。段将被从日志中删除只要剩下的部分段不低于log.retention.bytes。
#log.retention.bytes=1073741824
# 每一个日志段大小的最大值。当到达这个大小时,会生成一个新的片段。
log.segment.bytes=1073741824
# 检查日志段的时间间隔,看是否可以根据保留策略删除它们
log.retention.check.interval.ms=300000
# 这是一个以逗号为分割的部分,每一个都匹配一个Zookeeper,选举的时候依赖于zookeeper,写下zookeeper的地址
zookeeper.connect=192.168.56.130:2181,192.168.56.131:2181,192.168.56.132:2181
# 连接到Zookeeper的超时时间
zookeeper.connection.timeout.ms=6000
- 二、启动kafka集群,在每一台kafka机器上启动kafka
/soft/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
- 三、测试kafka的功能
- 1.创建Tipic
- #参数含义
- –replication-factor 2 #复制两份
- –partitions 2 #创建2个分区
- –topic #主题
kafka/bin/kafka-topics.sh --create --zookeeper node71:2181 --replication-factor 2 --partitions 3 --topic test - 2.在一台服务器上创建一个发布者
kafka/bin/kafka-console-producer.sh --broker-list node72:9092 --topic test - 3.创建一个订阅者
kafka/bin/kafka-console-consumer.sh --zookeeper node72:2181 --from-beginning --topic test - 4.查看所有的topic
- –cluster1 指的是你配置的zookeeper的集群的名称,这个在core-site.xml里面设置的
kafka/bin/kafka-topics.sh --list --zookeeper cluster1:2181 - 5.查看指定的topic状态
kafka/bin/kafka-topics.sh --describe --zookeeper node72:2181 --topic mysql-coupons