匠心精神 - 良心品质腾讯认可的专业机构-IT人的高薪实战学院

咨询电话:4000806560

一步一步在CentOS 7上搭建Kafka集群

在当今的互联网和大数据时代,消息队列架构成为了许多企业关注的焦点。比如,千亿日活的短视频应用——抖音,它的消息队列就是使用Kafka来完成的。Kafka作为一种高性能、高可靠性的消息中间件,为许多企业提供了很好的解决方案。在本文中,我们将带领您一步一步在CentOS 7上搭建Kafka集群,让您更好地了解Kafka的使用和应用。

一、准备工作

在开始之前,我们需要提前准备好一些工作:

1. 一台安装了CentOS 7的机器,并开启了网络连接。

2. JDK环境,Kafka需要JDK 1.8及以上版本,因此我们需要先安装JDK环境。

3. ZooKeeper,Kafka依赖于ZooKeeper,因此我们需要先安装好ZooKeeper。

二、安装JDK环境

我们可以从Oracle官网上下载JDK,这里我使用的是openjdk-8-jdk版本。在终端中输入以下命令进行安装:

```
sudo yum install -y java-1.8.0-openjdk-devel
```

然后,我们可以使用以下命令检查是否正确安装了JDK环境:

```
java -version
```

如果显示以下内容,则说明JDK环境已经安装成功:

```
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
```

三、安装ZooKeeper

在安装ZooKeeper之前,我们需要为其创建一个用户,并授权:

```
sudo useradd zookeeper -m -s /bin/bash
sudo passwd zookeeper
sudo chown -R zookeeper:zookeeper /usr/local/zookeeper
```

接下来,我们可以从官网上下载ZooKeeper,这里我使用的是ZooKeeper 3.4.14版本。在终端中输入以下命令进行安装:

```
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz
sudo mv zookeeper-3.4.14/ /usr/local/zookeeper
```

然后,我们需要创建ZooKeeper的配置文件:

```
sudo cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
```

现在,我们可以启动ZooKeeper了:

```
sudo /usr/local/zookeeper/bin/zkServer.sh start
```

可以使用以下命令检查是否正确启动了ZooKeeper:

```
sudo /usr/local/zookeeper/bin/zkServer.sh status
```

如果显示以下内容,则说明ZooKeeper已经启动成功:

```
Mode: standalone
```

四、安装Kafka

在安装Kafka之前,我们需要为其创建一个用户,并授权:

```
sudo useradd kafka -m -s /bin/bash
sudo passwd kafka
sudo chown -R kafka:kafka /usr/local/kafka
```

接下来,我们可以从官网上下载Kafka,这里我使用的是Kafka 2.4.1版本。在终端中输入以下命令进行安装:

```
wget http://mirror.bit.edu.cn/apache/kafka/2.4.1/kafka_2.12-2.4.1.tgz
tar -zxvf kafka_2.12-2.4.1.tgz
sudo mv kafka_2.12-2.4.1/ /usr/local/kafka
```

然后,我们需要创建Kafka的配置文件:

```
sudo cp /usr/local/kafka/config/server.properties /usr/local/kafka/config/server-1.properties
sudo cp /usr/local/kafka/config/server.properties /usr/local/kafka/config/server-2.properties
```

现在,我们可以启动Kafka了。在终端中输入以下命令启动Kafka:

```
sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server-1.properties
sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server-2.properties
```

可以使用以下命令检查是否正确启动了Kafka:

```
sudo /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server-1.properties
sudo /usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server-2.properties
```

如果显示以下内容,则说明Kafka已经启动成功:

```
[2020-03-05 22:10:26,773] INFO Kafka version: 2.4.1 (org.apache.kafka.common.utils.AppInfoParser:109)
[2020-03-05 22:10:26,774] INFO Kafka commitId: c57222ae8cd7866b (org.apache.kafka.common.utils.AppInfoParser:110)
[2020-03-05 22:10:26,781] INFO [KafkaServer id=1] started (kafka.server.KafkaServer:58)
```

五、创建主题和分区

在Kafka中,主题是消息的类别,可以将其理解为一个消息队列。分区是一个物理概念,可以将一个主题分成多个分区,每个分区保存着一部分消息,因此可以分别在不同的节点上存储数据,提高了消息的并发处理能力。在本文中,我们将为Kafka创建一个名为test的主题,并将其分成3个分区。在终端中输入以下命令:

```
sudo /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic test
```

然后,我们可以使用以下命令查看创建的主题信息:

```
sudo /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
```

如果显示以下内容,则说明主题和分区已经成功创建:

```
Topic:test PartitionCount:3 ReplicationFactor:2 Configs:
    Topic: test Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
    Topic: test Partition: 1 Leader: 2 Replicas: 2,1 Isr: 2,1
    Topic: test Partition: 2 Leader: 1 Replicas: 2,1 Isr: 1,2
```

六、发送和接收消息

现在,我们已经成功创建了一个名为test的主题,并将其分成了3个分区。接下来,让我们来发送和接收一些消息。在终端中输入以下命令:

1. 启动一个Kafka生产者:

```
sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
```

此时,终端会进入等待消息输入的状态。

2. 启动一个Kafka消费者:

```
sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
```

此时,终端会输出已经发送的消息。

3. 在生产者终端中输入一些消息,比如:

```
hello kafka!
```

4. 在消费者终端中,会输出刚才发送的消息:

```
hello kafka!
```

至此,我们已经成功地在CentOS 7上搭建了Kafka集群,并成功地发送和接收了一些消息。Kafka作为一种高性能、高可靠性的消息中间件,为许多企业提供了很好的解决方案。通过本文的学习,相信读者已经对Kafka的使用和应用有了更好的了解。