前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

简介

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的信息,请阅读其文档。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐