Kafka集群搭建


环境准备

  • 服务器集群
    我用的CentOS-6.7版本的3个虚拟机,主机名为hadoop01、hadoop02、hadoop03,这3台虚拟机既是zookeeper集群,又是kafka集群(但在生产环境中,这两个集群一般搭建在不同的机架中),另外我会使用hadoop用户搭建集群(生产环境中root用户不是可以任意使用的)
    关于虚拟机的安装可以参考以下两篇文章:
    在Windows中安装一台Linux虚拟机
    通过已有的虚拟机克隆四台虚拟机

  • Zookeeper集群
    参考zookeeper-3.4.10的安装配置

  • kafka安装包
    下载地址:https://mirrors.aliyun.com/apache/kafka/
    我用的kafka_2.11-0.10.2.1.tgz


1. kafka安装包上传到服务器并解压

[hadoop@hadoop01 ~]tar -zxvf /opt/soft/kafka_2.11-0.10.2.1.tgz -C /opt/apps/

2. 进入kafka的config目录下,修改server.properties文件

[hadoop@hadoop01 ~]$ cd /opt/apps/kafka_2.11-0.10.2.1/config/
[hadoop@hadoop01 config]$ vim server.properties

broker.id=1
host.name=192.168.42.101
log.dirs=/opt/data/kafka
zookeeper.connect=hadoop01:2181,hadoop02:2181,hadoop03:2181

说明:

  • 只修改列出的4个配置即可,其余保持默认
  • host.name这个配置在原来的文件中没有,需要自己添加,而且建议写成IP地址而不是主机名,这个配置在Kafka单节点或者伪分布式集群中不需要配置
  • broker.id在每个节点上是唯一的,我设置的hadoop01的broker.id=1,hadoop02的broker.id=2,hadoop03的broker.id=3
  • log.dirs指定的kafka中的数据的存放位置,默认的tmp目录会定期清空,所以需要修改,而且指定的目录需要在启动kafka集群之前创建好
  • zookeeper.connect如果不指定,将使用kafka自带的zookeeper

3. 分发安装包

[hadoop@hadoop01 apps]$ scp -r kafka_2.11-0.10.2.1 hadoop03:`pwd`

4. 分别修改hadoop02和hadoop03的broker.id和host.name

5. 在每个节点下创建log.dirs指定的目录

6. 启动zookeeper服务

[hadoop@hadoop01 ~]$ zkServer.sh start
[hadoop@hadoop02 ~]$ zkServer.sh start
[hadoop@hadoop03 ~]$ zkServer.sh start

7. 在3个节点上都启动kafka

[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@hadoop02 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties
[hadoop@hadoop03 kafka_2.11-0.10.2.1]$ bin/kafka-server-start.sh -daemon config/server.properties

# -daemon选项的意思是后台启动服务

8. 验证kafka服务是否启动

9. 测试kafka集群

(1) 在任意节点上创建"test01"这个topic

[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-topics.sh \
--create \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--replication-factor 1 \
--partitions 1 \
--topic test01

(2) 在hadoop01上开启kafka-console-producer,往test01这个topic中写数据

[hadoop@hadoop01 kafka_2.11-0.10.2.1]$ bin/kafka-console-producer.sh 
--broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 \
--topic test01

(3) 在另一台节点上开启kafka-console-consumer把hadoop01节点接受到的数据打印出来

[hadoop@hadoop02 kafka_2.11-0.10.2.1]$ bin/kafka-console-consumer.sh \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--topic test01 \
--from-beginning

Kafka集群搭建成功!

你可能感兴趣的:(Kafka集群搭建)