Kafka集群搭建

        Kafka使用Zookeeper作为其分布式协调服务,能很好地将消息生产、消息存储、消息消费的过程结合在一起。同时借助Zookeeper,Kafka能够将生产者、消费者和集群节点在内的所有组件,在无状态的情况下建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。

由此可以看出Kafka集群依赖Zookeeper,Kafka集群共享已经安装好的Zookeeper集群即可,接下来可以直接进入Kafka集群的安装配置。

1.下载并解压Kafka

        到官网(地址:https://kafka.apache.org/downloads)下载Kafka安装包kafka_2.12-2.8.1.tgz,然后上传至hadoop1节点的/home/hadoop/app目录下并解压,具体操作如下所示。

[hadoop@hadoop1 app]$ tar -zxvf  kafka_2.12-2.8.1.tgz

[hadoop@hadoop1 app]$ ln -s kafka_2.12-2.8.1 kafka

2.修改Kafka配置文件

        从Kafka架构中可以看出,它包含生产者、消费者、Zookeeper和Kafka四个角色,所以只需要修改以下四个配置文件即可。

(1)修改zookeeper.properties配置文件

进入Kafka的config目录下,修改zookeeper. properties配置文件,具体内容如下。

[hadoop@hadoop1 config]$ vi zookeeper.properties

# 指定Zookeeper数据目录

dataDir=/home/hadoop/data/zookeeper/zkdata

# 指定Zookeeper端口号

clientPort=2181

(2)修改consumer.properties配置文件

进入Kafka的config目录下,修改consumer. properties配置文件,具体内容如下。

[hadoop@hadoop1 config]$ vi consumer.properties

#配置Kafka集群地址

bootstrap.servers=hadoop01:9092,hadoop04:9092,hadoop05:9092

(3)修改producer.properties配置

进入Kafka的config目录中,修改producer. properties配置文件,具体内容如下。

[hadoop@hadoop1 config]$ vi producer.properties

#配置Kafka集群地址

bootstrap.servers=hadoop01:9092,hadoop04:9092,hadoop05:9092

(4)修改server.properties配置

进入Kafka的config目录下,修改server. properties配置文件,具体内容如下。

[hadoop@hadoop1 config]$ vi server.properties

#指定Zookeeper集群

zookeeper.connect=hadoop02:2181,hadoop03:2181,hadoop04:2181

3.Kafka安装目录分发集群其他节点

        将hadoop01节点中配置好的Kafka安装目录分发给hadoop04hadoop05节点,具体操作如下所示。

[hadoop@hadoop01 app]$scp -r kafka_2.12-2.8.1  hadoop@hadoop2:/home/hadoop/app/

[hadoop@hadoop01 app]$scp -r kafka_2.12-2.8.1  hadoop@hadoop3:/home/hadoop/app/

4.修改server编号

        登录hadoop01hadoop04hadoop05节点,分别进入Kafka的config目录下,修改server.properties配置文件中的broker.id项,具体操作如下所示。

[hadoop@hadoop1 config]$ vi server.properties

#标识hadoop01节点

broker.id=1

[hadoop@hadoop04 config]$ vi server.properties

#标识hadoop04节点

broker.id=2

[hadoop@hadoop05 config]$ vi server.properties

#标识hadoop05节点

broker.id=3

5.启动Kafka集群

        Zookeeper管理着Kafka Broker集群,同时Kafka将元数据信息保存在Zookeeper中,说明Kafka集群依赖Zookeeper提供协调服务,所以需要先启动Zookeeper集群,然后再启动Kafka集群。

(1)启动Zookeeper集群

在集群各个节点中进入Zookeeper安装目录,使用如下命令启动Zookeeper集群。

(2)启动Kafka集群

在集群各个节点中进入Kafka安装目录,使用如下命令启动Kafka集群。

[hadoop@hadoop01 kafka_2.12-2.8.1]$ bin/kafka-server-start.sh -daemon config/server.properties

[hadoop@hadoop04 kafka_2.12-2.8.1]$ bin/kafka-server-start.sh -daemon config/server.properties

[hadoop@hadoop05 kafka_2.12-2.8.1]$ bin/kafka-server-start.sh -daemon config/server.properties

在集群各个节点中,如果使用jps命令能查看到Kafka进程,则说明Kafka集群服务启动完成。

6.Kafka集群测试

        Kafka自带有很多种Shell脚本供用户使用,包含生产消息、消费消息、Topic管理等功能。接下来利用Kafka Shell脚本测试使用Kafka集群。

(1)创建Topic

使用Kafka的bin目录下的kafka-topics.sh脚本,通过create命令创建名为test的Topic,具体操作如下所示。

[hadoop@hadoop01 kafka]$ bin/kafka-topics.sh --zookeeper hadoop04:2181 --create --topic test --replication-factor 3 --partitions 3

上述命令中,--zookeeper 指定 Zookeeper 集群;--create 是创建 Topic 命令;--topic指定Topic名称;--replication-factor 指定副本数量;--partitions指定分区个数。

(2)查看Topic列表

通过list命令可以查看Kafka 的Topic列表,具体操作如下所示。

[hadoop@hadoop01 kafka]$ bin/kafka-topics.sh --zookeeper hadoop04:2181 --list

(3)查看Topic详情

通过describe命令查看Topic内部结构,具体操作如下所示。

[hadoop@hadoop01 kafka]$ bin/kafka-topics.sh --zookeeper hadoop04:2181 --describe --topic test

Topic: test TopicId: Ooke58YwSp29HO3dxUYSSQ PartitionCount: 3 ReplicationFactor: 3 Configs:

Topic: test Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3

Topic: test Partition: 1 Leader: 3 Replicas: 3,2,1 Isr: 3,2,1

Topic: test Partition: 2 Leader: 1 Replicas: 1,3,2 Isr: 1,3,2

从打印的信息中可以看到test有3个副本和3个分区。

(4)消费者消费Topic

hadoop01节点上,通过Kafka自带的kafka-console-consumer.sh脚本,开启消费者消费 test中的消息。

[hadoop@hadoop01 kafka_2.12-2.8.1]$bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

(5)生产者向Topic发送消息

hadoop1节点上,通过Kafka自带的kafka-console-producer.sh脚本启动生产者,然后向 test发送3条消息,具体操作如下所示。

[hadoop@hadoop01 kafka_2.12-2.8.1]$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

>kafka

>kafka

>kafka

查看消费者控制台,如果成功消费了3条数据,说明Kafka集群可以正常对消息进行生产和消费。

你可能感兴趣的:(大数据,消息中间件,数据采集,kafka,大数据)