Kafka系列之—Kafka Broker安装(三)

一 下载

Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads.html

Kafka系列之—Kafka Broker安装(三)_第1张图片

二 安装

将Kafka安装在/usr/local/kafka目录下,使用之前配置好的Zookeeper,并把消息日志保存在/tmp/kafka-logs目录下

tar -zxf kafka_2.12-3.1.1.tgz
mv kafka_2.12-3.1.1 /usr/local/kafka
mkdir /tmp/kafka-logs

启动kafka: 

/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

测试发布消息:

/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

查看已有topic列表:

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

查看在指定topic信息: 

 /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --describe topic test

在较新版本(2.2 及更高版本)的 Kafka 不再需要 ZooKeeper 连接字符串,即- -zookeeper localhost:2181。使用 Kafka Broker的 --bootstrap-server localhost:9092来替代- -zookeeper localhost:2181。

java环境变量配置完  source /etc/profile 生效


较新版本使用下面命令:

/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test --partitions 1 --replication-factor 1

查看已有topic列表: 

./kafka-topics.sh --list --bootstrap-server localhost:9092

 查看指定topic信息:

/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe topic test

往测试主题上发布消息:

/usr/local/kafka/bin/kafka-console-producer.sh  --broker-list localhost:9092 --topic test

>test message 1

从测试主题上读取消息:

/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092  --topic test --from-beginning

三 broker的常规配置

3.1 broker.id

每个broker都需要一个标识符,使用broker.id表示,默认值为0,建议设置为与机器名有相关性的整数便于维护。

3.2 port

如果使用配置样本来启动kafka,会默认监听9092端口。可以修改port端口,注意使用1024以下端口,需要root权限启动kafka,不建议这么做。

3.3 zookeeper.connect

用于保存broker元数据的zookeeper地址,localhost:2181表示这个zookeeper地址是运行在本地的2181上        

3.4 log.dirs 

在磁盘上存放消息的路径

3.5 num.recovery.threads.per.data.dir

配置处理日志片段的的线程池,所配置的数字对应的是log.dirs指定的单个日志目录,例如 num.recovery.threads.per.data.dis=8, log.dirs指定了三个目录,则需要24个线程。

3.6 auto.create.topics.enable

是否自动创建topics主题,如果是通过手动显示创建,则可以设置为false

四 主题的默认配置

4.1 num.partitions

指定新创建的主题将包含多少个分区,如果启用了主题自动创建功能,主题分区的个数就是该参数指定的值,默认为1,要注意,我们可以增加分区的个数,但是不能减少分区的个数,所以,如果要让一个主题的分区个数少于num.partitions指定的值,需要手动创建该主题。

如果每秒要从主题读取和写入的数据为1GB,并且每个消费者每秒可以处理500MB的数据,那么至少需要20个分区。这样就可以让20个消费者同时去读取这些分区。从而达到每秒1GB的吞吐量。

4.2 log.retention.ms

根据配置时间来决定数据可以被保留多久,默认是168小时,也就是一周。

4.3 log.retention.bytes

另一种方式是通过判断设置的字节数来决定消息过期时间,如果log.retention.ms时间且配置了 log.retention.bytes字节数,那么只要满足一个条件消息就会被删除,log.retention.bytes字节数作用在每个分区上,例如一个包含8个分区的主题log.retention.bytes被设置为1G,那么这个主题最多可以保留8G。

4.4 log.segment.bytes

以上的设置都是作用在日志片段上,而不是作用在单个消息上。当消息到达broker时,它们会被追加到分区的当前日志片段上,当日志片段大小达到设置的上限(默认是1G),当前日志片段就会被关闭,就开始等待过期。日志片段在被关闭之前消息是不会过期的。如果log.retention.ms设置为1周,而10天才能填满当前日志片段,则消息过期时间最多需要17天才过期。

4.5 log.segment.ms

另一个可以控制日志片段关闭时间的参数,它指定了多长时间之后日志片段被关闭。

4.6 message.max.bytes

限制单个消息的大小,默认为1MB,指的是压缩后的大小。

四 集群部署

vim server.properties
broker.id=1
port=9092
#内网ip
listeners=PLAINTEXT://0.0.0.0:9092
#公网ip
advertised.listeners=PLAINTEXT://36.135.128.61:9092
log.dirs=/home/kafka/kafka-logs/1
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

复制kafka:

cp -r kafka1 kafka2
vim server.properties
broker.id=2
port=9093
#内网ip
listeners=PLAINTEXT://0.0.0.0:9093
#公网ip
advertised.listeners=PLAINTEXT://36.135.128.61:9093
log.dirs=/home/kafka/kafka-logs/2
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
cp -r kafka1 kafka3
vim server.properties
broker.id=3
port=9094
#内网ip
listeners=PLAINTEXT://0.0.0.0:9094
#公网ip
advertised.listeners=PLAINTEXT://36.135.128.61:9094
log.dirs=/home/kafka/kafka-logs/3
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

启动kfka:

./kafka-server-start.sh -daemon ../config/server.properties &

你可能感兴趣的:(Kafka,zookeeper,kafka,zookeeper,分布式)