标签:
下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子。
我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 kafka 服务器,kafka集群需要依赖zookeeper集群,上一篇已经说道了zookeeper的搭建,方法请参考:http://www.cnblogs.com/chushiyaoyue/p/5615267.html
192.168.181.128 centos6.4
192.168.181.129 centos6.4
192.168.181.130 centos6.4
http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz
192.168.181.128 test1
192.168.181.129 test2
192.168.181.130 test3
#进入config目录 cd /home/rtmap/kafka_2.11-0.9.0.0/config #查看 [root@test1 config]# ll 总用量 64 -rw-r--r--. 1 root root 906 11月 21 2015 connect-console-sink.properties -rw-r--r--. 1 root root 909 11月 21 2015 connect-console-source.properties -rw-r--r--. 1 root root 2110 11月 21 2015 connect-distributed.properties -rw-r--r--. 1 root root 922 11月 21 2015 connect-file-sink.properties -rw-r--r--. 1 root root 920 11月 21 2015 connect-file-source.properties -rw-r--r--. 1 root root 1074 11月 21 2015 connect-log4j.properties -rw-r--r--. 1 root root 2055 11月 21 2015 connect-standalone.properties -rw-r--r--. 1 root root 1199 11月 21 2015 consumer.properties -rw-r--r--. 1 root root 4369 11月 21 2015 log4j.properties -rw-r--r--. 1 root root 2228 11月 21 2015 producer.properties -rw-r--r--. 1 root root 5675 3月 2 08:27 server.properties -rw-r--r--. 1 root root 3325 11月 21 2015 test-log4j.properties -rw-r--r--. 1 root root 1032 11月 21 2015 tools-log4j.properties -rw-r--r--. 1 root root 1023 11月 21 2015 zookeeper.properties
主要关注:server.properties 这个文件即可,我们可以发现在目录下:
broker.id=0 #当前机器在集群中的唯一标识,和zookeeper的myid性质一样 port=9092 #当前kafka对外提供服务的端口默认是9092 host.name=192.168.181.128 #这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题。 num.network.threads=3 #这个是borker进行网络处理的线程数 num.io.threads=8 #这个是borker进行I/O处理的线程数 log.dirs=/data/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个 socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能 socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘 socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小 num.partitions=1 #默认的分区数,一个topic默认1个分区数,一般建议等于集群主机数 log.retention.hours=168 #默认消息的最大持久化时间,168小时,7天 message.max.byte=5242880 #消息保存的最大值5M default.replication.factor=2 #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务,建议 集群数n -1个副本 replica.fetch.max.bytes=5242880 #取消息的最大直接数 log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件 log.retention.check.interval.ms=300000 #每隔300000毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除 log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能 zookeeper.connect=192.168.181.128:2181,192.168.181.129:2181,192.168.181.130:218 #设置zookeeper的连接端口
实际修改内容:
#broker.id=0 每台服务器的broker.id都不能相同 #hostname host.name=192.168.181.128 #在log.retention.hours=168 下面新增下面三项 message.max.byte=5242880 default.replication.factor=2 replica.fetch.max.bytes=5242880 #设置zookeeper的连接端口 zookeeper.connect=192.168.181.128:2181,192.168.181.129:2181,192.168.181.130:2181
[root@test1 bin]# pwd /home/rtmap/kafka_2.11-0.9.0.0/bin [root@test1 bin]# ./kafka-server-start.sh -daemon ../config/server.properties
#进入到kafka的bin目录下: cd /home/rtmap/kafka_2.11-0.9.0.0/bin #创建名为test123的topic [root@test1 bin]# ./kafka-topics.sh --create --zookeeper 192.168.181.128:2181,192.168.181.129:2181,192.168.181.130:2181 --replication-factor 2 --partitions 3 --topic test123 Created topic "test123". #创建成功提示 #解释 --replication-factor 2 #复本两份 --partitions 1 #创建3个分区 --topic #主题为shuaige
[root@test1 bin]# ./kafka-topics.sh --describe --zookeeper 192.168.181.128:2181,192.168.181.129:2181,192.168.181.130:2181 --topic test123 Topic:test123 PartitionCount:3 ReplicationFactor:2 Configs: Topic: test123 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1 Topic: test123 Partition: 1 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: test123 Partition: 2 Leader: 2 Replicas: 2,0 Isr: 2,0
#创建一个生产者 ./kafka-console-producer.sh --broker-list 192.168.181.128:9092 --topic test123
#创建一个生产者 ./kafka-console-consumer.sh --zookeeper 192.168.181.128:2181 --topic test123 --from-beginning
到此如果没明显的报错说明集群正常,可以使用了!
默认kafka的日志是保存在/home/rtmap/kafka_2.10-0.9.0.0/logs目录下的,这里说几个需要注意的日志
server.log #kafka的运行日志 state-change.log #kafka他是用zookeeper来保存状态,所以他可能会进行切换,切换的日志就保存在这里 controller.log #kafka选择一个节点作为“controller”,当发现有节点down掉的时候它负责在游泳分区的所有节点中选择新的leader,这使得Kafka可以批量的高效的管理所有分区节点的主从关系。如果controller down掉了,活着的节点中的一个会备切换为新的controller.
标签:
原文地址:http://www.cnblogs.com/chushiyaoyue/p/5617175.html