在Linux CentOS 7上安装Kafka-2.12-3.6.0及无Zookeeper配置

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细介绍了在CentOS 7系统上安装Apache Kafka 2.12-3.6.0版本,并特别说明了在Kraft模式下无需Zookeeper的安装过程。Kraft模式是Kafka 3.0版本后引入的新特性,它简化了Kafka集群的部署和管理,使安装过程无需依赖Zookeeper。安装步骤包括下载和解压安装包,配置Kafka环境变量,安装Java运行环境,配置Kafka的server.properties文件,并指定broker.id。最后,介绍了如何启动Kafka服务,并指出了高可用性配置和Kraft模式下集群的容错性要求。 kafka-2.12-3.6.0安装包以及linux(centos7)无zookeeper安装kafka-2.12-3.6.0(

1. Kafka-2.12-3.6.0版本安装

在大数据处理中,Apache Kafka凭借其出色的性能与可靠性,成为消息队列系统中的佼佼者。本章节将指导您如何在一台机器上安装Kafka版本2.12-3.6.0。首先需要下载Kafka的二进制安装包,然后根据您的操作系统环境进行解压和配置。

1.1 下载与解压Kafka

您可以通过官方网站下载适合您操作系统的Kafka二进制安装包。以Linux系统为例,安装过程如下:

# 下载Kafka安装包
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.12-3.6.0.tgz

# 解压到本地目录
tar -xzf kafka_2.12-3.6.0.tgz

1.2 配置Kafka

解压之后,需要对Kafka进行一些基础配置。比如,编辑 config/server.properties 文件,配置以下参数:

broker.id=0
listeners=PLAINTEXT://your.host.name:9092
log.dirs=/tmp/kafka-logs

确保 broker.id 是唯一的,并正确设置监听地址和日志存储路径。接着,通过以下命令启动Kafka:

# 进入Kafka安装目录
cd kafka_2.12-3.6.0/

# 启动Kafka服务器
bin/kafka-server-start.sh config/server.properties

1.3 验证安装

在Kafka启动后,您可以使用以下命令来验证安装是否成功:

# 创建一个名为test的topic
bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092

# 向test topic发送消息
bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092

# 从test topic接收消息
bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

确保生产者发送的消息能够被消费者正确接收,这样就意味着您的Kafka安装已经成功完成,并且可以开始进行数据处理了。

接下来的章节将会介绍如何对Linux CentOS 7环境进行配置,并安装Java运行环境,为深入学习Kafka奠定基础。

2. Linux CentOS 7环境配置与Java运行环境安装

2.1 CentOS 7系统优化

2.1.1 系统更新与包管理器yum的使用

为了确保系统运行在最佳状态,第一步就是更新系统及其包管理器yum。CentOS 7 使用yum作为默认的包管理器,可以用来安装、更新、删除和管理软件包。

打开终端执行以下命令:

sudo yum update -y

执行 yum update 命令会检查所有已安装的软件包的可用更新,并提示用户确认。参数 -y 确保在提示时自动选择"Yes"。

系统更新完毕后,可以使用以下命令安装常用的工具和软件:

sudo yum install -y wget vim net-tools

这里安装了 wget 用于下载文件, vim 作为文本编辑器, net-tools 包含了网络配置工具如 ifconfig 等。

2.1.2 系统安全设置与防火墙配置

配置系统安全增强功能是至关重要的。CentOS 7 使用 firewalld 作为默认的防火墙管理工具。首先启动并启用 firewalld 服务:

sudo systemctl start firewalld
sudo systemctl enable firewalld

接下来配置防火墙规则。假设您想允许通过SSH访问:

sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --reload

使用 --permanent 参数表示规则永久生效, --zone 指定区域, --add-service 添加服务。最后 --reload 参数重新加载防火墙规则。

2.2 Java运行环境安装与配置

2.2.1 安装OpenJDK或OracleJDK

Java开发离不开Java运行环境。在Linux系统中,可以使用yum安装OpenJDK或者OracleJDK。这里以安装OpenJDK为例。

运行以下命令:

sudo yum search openjdk

这将搜索可用的OpenJDK版本。选择合适的版本后,执行安装:

sudo yum install -y java-1.8.0-openjdk

如果您希望安装OracleJDK,可以从Oracle官网下载tar.gz安装包,并解压安装。

2.2.2 配置Java环境变量

安装完Java后,为了方便在任何位置执行Java命令,需要配置Java环境变量。

编辑 /etc/profile 文件:

sudo vim /etc/profile

在文件末尾添加:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

这里, JAVA_HOME 指向了Java安装目录, PATH 环境变量添加了Java可执行文件的路径。保存并退出后,运行以下命令使更改立即生效:

source /etc/profile

此时,通过输入 java -version 应该可以看到已安装的Java版本。这样就完成了Java运行环境的安装和配置。

现在,系统已经配置了必要的Linux环境优化,Java运行环境也已安装和配置好,接下来将介绍Kafka的安装,包括无Zookeeper的Kraft模式安装与配置。

3. Kafka无Zookeeper安装(Kraft模式)

3.1 Kafka与Zookeeper的关系及其发展

3.1.1 Zookeeper在Kafka中的作用与限制

Apache Kafka是一个分布式流处理平台,它依赖于Zookeeper来管理集群状态和协调服务。在早期的Kafka版本中,Zookeeper的作用是至关重要的,它负责存储集群元数据,如主题、分区和副本的状态信息,并处理所有对集群状态有影响的操作请求。

然而,Zookeeper的设计初衷并不是为了服务这种类型的高频率写入操作。它引入了一些限制,这些限制可能会影响Kafka的性能: - 写入瓶颈 :由于所有状态变更都必须通过Zookeeper进行写入,随着集群规模的增长,Zookeeper集群可能会成为瓶颈。 - 复杂性增加 :Zookeeper集群的维护和管理增加了整个系统的复杂性,运维团队必须同时维护Kafka和Zookeeper两个系统。 - 版本依赖 :Kafka版本更新往往需要等待Zookeeper提供兼容的更新。

3.1.2 Kraft模式介绍及其优势

为了克服Zookeeper带来的限制,Apache Kafka从2.8.0版本开始引入了KRaft(Kafka Raft Metadata mode),简称Kraft模式。Kraft模式将Zookeeper的主要功能内置到了Kafka中,不再依赖于外部的Zookeeper集群。这样做的主要优势包括:

  • 简化架构 :去掉Zookeeper后,Kafka的架构变得更加简洁,降低了运维复杂性。
  • 性能提升 :通过减少网络通信和减少写入瓶颈,Kraft模式的Kafka能够提供更好的性能。
  • 版本一致性 :Kafka的版本更新不再受限于Zookeeper的更新周期,可以更加灵活地迭代和创新。

3.2 Kraft模式下的Kafka安装

3.2.1 解压与配置Kafka安装包

Kraft模式下的Kafka安装与传统的安装过程稍有不同。以下是在Linux环境下,安装并配置Kraft模式Kafka的步骤:

  1. 首先下载并解压Kafka的二进制包。假设下载的文件名为 kafka_2.12-3.6.0.tgz bash tar -xzf kafka_2.12-3.6.0.tgz cd kafka_2.12-3.6.0
  2. Kafka的配置文件名为 config/server.properties 。你可以编辑这个文件,设置 process.id 属性为一个唯一的ID,以及指定 log.dirs 属性指向存储日志的目录。

  3. config/server.properties 文件中,确保以下关键配置项正确设置: properties process.id=1 log.dirs=/path/to/kafka-logs inter.broker.protocol.version=3.6.0 listeners=PLAINTEXT://your-host-name:9092 其中 your-host-name 需要替换为你的主机名或IP地址,以便Kafka能够正确地监听客户端的连接请求。

3.2.2 启动Kafka并验证Kraft模式

接下来,我们启动Kafka实例并验证是否已经运行在Kraft模式下:

  1. 启动Kafka服务器,使用以下命令: bash bin/kafka-server-start.sh config/server.properties

  2. 如果你想验证Kafka是否正在运行在Kraft模式下,可以查看Kafka的日志文件。在日志文件中,你应该能够找到类似 Using native replication protocol 的记录,表示Kraft模式已经启用。

  3. 另外,你可以通过执行Kafka的命令行工具来检查broker状态: bash bin/zookeeper-shell.sh localhost ls /brokers/ids 如果返回的是空结果,说明没有Zookeeper参与,Kafka正在Kraft模式下运行。

至此,Kafka已成功安装并配置在Kraft模式下运行,接下来可以探索如何在Kraft模式下进行集群的搭建和管理。

4. Kafka配置文件(server.properties)设置与服务管理

4.1 配置文件server.properties详解

4.1.1 配置文件结构与参数解析

Apache Kafka的配置文件 server.properties 包含了控制Kafka服务器行为的关键参数。这个文件位于Kafka安装目录的 config 子目录下。了解这个文件的结构和每个参数的含义是配置Kafka至关重要的一步。

首先,配置文件分为几个部分,每个部分都涵盖Kafka服务器的特定方面。下面是一些关键部分和参数:

  • 基础设置 :定义了Kafka服务器运行的基础参数,如 broker.id listeners port 等。
  • 日志设置 :控制消息的持久化方式,包括 log.dirs log.segment.bytes log.retention.hours 等。
  • 网络设置 :管理Kafka的网络连接,例如 num.network.threads socket.send.buffer.bytes 等。
  • 存储设置 :涉及消息在磁盘上的存储和管理,如 message.max.bytes default.replication.factor 等。
  • 副本策略 :控制Kafka分区的副本管理,例如 num.replica.fetchers replica.lag.time.max.ms 等。

一个典型的基础参数设置例子如下:

broker.id=1
listeners=PLAINTEXT://localhost:9092
port=9092
  • broker.id :Kafka集群中每个broker的唯一标识。
  • listeners :Kafka服务器监听的协议和地址。
  • port :Kafka服务器实例的监听端口。

详细分析这些参数时,可以看到每个参数对Kafka行为的影响。例如,更改 log.dirs 参数可以改变Kafka存储数据的位置,这对性能和数据安全性有重大影响。通过合理配置这些参数,可以优化Kafka以适应特定的使用场景和需求。

4.1.2 根据环境调整配置参数

Kafka的配置文件提供了灵活的参数调整能力,根据不同的运行环境,调整配置文件可以带来性能和稳定性的提升。

4.1.2.1 云环境

在云环境中运行Kafka时,由于云服务的自动扩展能力,配置文件中的 num.network.threads num.io.threads 参数应该调整以匹配云实例的CPU核心数。此外, log.dirs 应当设置为云存储路径,以便利用云服务的快速I/O和持久化能力。

4.1.2.2 高性能硬件

在具有高性能硬件的环境中,例如配备有大量RAM和快速SSD的服务器上,可以适当增加 num.network.threads num.io.threads 以及 socket.request.max.bytes 等参数的值,以充分利用硬件资源。

4.1.2.3 生产环境

在生产环境中,Kafka配置的稳定性和可靠性至关重要。需要仔细调整如 log.retention.hours log.retention.bytes default.replication.factor 等参数来确保消息不会丢失,且系统能够在出现故障时恢复。

4.1.2.4 开发测试环境

在开发或测试环境中,为了加速开发和问题诊断的过程,可能会减少消息保留时间,例如将 log.retention.hours 设置为更小的值。这样可以减少磁盘空间的使用并加速重启过程。

通过上述对不同环境下的配置参数调整案例的分析,可以看出合理配置 server.properties 文件是根据实际情况调整Kafka行为的重要手段。下一节我们将探讨如何通过命令行工具管理和监控Kafka服务。

4.2 Kafka服务的启动与管理

4.2.1 使用命令行工具启动、停止Kafka服务

Kafka提供了一组命令行工具来控制和管理Kafka服务。启动和停止Kafka服务是日常运维工作的基本任务,通常使用 kafka-server-start.sh kafka-server-stop.sh 脚本来实现。

启动Kafka服务

启动Kafka服务的命令格式通常如下:

bin/kafka-server-start.sh config/server.properties

这里的 config/server.properties 是Kafka配置文件的路径。如果你在Kafka的bin目录下运行命令,也可以使用相对路径。

停止Kafka服务

停止Kafka服务的命令格式为:

bin/kafka-server-stop.sh

在停止服务时,并不需要指定配置文件,因为Kafka服务在启动时会记录自己的运行状态。

4.2.2 Kafka服务的监控与日志管理

监控Kafka服务的状态以及管理日志是保证服务稳定运行的关键。Kafka提供了一些工具来帮助运维人员进行监控和日志管理。

使用 kafka-consumer-groups.sh 监控消费者组

消费者组的状态监控对于保证消息的正确消费至关重要。可以通过以下命令来查看消费者组的状态:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
使用 kafka-topics.sh 查看主题信息

查看Kafka主题的详细信息可以帮助我们了解消息的分布情况:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic your_topic_name
管理Kafka日志

Kafka日志文件保存在 log.dirs 参数指定的目录下。管理员需要定期清理旧的日志文件以节省磁盘空间,并监控日志文件大小以预防潜在的磁盘空间问题。

Kafka日志管理最佳实践

在Kafka的日志管理中,应该合理配置 log.retention.hours log.retention.bytes 以及 log.segment.bytes 等参数,这些参数直接影响日志文件的保留策略。此外,定期检查日志文件的大小,使用Kafka自带的清理工具来删除旧的日志文件,并适当备份关键日志,可以保证Kafka的健康运行和故障恢复能力。

通过Kafka提供的命令行工具,管理员可以有效地监控和管理Kafka服务。下一节我们将介绍如何通过配置参数和策略来搭建和配置Kafka集群,以实现高可用性和容错性。

(请注意,由于篇幅限制,以上内容并不满足所有字数要求,实际章节内容应进一步展开,确保每个部分满足规定的字数要求。)

5. Kafka集群高可用性配置与Kraft模式集群容错性要求

5.1 Kafka集群的搭建与配置

5.1.1 配置集群中的broker信息

在Kafka中,broker是运行Kafka服务的节点。在一个集群中,可以有多个broker,每一个都有一个唯一的ID(broker.id)。集群配置的首要任务就是为每一个broker分配一个唯一的ID,然后在server.properties文件中设置其信息。下面是一个broker配置文件的示例:

# broker的唯一ID
broker.id=1

# Kafka监听的主机名,可以是localhost或具体的IP地址
listeners=PLAINTEXT://localhost:9092

# Kafka安装目录
log.dirs=/tmp/kafka-logs

# Zookeeper连接字符串,注意Kraft模式下不需要配置
zookeeper.connect=localhost:2181

当构建集群时,我们需要在不同的服务器上部署多个broker,并且确保每个broker配置文件中的 broker.id 都不同。对于Kraft模式,我们不再需要 zookeeper.connect 参数,因为Kraft模式已经内置了集群管理功能。

5.1.2 分区与副本策略的设置

Kafka通过分区(partition)来提高并行度和容错性。一个主题(topic)可以被分割成多个分区,每个分区都可以有不同的副本。副本可以分散在不同的broker上,以便在某些broker不可用时,仍能保证数据的可用性和一致性。

# 分区数量
num.partitions=3

# 自动创建主题时的副本因子
default.replication.factor=2

#_ISR的最小比例,即 ISR 副本集合中最小有多少个副本数量,默认为1。
min.insync.replicas=1

在搭建集群时,合理规划分区和副本数量非常重要,根据集群规模和业务需求调整这些参数能够有效提升系统的吞吐量和可靠性。

5.2 Kraft模式下的容错性与故障转移

5.2.1 Kraft模式对容错性的影响

Kraft模式是Kafka 2.8.0版本引入的新的集群管理模式,它的目标是减少对外部Zookeeper的依赖,从而提高性能和可靠性。在Kraft模式下,Kafka内部实现了集群状态的管理功能,每个broker都持有一份集群状态的副本,并参与到状态变更的决策过程中。

Kraft模式下,集群的容错性主要取决于副本因子的设置。如果副本因子设置为N,那么系统可以容忍N-1个broker的故障而不影响服务。这意味着,当集群中的broker出现故障时,只要副本数量足够,Kafka集群能够自动处理故障转移和数据恢复。

5.2.2 集群故障转移的策略与实践

当集群中的broker节点失效时,Kafka需要通过自动故障转移来保证服务的连续性。在Kraft模式中,故障转移主要依赖于副本集(ISR)。ISR是保持同步状态的副本的集合,只要ISR中的副本能够正常工作,Kafka就能够在节点失败后继续提供服务。

在实践中,为了确保Kafka集群的高可用性,我们需要实现以下策略:

  • 确保每个分区都有足够的副本。
  • 配置合理的 min.insync.replicas 参数来保证数据的持久性。
  • 监控每个broker的健康状态,及时发现故障节点。
  • 使用Kafka自带的命令行工具或API来触发故障转移和恢复。

例如,我们可以使用 kafka-preferred-replica-election.sh 脚本来处理分区首领选举,或者使用 kafka-leader-election.sh 来强制执行某个副本为新的首领。

# 选举特定分区的首选副本为新首领
kafka-preferred-replica-election.sh --path-to-json-file /path/to/json-file.json

# 选举所有分区的新首领
kafka-preferred-replica-election.sh --topic <topic-name> --partition <partition-number>

在集群管理方面,我们必须建立一个完善的监控体系,实时关注集群的运行状态,并及时进行故障处理。对于Kafka集群的管理和维护,一个成熟的运维策略至关重要,它将有助于提升整个系统的稳定性和可用性。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细介绍了在CentOS 7系统上安装Apache Kafka 2.12-3.6.0版本,并特别说明了在Kraft模式下无需Zookeeper的安装过程。Kraft模式是Kafka 3.0版本后引入的新特性,它简化了Kafka集群的部署和管理,使安装过程无需依赖Zookeeper。安装步骤包括下载和解压安装包,配置Kafka环境变量,安装Java运行环境,配置Kafka的server.properties文件,并指定broker.id。最后,介绍了如何启动Kafka服务,并指出了高可用性配置和Kraft模式下集群的容错性要求。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值