[关闭]
@runzhliu 2018-05-16T01:15:46.000000Z 字数 1812 阅读 884

在 Mac 跑起 Kafka

mac kafka


参考资料
Kafka 中文文档
Kafka的安装和简单实例测试
kafka-python


1 安装

Kafka 中文文档中主要介绍了 Linux/Windows 系统下的 Kafka 配置,为了在本地 Mac 系统下跑起一个 demo,本文简单介绍如何在 Mac 中跑起 Kafka。

执行 brew install kafka,由于 Kafka 需要依赖 ZooKeeper,所有在 brew 过程中,会把 Kafka 的其他依赖一起安装到 /usr/local/Cellar 目录下。

image_1cdj60fku12smqv31miv1r3v1moi9.png-81.5kB

2 启动

可以到安装目录下的 bin 来看一下预定的一些启动脚本。

image_1cdj65mmp8k612d41fng0010d4m.png-59.3kB

在启动 Kafka 之前需要先启动 ZooKeeper,看看 ZK 的启动命令里面有什么内容。

  1. #!/bin/bash
  2. JAVA_HOME="$(/usr/libexec/java_home --version 1.8)" exec "/usr/local/Cellar/kafka/0.11.0.1/libexec/bin/zookeeper-server-start.sh" "$@"

可以看出,实际上其启动命令是一个调用的 bash 脚本。感兴趣的话可以进一步查看该脚本的详细内容。运行该启动命令,会有以下输出,提示我们需要一份 ZK 的配置文件。

  1. bin zookeeper-server-start
  2. USAGE: /usr/local/Cellar/kafka/0.11.0.1/libexec/bin/zookeeper-server-start.sh [-daemon] zookeeper.properties

那么这个配置文件可以在刚刚 brew 的时候安装的 ZK 依赖的配置目录下查找,具体如下:

image_1cdj6jud111v1ji91fm013091lin13.png-31.2kB

那么完整的 ZK 启动命令应该是这样的 zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties,注意后面的为 ZK 配置文件的绝对路径。现在 ZK 应该已经成功启动了。

image_1cdj6nputatj1g401go4norta11g.png-224.7kB

启动 Kafka 集群的过程与 ZK 相似,可以到对应配置文件目录中启动。

image_1cdj6r659ap51ie21i9p12jd101h1t.png-65.2kB

topic 是发布消息发布的 category 类别,以单节点的配置创建了一个叫 runzhliutopic

  1. workspace kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic runzhliu
  2. Created topic "runzhliu".

另外可以用 list 列出所有创建的 topics,来查看刚才创建的主题是否存在。

  1. workspace kafka-topics --list --zookeeper localhost:2181
  2. dblab
  3. my_favorite_topic
  4. runzhliu

然后我们用 producer 生产一些消息,hello oscar

  1. workspace kafka-console-producer --broker-list localhost:9092 --topic runzhliu
  2. >hello
  3. >oscar

最后用 consumer 来消费这些消息。

  1. workspace kafka-console-consumer --zookeeper localhost:2181 --topic runzhliu --from-beginning
  2. Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
  3. hello
  4. oscar

3 Python 客户端

因为使用脚本来生产、消费消息比较麻烦,而在生产中一般都是用封装好的客户端来进行操作,这里选择用 Python 的客户端 kafka-python

创建一个目录来放置 Python 脚本如下:

image_1cdj7l0us7k768q1rch1t36r62q.png-13.6kB

按照官方 Demo,先启动一个消费者进程如下:

image_1cdj7noars4m124q1r94abqrt937.png-51.3kB

运行成功之后可以选择在用 Shell 脚本来对 runzhliu 主题来产生新的消息,这样在消费者的日志中就可以看到消费的消息,此处我们还是用 Python 客户端来产生一些消息。

image_1cdj7s3vu1qj1t271a7jjcu1f2v3k.png-59.1kB

以下是向主题发送三条消息。然后消费者日志会显示:

image_1cdj86upqveu6fvjl11likr164h.png-106.6kB

4 实例

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注