【物联网架构】用于MQTT物联网传感器数据流异常检测的深度学习KSQL UDF

Chinese, Simplified

用于传感器分析的KSQL UDF。利用KSQL的新的API特性,用Java轻松地构建UDF / UDAF函数,从而使用Apache Kafka进行连续流处理。用例:联网汽车——使用深度学习的实时流媒体分析。

我为混合机器学习基础设施构建了一个场景,利用Apache Kafka作为可伸缩的中枢神经系统。使用公共云在极端尺度下训练分析模型(如通过谷歌ML引擎在谷歌云平台(GCP)上使用TensorFlow和TPUs。预测(即模型推断)是在本地Kafka基础设施的边缘前提下执行的(例如利用Kafka流或KSQL进行流分析)。

这篇文章的重点是在前提部署。我用KSQL UDF创建了一个用于传感器分析的Github项目。它利用KSQL的新API特性轻松地使用Java构建UDF / UDAF函数,对传入事件进行连续流处理。

用例:联网汽车——使用深度学习的实时流媒体分析

连续处理来自连接设备(本例中的汽车传感器)的数百万个事件:

Connected_Cars_IoT_Deep_Learning

我建立了不同的分析模型。他们在公共云上接受训练,利用TensorFlow、H2O和谷歌ML引擎。模型创建不是这个示例的重点。最终的模型已经准备好投入生产,并可以部署进行实时预测。

模型服务可以通过模型服务器或原生嵌入到流处理应用程序中来完成。查看模型部署中RPC与流处理的权衡和“TensorFlow + gRPC + Kafka流”示例。

演示:使用MQTT、Kafka和KSQL在边缘进行模型推断

Github项目生成汽车传感器数据,通过Confluent MQTT代理将其转发到Kafka集群进行KSQL处理和实时分析。

这个项目主要是通过MQTT将数据输入Kafka,通过KSQL对数据进行处理:

MQTT_Proxy_Confluent_Cloud

Confluent MQTT代理的一大优点是可以简单地实现物联网场景,而不需要MQTT代理。您可以通过MQTT代理直接将消息从MQTT设备转发到Kafka。这大大减少了工作和成本。如果您“只是”希望在Kafka和MQTT设备之间进行通信,那么这是一个完美的解决方案。

如果你想看这个故事的其他部分(与像Elasticsearch / Grafana这样的sink应用的集成),请看看Github项目“KSQL流物联网数据”。通过Kafka Connect和Elastic connector实现了与ElasticSearch和Grafana的集成。

 KSQL UDF 源代码

开发udf非常容易。只需在一个UDF类中实现一个Java方法:

 

@Udf(description = "apply analytic model to sensor input")
public String anomaly(String sensorinput){ "YOUR LOGIC" }

 

下面是KSQL UDF异常检测的完整源代码。(Anomaly Detection KSQL UDF.)

如何运行与Apache Kafka和MQTT代理演示?

在Github项目中描述了执行演示的所有步骤。

您只需要安装Confluent Platform,然后按照以下步骤部署UDF、创建MQTT事件并通过利用分析模型的KSQL处理它们。

我使用mosquito to生成MQTT消息。当然,您也可以使用任何其他MQTT客户机。这就是开放和标准化协议的最大好处。

Apache Kafka和机器学习的混合云架构

如果你想了解一个可扩展的、不确定供应商的机器学习基础设施背后的更多概念,请看看我在Slideshare上的演示,或者观看相应的Confluent网络研讨会“释放Apache Kafka和TensorFlow在云端”的记录。

 

原文:https://www.kai-waehner.de/blog/2018/08/02/deep-learning-kafka-ksql-udf-anomaly-detection-mqtt-iot-sensor/

本文:http://jiagoushi.pro/node/1100

讨论:请加入知识星球【首席架构师圈】或者小号【jiagoushi_pro】

本文地址
https://architect.pub/deep-learning-ksql-udf-streaming-anomaly-detection-mqtt-iot-sensor-data
SEO Title
Deep Learning KSQL UDF for Streaming Anomaly Detection of MQTT IoT Sensor Data