Apache Kafka是一种流行的分布式消息代理,设计用于高效处理大量实时数据。 Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(例如ActiveMQ和RabbitMQ)相比,还具有高得多的吞吐量。 虽然它通常用作pub / sub消息传递系统,但是很多组织也将其用于日志聚合,因为它为已发布的消息提供持久存储。
1.安装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会话。
2.安装kafka
这里是下载并解压缩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
3.配置Kafka Server
下一步是配置Kakfa服务器。
打开server.properties使用vim :
vim ~/kafka/config/server.properties
默认情况下,Kafka不允许您删除主题。 要能够删除主题,请在文件末尾添加以下行:
delete.topic.enable = true
保存文件,并退出vim
4.启动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
...
[2017-03-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2017-03-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
你现在有它在端口9092监听Kafka服务器。
5.测试安装:
现在让我们发布和使用一个“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现在在输出中,如下:
vagrant@vagrant-ubuntu-trusty-64:~/kafka$ ~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning
Hello, World
脚本将继续运行,等待更多消息发布到主题。 随意打开一个新的终端,并开始一个制作人发布更多的消息。 你应该能够立即在消费者的输出中看到它们。
完成测试后,请按CTRL + C停止使用者脚本。
网友评论