介绍
Apache Kafka是一种流行的分布式消息代理,设计用于高效处理大量实时数据。 Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(例如ActiveMQ和RabbitMQ)相比,还具有高得多的吞吐量。 虽然它通常用作pub / sub消息传递系统,但是很多组织也将其用于日志聚合,因为它为已发布的消息提供持久存储。
在本教程中,您将学习如何在Ubuntu 14.04上安装和使用Apache Kafka 0.8.2.1。
先决条件
要跟进,您将需要:
- Ubuntu 14.04 Droplet
- 至少有4GB的交换空间
第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不允许您删除主题。 要能够删除主题,请在文件末尾添加以下行:
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
:
...
[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实例。 因此,添加以下行:
{
"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
用户的管理员权限。 在这样做之前,请注销并以任何其他非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,都通过其文档 。