在本系列的前一篇博客《将流转化为数据产品》中,咱们谈到了缩小数据生成 / 摄取之间的提早以及从这些数据中产生剖析后果和洞察力的日益增长的需要。咱们探讨了如何应用带有 Apache Kafka 和 Apache Flink 的 Cloudera 流解决 (CSP) 来实时和大规模地解决这些数据。在这篇博客中,咱们将展现一个实在的例子来阐明如何做到这一点,看看咱们如何应用 CSP 来执行实时欺诈检测。
构建实时流剖析数据管道须要可能解决流中的数据。流内解决的一个要害先决条件是可能收集和挪动在源点生成的数据。这就是咱们所说的第一英里问题。本博客将分两局部公布。在第一局部中,咱们将钻研由 Apache NiFi 提供反对的 Cloudera DataFlow 如何通过轻松高效地获取、转换和挪动数据来解决第一英里问题,以便咱们能够轻松实现流剖析用例。咱们还将简要探讨在 Cloudera DataFlow 的云原生 Kubernetes 部署中运行此流程的劣势。
在第二局部中,咱们将探讨如何应用 Apache Flink 运行实时流剖析,咱们将应用 Cloudera SQL Stream Builder GUI 仅应用 SQL 语言(无需 Java/Scala 编码)轻松创立流作业。咱们还将应用流剖析作业产生的信息来提供不同的上游零碎和仪表板。
用例
欺诈检测是咱们摸索的工夫要害用例的一个很好的例子。咱们都经验过这样一种状况,即咱们的信用卡或咱们意识的人的卡的详细信息已被泄露,并且非法交易被记入卡中。为了最大限度地缩小这种状况下的损失,信用卡公司必须可能立刻辨认潜在的欺诈行为,以便它能够阻止信用卡并分割用户以验证交易,并可能发行一张新卡来替换受损的信用卡。
卡交易数据通常来自事件驱动的数据源,新数据会随着事实世界中产生的卡购买而呈现。然而,除了流数据之外,咱们还有传统的数据存储(数据库、键值存储、对象存储等),其中蕴含可能必须用于丰盛流数据的数据。在咱们的用例中,流数据不蕴含帐户和用户详细信息,因而咱们必须将流与参考数据连接起来,以生成咱们须要查看每个潜在欺诈交易的所有信息。
依据所产生信息的上游用处,咱们可能须要以不同的格局存储数据:为 Kafka 主题生成潜在欺诈交易列表,以便告诉零碎能够立刻采取行动;将统计数据保留在关系或操作仪表板中,以进行进一步剖析或提供仪表板;或将原始事务流保留到长久的长期存储中,以供未来参考和进行更多剖析。
咱们在本博客中的示例将应用 Cloudera DataFlow 和 CDP 中的性能来实现以下性能:
- Cloudera DataFlow 中的 Apache NiFi 将读取通过网络发送的交易流。
- 对于每笔交易,NiFi 都会调用 Cloudera 机器学习 (CML) 中的生产模型来评估交易的欺诈后劲。
- 如果欺诈分数高于某个阈值,NiFi 会立刻将事务路由到告诉零碎订阅的 Kafka 主题,该主题将触发适当的操作。
- 评分的事务被写入 Kafka 主题,该主题将为在 Apache Flink 上运行的实时剖析过程提供数据。
- 带有分数的交易数据也被保留到 Apache Kudu 数据库中,以供当前查问和提供欺诈仪表板。
- 应用 SQL Stream Builder (SSB),咱们应用间断流式 SQL 来剖析交易流,并依据购买的地理位置检测潜在的欺诈行为。
- 辨认出的欺诈交易被写入另一个 Kafka 主题,该主题为零碎提供必要的操作。
- 流式 SQL 作业还将欺诈检测保留到 Kudu 数据库。
-
来自 Kudu 数据库的仪表板提要显示欺诈摘要统计信息。
应用 Cloudera DataFlow 获取
Apache NiFi 是 Cloudera DataFlow 的一个组件,能够轻松为您的用例获取数据并施行必要的管道来清理、转换和提供流解决工作流。凭借 300 多个开箱即用的处理器,它可用于执行通用数据散发、获取和解决来自简直任何类型的源或接收器的任何类型的数据。
在这个用例中,咱们创立了一个绝对简略的 NiFi 流程,它实现了上述步骤 1 到 5 的所有操作,咱们将在上面更具体地形容这些操作。
在咱们的用例中,咱们正在解决来自内部代理的金融交易数据。该代理将每笔交易发送到一个网络地址。每笔交易都蕴含以下信息:
- 交易工夫戳
- 关联账户的 ID
- 惟一的交易 ID
- 交易金额
-
交易发生地的地理坐标(经纬度)
交易音讯采纳 JSON 格局,如下例所示:{ "ts": "2022-06-21 11:17:26", "account_id": "716", "transaction_id": "e933787c-f0ff-11ec-8cad-acde48001122", "amount": 1926, "lat": -35.40439536601375, "lon": 174.68080620053922 }
NiFi 可能创立网络侦听器来接管来自网络的数据。对于此示例,咱们能够简略地将 ListenUDP 处理器拖放到 NiFi 画布中,并应用所需的端口对其进行配置。能够参数化处理器的配置以使流可重用。在这种状况下,咱们定义了一个名为 #{input.udp.port} 的参数,稍后咱们能够将其设置为咱们须要的确切端口。
用模式形容数据
模式是形容数据结构的文档。在环境中的多个应用程序甚至 NiFi 流中的处理器之间发送和接收数据时,领有一个存储库十分有用,在该存储库中集中管理和存储所有不同类型数据的模式。这使应用程序更容易互相通信。
Cloudera 数据平台 (CDP) 附带 Schema Registry 服务。对于咱们的示例用例,咱们已将事务数据的模式存储在模式注册表服务中,并将咱们的 NiFi 流配置为应用正确的模式名称。NiFi 与 Schema Registry 集成,它会主动连贯到它以在整个流程中须要时检索模式定义。
数据在 NiFi 流中的门路由不同处理器之间的视觉连贯决定。例如,在这里,ListenUDP 处理器先前接管到的数据被“标记”为咱们要应用的模式的名称:“事务”。
评分和路由事务
咱们应用 Cloudera 机器学习 (CML) 训练并构建了一个机器学习 (ML) 模型,以依据每笔交易的欺诈后劲对其进行评分。CML 提供了一个带有 REST 端点的服务,咱们能够应用它来执行评分。当数据流经 NiFi 数据流时,咱们心愿调用数据点的 ML 模型服务来获取每个数据点的欺诈分数。
为此,咱们应用 NiFi 的 LookupRecord,它容许针对 REST 服务进行查找。CML 模型的响应蕴含一个欺诈分数,由一个介于 0 和 1 之间的实数示意。
LookupRecord 处理器的输入,其中蕴含与 ML 模型的响应合并的原始交易数据,而后连贯到 NiFi 中一个十分有用的处理器:QueryRecord 处理器。
QueryRecord 处理器容许您为处理器定义多个输入并将 SQL 查问与每个输入相关联。它将 SQL 查问利用于通过处理器流式传输的数据,并将每个查问的后果发送到关联的输入。
在这个流程中,咱们定义了三个 SQL 查问在这个处理器中同时运行:
请留神,一些处理器还定义了额定的输入,例如“失败”、“重试”等,以便您能够为流程定义本人的错误处理逻辑。
将流送入其余零碎
在流程的这一点上,咱们曾经用 ML 模型的欺诈分数丰盛了咱们的流,并依据咱们上游的须要转换了流。实现咱们的数据摄取剩下的就是将数据发送到 Kafka,咱们将应用它来提供咱们的实时剖析过程,并将事务保留到 Kudu 表,咱们稍后将应用它来提供咱们的仪表板,如以及其余非实时剖析过程。
Apache Kafka 和 Apache Kudu 也是 CDP 的一部分,配置 Kafka 和 Kudu 特定的处理器来为咱们实现工作非常简单。
在云上本地运行数据流
构建 NiFi 流程后,它能够在您可能领有的任何 NiFi 部署中执行。Cloudera DataFlow for the Public Cloud (CDF-PC) 提供了一个云原生弹性流运行时,能够高效地运行流。
与固定大小的 NiFi 集群相比,CDF 的云原生流运行时具备许多劣势:
- 您不须要治理 NiFi 集群。您能够简略地连贯到 CDF 控制台,上传流定义并执行它。必要的 NiFi 服务会主动实例化为 Kubernetes 服务来执行流程,对用户通明。
- 它在流之间提供了更好的资源隔离。
- 流执行能够主动向上和向下扩大,以确保有适量的资源来解决以后正在解决的数据量。这防止了资源匮乏,并通过在不再应用时重新分配不必要的资源来节省成本。
-
具备用户定义的 KPI 的内置监控能够针对每个特定流进行定制,具备不同的粒度(零碎、流、处理器、连贯等)。
平安入站连贯
除了上述之外,将平安网络端点配置为入口网关是家喻户晓的云中难以解决的问题,并且每个云提供商的步骤各不相同。
它须要设置负载平衡器、DNS 记录、证书和密钥库治理。
CDF-PC 通过入站连接功能形象出这些复杂性,容许用户通过提供所需的端点名称和端口号来创立入站连贯端点。
参数化和可定制的部署
在流程部署中,您能够定义流程执行的参数,还能够抉择流程的大小和主动缩放个性:
本机监控和警报
能够定义自定义 KPI 来监控对您很重要的流程方面。还能够定义警报以在超过配置的阈值时生成告诉:
部署后,能够在 CDF 仪表板上监控为定义的 KPI 收集的指标:
Cloudera DataFlow 还提供对流的 NiFi 画布的间接拜访,以便您能够在必要时查看执行的详细信息或解决问题。GUI 中的所有性能也能够通过 CDP CLI 或 CDF API 以编程形式应用。创立和治理流程的过程能够齐全自动化并与 CD/CI 管道集成。
论断
在生成数据时收集数据并在剖析平台上疾速提供数据,这对于任何须要实时处理数据流的我的项目的胜利都是至关重要的。在这篇博客中,咱们展现了 Cloudera DataFlow 如何让在云中创立、测试和部署数据管道变得容易。
Apache NiFi 的图形用户界面和丰盛的处理器容许用户创立简略和简单的数据流,而无需编写代码。交互式体验使得在开发过程中对流程进行测试和故障排除变得非常容易。
Cloudera DataFlow 的流运行时在云原生和弹性环境中为生产中的流执行减少了稳健性和效率,使其可能扩大和放大以适应工作负载需要。
在本博客的第二局部,咱们将理解如何应用 Cloudera 流解决 (CSP) 来实现咱们的欺诈检测用例的施行,对咱们刚刚摄取的数据执行实时流剖析。
理解无关 Cloudera DataFlow 的更多信息并试一试的最快办法是什么?首先,拜访咱们新的 Cloudera DataFlow 主页。而后,加入咱们的互动产品之旅或注册收费试用。
原文作者:André Araújo
原文链接:https://blog.cloudera.com/fraud-detection-with-cloudera-stream-processing-part-1/
关注微信公共号理解更多信息:
本文由 mdnice 多平台公布