如何在Ubuntu 14.04安装Apache Kafka

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

介绍

Apache Kafka是一种流行的分布式消息代理,设计用于高效处理大量实时数据。 Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(例如ActiveMQ和RabbitMQ)相比,还具有高得多的吞吐量。 虽然它通常用作pub / sub消息传递系统,但是很多组织也将其用于日志聚合,因为它为已发布的消息提供持久存储。

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

先决条件

要跟进,您将需要:

第1步 - 为Kafka创建一个用户

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

注意:设置Apache Kafka之后,建议您创建一个不同的非root用户在此服务器上执行其他任务。

作为root,创建一个使用被叫用户Kafka useradd命令:

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

如果一切正常,动物园管理员会说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服务器

下一步是配置Kakfa服务器。

打开server.properties使用vi

vi ~/kafka/config/server.properties

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

〜/ kafka / config / server.properties
delete.topic.enable = true

保存文件,并退出vi

第6步 - 启动Kafka服务器

运行kafka-server-start.sh使用脚本nohup启动Kafka服务器(也称为Kafka经纪人)作为后台进程是独立的shell会话。

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

等待几秒钟,它开始。 你可以肯定,当你看到下面的消息服务器已成功启动~/kafka/kafka.log

摘录自〜/ 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服务器的主机名和端口,以及主题名称作为其参数。

在下面的输入发布字符串“你好,世界”到一个叫做TutorialTopic话题:

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

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

使用消息,您可以创建使用Kafka消费者kafka-console-consumer.sh脚本。 它期望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集群的详细信息,并从命令行执行一些管理任务。 因为它是一个RubyGem,你需要Ruby来使用它。 您还需要build-essential包能够建立这取决于其他Gem。 使用安装他们apt-get

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

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

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

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

vi ~/.kafkatcfg

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

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

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

kafkat partitions

您应该看到以下输出:

输出kafkat分区
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用户的管理员权限。 在这样做之前,请注销并以任何其他非root用户sudo用户身份登录。 如果你还在使用你开始这个教程同样的shell会话,只需键入exit

要删除kafka用户的管理员权限,从删除sudo组。

sudo deluser kafka sudo

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

sudo passwd kafka -l

在这一点上,只有root或sudo的用户可以作为登录kafka通过下面的命令输入:

sudo su - kafka

在未来,如果你想解锁,使用passwd-u选项:

sudo passwd kafka -u

结论

您现在有一个安全的Apache Kafka在您的Ubuntu服务器上运行。 您可以轻松地创建使用Kafka生产者和消费者做出在项目中使用它Kafka客户这是适用于大多数编程语言。 要了解更多关于Kafka,都通过其文档