事无巨细 Apache Kafka 0.9.0.1 集群环境搭建
Kafka集群环境依赖于Zookeeper环境。因此我们的环境搭建实际分为两部分。Zookeeper环境搭建和Kafka环境搭建。
Zookeeper 3.4.8集群搭建
部署安装包
下载
1
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
解压
1
tar -xvzf zookeeper-3.4.8.tar.gz -C ~/
配置Zookeeper
按照理解,应该只需制定Zookeeper集群的节点信息即可。老套路,拷贝配置文件模版
1
cp conf/zoo_sample.cfg conf/zoo.cfg
配置集群信息
1
vim conf/zoo.cfg
修改内容如下
1
2
3
server.14=master:2888:3888
server.15=slave15:2888:3888
server.16=slave16:2888:3888
拷贝到其他节点
1
2
scp -r zookeeper-3.4.8/ slave15:~/
scp -r zookeeper-3.4.8/ slave16:~/
启动Zookeeper
在集群的每个节点上执行
1
bin/zkServer.sh start
通过查看日志发现启动失败,异常信息:
Caused by: java.lang.IllegalArgumentException: /home/dps-hadoop/zookeeper-3.4.8/data/myid file is missing at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:341) at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:119) … 2 more
缺少myid标识文件,即一个给节点标识的文件。解决方案,在每个创建该文件并写入该节点标识即可。例如,主节点上:
1
echo 14 > /home/dps-hadoop/zookeeper-3.4.8/data/myid
注意,这里的myid编号,要跟zoo.cfg里配置的server.${myid}匹配,否则会报错:
java.lang.RuntimeException: My id xx not in the peer list
Kafka集群搭建
下载安装包
1
wget http://mirrors.cnnic.cn/apache/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz
解压
1
tar -xvf kafka_2.11-0.9.0.1.tgz -C ~/
配置Kafka
按照理解,应该需要配置zookeeper的地址即可。修改server.properties配置文件
1
vim config/server.properties
修改内容如下
1
2
3
broker.id=14
log.dirs=/home/dps-hadoop/logs/kafka-logs
zookeeper.connect=master:2181,slave15:2181,slave16:2181
拷贝到其他节点,在其他节点上对应修改broker.id即可。
1
2
scp -r kafka_2.11-0.9.0.1/ slave15:~/
scp -r kafka_2.11-0.9.0.1/ slave16:~/
启动Kafka
在每个节点上执行
1
bin/kafka-server-start.sh -daemon config/server.properties
验证安装
创建一个topic
1
bin/kafka-topics.sh --create --zookeeper master:2181,slave15:2181,slave16:2181 --replication-factor 3 --partitions 1 --topic dps-kafka-test-topic
查看集群状态
1
bin/kafka-topics.sh --describe --zookeeper master:2181,slave15:2181,slave16:2181 --topic dps-kafka-test-topic
可见,此时15节点被选为Leader,topic有三个备份分别在我集群的3个节点上。
生产消息
1
bin/kafka-console-producer.sh --broker-list master:9092,slave15:9092,slave16:9092 --topic dps-kafka-test-topic
1
2
3
4
5
...
message one
;
message tow
^C
消费消息
1
bin/kafka-console-consumer.sh --zookeeper master:2181,slave15:2181,slave16:2181 --from-beginning --topic dps-kafka-test-topic
一切ok。高可用的测试,这里就不做了。可参考官方文档。