使用 Apache Kafka 构建您自己的社交媒体分析

使用在 Kube.NETes 上运行的 Kafka 在 API 端点之间流式传输消息 。 
Apache Kafka 不仅仅是一个消息传递代理 。它有一个由不同组件组成的丰富生态系统 。有用于导入和导出数据的连接器、不同的流处理库、模式注册表等等 。在本次演讲中,Red Hat Jakub Scholz的高级首席软件工程师展示了如何使用Kafka从 Twitter 等社交网络读取数据、处理它们,并使用机器学习来分析它们——一切都在 Kubernetes 之上运行 。

使用 Apache Kafka 构建您自己的社交媒体分析

文章插图
雅库布·舒尔茨:
所以我的名字是Jakub Scholz,我在 Red Hat 工作 。实际上,我大部分时间都在从事 CNCF 项目,名为Strimzi,这就是在 Kubernetes 上运行 Apache Kafka 。当然,这也是我将在今天的演讲中使用的内容 。我希望你们所有人都知道和听说过 Apache Kafka 。但我认为理解它不仅仅是一个消息传递代理非常重要 。它是一个均匀的流媒体平台,它是一个由不同组件和工具组成的伟大生态系统 。其中一些是 Apache Kafka 项目本身的一部分 。但其他是第一方组件、集成和连接器等,它们都与 Kafka 很好地打包在一起,并且都可以一起使用 。所以总的来说,Kafka 可以很容易地处理三个不同的领域 。在处理数据方面 。
它可以完成传递消息的基本消息传递工作,但它也可以存储消息,包括将它们存储为长期存储,特别是如果您使用诸如事件溯源之类的模式,您知道可以存储如果您愿意,他们的活动会持续多年 。
【使用 Apache Kafka 构建您自己的社交媒体分析】但它也可以处理集成 。所以它有这个称为 Kafka Connect API 的组件,它真正专注于通过将来自其他系统的消息导入 Kafka 或将它们从 Kafka 导出到其他一些系统来与其他系统集成 。它还有自己的流处理库,称为 Kafka 流 API 。你可以在那里做流处理,包括有状态的、操作的、关节的等等 。所以它真的是一个非常非常强大的库 。
在我今天的演讲中,我们将使用这些东西是,我们将使用 Kafka Connect 部分,以及来自另一个 Apache 项目的连接器:Apache Commons,它也是众所周知的,并提供了数百种不同的集成 。使用 Apache Commons 的一种方式也是作为 Kafka Connect 中的连接器 。所以我们将使用这个连接器连接到 Twitter API 并在 Twitter 上搜索一些推文 。当我们发现符合我们标准的推文时,我们将选取三个,然后将它们作为消息传递给我们的 Kafka 代理 。从那里,我们将使用我们的流处理应用程序来获取它,该应用程序将读取推文并使用深度 JAVA 学习库对它们进行一些情绪分析. 所以基本上,应用机器学习来判断消息的情绪,然后判断情绪是正面还是负面,然后它基本上会识别这些消息,并通过将它们发送回 Kafka 代理来自动转发它们,再次,Kafka Connect 会将其拾取并导出回 Twitter API 。您将能够将它们视为推文 。当然,因为我们在 Kubernetes Day 上发布数据,所以所有这些都将在 Kubernetes 之上运行 。它将使用 Strimzi 运算符 。
那么让我们来看看它是如何工作的,以及我们如何让它运行起来 。如果您想参加此演示,您可以阅读一些内容并使用此标签 #BYOSMA 来构建您自己的社交媒体分析 。如果你使用这个标签,情绪分析应用程序应该会自动提取并分析它,你可能会在这个演示中看到你的推文 。
因此,让我们首先切换到命令行并检查我们已经运行的内容 。正如你所看到的,我已经部署了所有东西以节省下载容器映像和启动东西的时间,但是我在这里运行的是 Kafka 集群,我在这里运行的是 Zookeeper 集群 。这里我也有我的 Kafka Connect 服务器,这里是情感分析应用程序,它将分析推文 。这里重要的部分是 Strimzi 运算符,如果您遵循运算符的工作方式和运算符模式,那么这就是真正运行和管理所有这些组件的内容,并且插入前面的讨论,您当然可以安装它也使用 OLM 和operatorhub.io 。
现在,简单介绍一下operator是如何工作的,你基本上是创建像这样的自定义资源,在这里你指定整个Kafka资源,包括资源、Java配置监听器、安全性,你可以看到只是我的一个小部署家庭集群在这里 。我还可以以跟踪或 Prometheus 指标的形式配置授权、身份验证、存储、可观察性,当您部署它时,操作员会负责其余的工作 。因为基本上,我在这里展示的所有内容都是以声明方式完成的,并且可以使用诸如 GitOps 之类的东西来完成 。您也可以对 Kafka Connect 执行完全相同的操作,因为 Kafka Connect 作为外部义务连接到 Kafka 代理,所以我首先必须创建这个 Kafka 用户,您可以使用它来进行身份验证,我可以指定授权规则 。然后我可以指定 Kafka Connect 部署本身,在其中指定哪些连接器插件应加载到我的连接部署中 。记住生态的东西和下载第三方插件,运营商会自动为我和这些插件组合一个新的容器镜像并自动部署 。


推荐阅读