在Ubuntu 14.04上安装Apache Kafka的方法

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 在Ubuntu 14.04上安装Apache Kafka的方法

简介

Apache Kafka 是一个流行的分布式消息代理,旨在高效处理大量实时数据。Kafka 集群不仅高度可扩展和容错,而且与其他消息代理(如 ActiveMQ 和 RabbitMQ)相比,吞吐量也更高。虽然它通常用作发布/订阅消息系统,但许多组织也将其用于日志聚合,因为它为发布的消息提供了持久存储。

在本教程中,您将学习如何在 Ubuntu 14.04 上安装和使用 Apache Kafka 0.8.2.1。

先决条件

要跟随本教程,您需要:

  • Ubuntu 14.04 Droplet
  • 至少 4GB 的交换空间

步骤 1 —— 为 Kafka 创建用户

由于 Kafka 可以通过网络处理请求,因此您应该为其创建一个专用用户。这样可以最大程度地减少 Kafka 服务器受损对 Ubuntu 机器造成的影响。

以 root 身份使用 useradd 命令创建一个名为 kafka 的用户:

useradd kafka -m

使用 passwd 设置其密码:

passwd kafka

将其添加到 sudo 组,以便具有安装 Kafka 依赖项所需的特权。可以使用 adduser 命令完成此操作:

adduser kafka sudo

现在您的 Kafka 用户已准备就绪。使用 su 登录:

su - kafka

步骤 2 —— 安装 Java

在安装其他软件包之前,更新可用软件包的列表,以便安装存储库中提供的最新版本:

sudo apt-get update

由于 Apache Kafka 需要 Java 运行时环境,使用 apt-get 安装 default-jre 软件包:

sudo apt-get install default-jre

步骤 3 —— 安装 ZooKeeper

Apache ZooKeeper 是一个开源服务,用于协调和同步属于分布式系统的节点的配置信息。Kafka 集群依赖于 ZooKeeper 执行诸如检测失败节点和选举领导者等操作。

由于 ZooKeeper 软件包在 Ubuntu 的默认存储库中可用,因此可以使用 apt-get 安装它。

sudo apt-get install zookeeperd

安装完成后,ZooKeeper 将自动作为守护进程启动。默认情况下,它将侦听端口 2181

为确保它正在工作,通过 Telnet 连接到它:

telnet localhost 2181

在 Telnet 提示符下,输入 ruok 并按 ENTER

如果一切正常,ZooKeeper 将回复 imok 并结束 Telnet 会话。

步骤 4 —— 下载并提取 Kafka 二进制文件

现在 Java 和 ZooKeeper 已安装,是时候下载并提取 Kafka 了。

首先,创建一个名为 Downloads 的目录,用于存储所有下载内容。

mkdir -p ~/Downloads

使用 wget 下载 Kafka 二进制文件。

wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

创建一个名为 kafka 的目录并切换到该目录。这将是 Kafka 安装的基本目录。

mkdir -p ~/kafka && cd ~/kafka

使用 tar 命令提取您下载的存档。

tar -xvzf ~/Downloads/kafka.tgz --strip 1

步骤 5 —— 配置 Kafka 服务器

下一步是配置 Kafka 服务器。

使用 vi 打开 server.properties

vi ~/kafka/config/server.properties

默认情况下,Kafka 不允许您删除主题。为了能够删除主题,请在文件末尾添加以下行:

delete.topic.enable = true

保存文件并退出 vi

步骤 6 —— 启动 Kafka 服务器

使用 nohup 运行 kafka-server-start.sh 脚本,以将 Kafka 服务器(也称为 Kafka broker)作为独立于您的 shell 会话的后台进程启动。

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

等待几秒钟让它启动。当您在 ~/kafka/kafka.log 中看到以下消息时,可以确定服务器已成功启动:

...
[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

现在您有一个监听端口 9092 的 Kafka 服务器。

步骤 7 — 测试安装

现在让我们发布和消费一个**“Hello World”**消息,以确保 Kafka 服务器的行为是否正确。

要发布消息,您应该创建一个 Kafka 生产者。您可以使用kafka-console-producer.sh脚本轻松地从命令行创建一个。它需要 Kafka 服务器的主机名和端口,以及一个主题名称作为参数。

通过输入以下内容将字符串**“Hello, World”发布到名为TutorialTopic**的主题:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

由于该主题不存在,Kafka 将自动创建它。

要消费消息,您可以使用kafka-console-consumer.sh脚本创建一个 Kafka 消费者。它需要 ZooKeeper 服务器的主机名和端口,以及一个主题名称作为参数。

以下命令从我们发布的主题中消费消息。请注意使用--from-beginning标志,因为我们希望消费在消费者启动之前发布的消息。

~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

如果没有配置问题,您现在应该在输出中看到Hello, World

该脚本将继续运行,等待更多消息被发布到主题。随时打开一个新的终端并启动一个生产者来发布更多消息。您应该能够立即在消费者的输出中看到它们。

测试完成后,按下CTRL+C停止消费者脚本。

步骤 8 — 安装 KafkaT(可选)

KafkaT 是来自 Airbnb 的一个方便的小工具,它使您可以更轻松地查看 Kafka 集群的详细信息,并且还可以从命令行执行一些管理任务。由于它是一个 Ruby gem,您需要安装 Ruby 才能使用它。您还需要安装build-essential软件包以便能够构建它所依赖的其他 gem。使用apt-get安装它们:

sudo apt-get install ruby ruby-dev build-essential

现在可以使用gem命令安装 KafkaT:

sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

使用vi创建一个名为.kafkatcfg的新文件。

vi ~/.kafkatcfg

这是 KafkaT 使用的配置文件,用于确定您的 Kafka 服务器的安装和日志目录。它还应该将 KafkaT 指向您的 ZooKeeper 实例。因此,请向其中添加以下行:

{
  "kafka_path": "~/kafka",
  "log_path": "/tmp/kafka-logs",
  "zk_path": "localhost:2181"
}

现在您可以使用 KafkaT 了。首先,以下是如何使用它查看所有 Kafka 分区的详细信息:

kafkat partitions

您应该会看到以下输出:

Topic       Partition Leader    Replicas    ISRs  
TutorialTopic 0         0         [0]     [0]

要了解更多关于 KafkaT 的信息,请参阅其 GitHub 仓库。

步骤 9 — 设置多节点集群(可选)

如果您想要使用更多的 Ubuntu 14.04 机器创建一个多代理集群,您应该在每台新机器上重复执行步骤 1、步骤 3、步骤 4 和步骤 5。此外,您还应该在每台机器的server.properties文件中进行以下更改:

  • broker.id属性的值应更改为在整个集群中是唯一的
  • zookeeper.connect属性的值应更改为所有节点指向同一个 ZooKeeper 实例

如果您想要为您的集群拥有多个 ZooKeeper 实例,每个节点上zookeeper.connect属性的值应该是一个相同的、逗号分隔的字符串,列出所有 ZooKeeper 实例的 IP 地址和端口号。

步骤 10 — 限制 Kafka 用户

现在所有安装都已完成,您可以删除kafka用户的管理员特权。在这样做之前,请注销并以任何其他非根 sudo 用户重新登录。如果您仍在运行开始本教程的同一个 shell 会话,只需输入exit

要删除kafka用户的管理员特权,请将其从sudo组中删除。

sudo deluser kafka sudo

为了进一步提高 Kafka 服务器的安全性,使用passwd命令锁定kafka用户的密码。这样可以确保没有人可以直接登录。

sudo passwd kafka -l

此时,只有 root 用户或一个 sudo 用户可以通过输入以下命令作为kafka用户登录:

sudo su - kafka

将来,如果您想要解锁它,可以使用带有-u选项的passwd

sudo passwd kafka -u

结论

您现在在您的Ubuntu服务器上拥有一个安全的Apache Kafka。您可以通过使用几乎所有编程语言都可用的Kafka客户端,轻松地在您的项目中利用它,创建Kafka生产者和消费者。要了解更多关于Kafka的信息,请阅读其文档。


目录
相关文章
|
2月前
|
消息中间件 安全 Kafka
Apache Kafka安全加固指南:保护你的消息传递系统
【10月更文挑战第24天】在现代企业环境中,数据的安全性和隐私保护至关重要。Apache Kafka作为一款广泛使用的分布式流处理平台,其安全性直接影响着业务的稳定性和用户数据的安全。作为一名资深的Kafka使用者,我深知加强Kafka安全性的重要性。本文将从个人角度出发,分享我在实践中积累的经验,帮助读者了解如何有效地保护Kafka消息传递系统的安全性。
156 7
|
2月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
115 5
|
2月前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
132 4
|
2月前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
97 5
|
2月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
76 1
|
2月前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
2月前
|
消息中间件 监控 Kafka
Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面
随着大数据技术的发展,Apache Kafka 成为处理实时数据流的关键组件。Kafka Manager 提供了一个简洁的 Web 界面,方便管理和监控 Kafka 集群。本文详细介绍了 Kafka Manager 的部署步骤和基本使用方法,包括配置文件的修改、启动命令、API 示例代码等,帮助你快速上手并有效管理 Kafka 集群。
68 0
|
1月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
363 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
981 13
Apache Flink 2.0-preview released
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
156 3

热门文章

最新文章