您的位置:首页 > 其它

kafka 安装配置

2017-07-25 10:35 281 查看
一、Zookeeper的安装与配置

1.安装

解压安装文件到zookeeper

tar -zxf zookeeper-3.4.10.tar.gz

重命名

sudo mv zookeeper-3.4.10 /usr/local/

2. 配置

创建数据目录tmp/data

mkdir -p /var/data/zookeeper/data

sudo chmod 777 /var/data/zookeeper/data

将zoo_sample.cfg复制到zoo.cfg

cp /usr/local/zookeeper-3.4.10/conf/zoo_sample.cfg

/usr/local/zookeeper-3.4.10/conf/zoo.cfg

编辑zookeeper配置文件

sudo nano /usr/local/zookeeper-3.4.10/conf/zoo.cfg

改写dataDir目录位置

dataDir=/var/data/zookeeper/data

修改log目录

dataLogDir=/var/log/zookeeper/logs

告知zookeeper集群信息 2888是zookeeper服务之间通信的端口;3888是zookeeper与其他应用程序通信的端口

server.0=node1:2888:3888

server.1=node2:2888:3888

server.2=node3:2888:3888

3.将安装文件发送到其他节点

//将zookeeper目录发送到node2上

scp -r ~/zookeeper-3.4.10 QCloud@192.168.1.16:/usr/local

//将zookeeper目录发送到node3上

scp -r ~/zookeeper-3.4.10 QCloud@192.168.1.17:/usr/local

在master上运行:

sudo nano /var/zookeeper/data/myid

//输入 0 保存退出

在node2上运行:

sudo nano /var/zookeeper/data/myid

//输入 1 保存退出

在node3上运行:

sudo nano /var/zookeeper/data/myid

//输入 2 保存退出

每台机器都要操作

sudo chmod 757 -R /usr/local/zookeeper-3.4.10

启动zookeeper

每台机器都要启动

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh start

关闭zookeeper

每台机器都要关闭

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh stop

验证机器状态

可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),如下所示,是在ZooKeeper集群中的每个结点上查询的结果。

cd ~/zookeeper/bin

/usr/local/zookeeper-3.4.10/bin/zkServer.sh status

注:只有在集群所有机器都启动的情况下才可以查看

ps:记得修改防火墙配置

二、kafka的安装配置

1.安装

sudo tar -zxf kafka_2.10-0.9.0.0.tgz -C /usr/local

2.配置

cd /usr/local/kafka_2.10-0.9.0.0/config

配置生成数据存放目录

sudo mkdir -p /var/log/kafka/logs

修改数据目录的属组和属主

sudo chown -R QCloud:QCloud /usr/local/kafka

sudo nano server.properties

broker.id=0 #当前机器在kafka机器里唯一标识,与zookeeper的myid一个意思,由于我使用独立zookeeper这里可以注释掉

port=9092 #socket监听的端口

host.name=node1#broker绑定的IP,我这里三台机器都绑定了,后面远程复制的时候记得修改

num.network.threads=3 #broker处理网络的线程数目

num.io.threads=8 #broker处理IO的线程数目

socket.send.buffer.bytes=102400#kafka发送数据缓冲区的大小,到达阈值才发送

socket.receive.buffer.bytes=102400#kafka接收数据缓冲区的大小,达到阈值才落地

socket.request.max.bytes=104857600#kafka所能接受的数据最大值,100MB,这个值应该小于机器配置的Java heap,一般Java heap为内存的1/4

log.dirs=/var/log/kafka/logs#存储消息的目录位置

num.partitions=1#每个主题的默认分区数目,更多的分区可以允许更多的消费,可以提高性能

num.recovery.threads.per.data.dir#在kafka启动和关闭flush时,还原日志时,对于每个数据目录所能使用的线程数目

log.flush.interval.message=10000#当消息达到10000条时就会强制刷一次数据到磁盘

log.flush.interval.ms=1000 #每过1秒就会强制刷数据到磁盘,单位毫秒

log.retention.hours=16#消息最大持久化时间,单位小时,即7天

log.retention.bytes=1073741824#一种持久化策略,当剩余段文件不低于这个阈值,当前段就会从日志消息中删除

log.segment.bytes=1073741824#一个段文件的最大值,达到最大值会另起一个新的segment

log.retention.check.interval.ms=300000#每300秒去检验一下段文件是否能被删除

zookeeper.connect=192.168.1.15:2181,192.168.1.16:2181,192.168.1.17:2181 #设置zookeeper的端口

zookeeper.connect.timeout.ms=6000 #连接zookeeper的超时时间

ps:其他节点只需要修改hostname即可

测试

先启动zookeeper

/usr/local/zookeeper-3.4.10/bin/zkServer.sh start

各个节点启动kafka

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

关闭kafka集群

./kafka-server-stop.sh

创建一个Topic实例:

./kafka-topics.sh –create –zookeeper 192.168.1.15:2181 –replication-factor 3 –partitions 1 –topic hello

在一台机器上创建一个发布者

./kafka-console-producer.sh –broker-list 192.168.1.16:9092 –topic hello

在一台机器上创建一个订阅者

./kafka-console-consumer.sh –zookeeper 192.168.1.17:2181 –topic hello –from-beginning

至此搭建完毕

kafka配置优化

配置优化都是修改server.properties文件中参数值

1.网络和io操作线程配置优化

broker处理消息的最大线程数

num.network.threads=xxx

broker处理磁盘IO的线程数

num.io.threads=xxx

建议配置: 一般num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1.

num.io.threads主要进行磁盘io操作,高峰期可能有些io等待,因此配置需要大些。配置线程数量为cpu核数2倍,最大不超过3倍.

2.log数据文件刷新策略

为了大幅度提高producer写入吞吐量,需要定期批量写文件。 建议配置:

每当producer写入10000条消息时,刷数据到磁盘

log.flush.interval.messages=10000

每间隔1秒钟时间,刷数据到磁盘

log.flush.interval.ms=1000

3.日志保留策略配置

当kafka server的被写入海量消息后,会生成很多数据文件,且占用大量磁盘空间,如果不及时清理,可能磁盘空间不够用,kafka默认是保留7天。

建议配置:

保留三天,也可以更短

log.retention.hours=72

段文件配置1GB,有利于快速回收磁盘空间,重启kafka加载也会加快(如果文件过小,则文件数量比较多,

kafka启动时是单线程扫描目录(log.dir)下所有数据文件)

log.segment.bytes=1073741824

4.配置jmx服务

kafka server中默认是不启动jmx端口的,需要用户自己配置

vim bin/kafka-run-class.sh

最前面添加一行

JMX_PORT=8060
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: