云与雾中的数据分析和机器学习:技术解析与应用
1. 数据处理阶段概述
在数据处理流程中,会有一个暂存阶段,像 Kafka 这样的消息系统会将数据路由到流处理器、批处理器,或者两者皆有。流处理能够处理连续的数据流,由于数据在内存中处理,处理速度通常很快,但处理速度必须与数据进入系统的速度相当或更快。不过,对于工业机械和自动驾驶汽车等场景,流处理无法提供严格的实时操作特性。
而批处理在处理大量数据时效率较高,尤其在物联网数据需要与历史数据进行关联时非常有用。在数据处理之后,可能会进入预测和响应阶段,信息会展示在仪表盘上、被记录,或者系统会向边缘设备发送响应,以采取纠正措施解决问题。
2. 物联网中的基本数据分析功能
物联网中的数据分析旨在从数据流中发现事件,实时流分析机器需要具备多种分析功能,具体如下:
-
预处理
:过滤掉无关紧要的事件,进行数据变性、特征提取、分割,将数据转换为更合适的形式(尽管数据湖通常不希望立即进行转换),并为数据添加属性标签。
-
警报
:检查数据,如果数据超出某个边界条件,则发出警报,例如传感器温度超过设定的上限。
-
窗口化
:创建事件的滑动窗口,仅对该窗口内的数据应用规则。窗口可以基于时间(如一小时)或长度(如 2000 个传感器样本)。有滑动窗口(如仅检查最新的 10 个传感器事件,新事件出现时产生结果)和批处理窗口(如仅在窗口结束时产生事件)两种类型。窗口化适用于规则制定和事件计数,可用于检测机器故障。
-
连接
:将多个数据流合并为一个新的单一数据流。例如,物流公司使用资产跟踪信标跟踪货物,同时车辆和设施的地理位置信息也在流式传输,当车辆取走货物时,这两个数据流就会合并。
-
错误处理
:数百万个传感器会产生缺失数据、乱码数据和乱序数据,此分析模式用于在数据流中关联数据,以发现这些错误情况。
-
数据库交互
:分析包需要与数据仓库进行交互,例如在蓝牙资产标签场景中,系统会参考丢失标签 ID 的数据库。
-
时间事件和模式
:通常与窗口模式结合使用,一系列事件构成一个感兴趣的模式,可看作是一个状态机。例如,根据温度、振动和噪音监测机器健康状况,当温度超过 100°C、振动超过 1 m/s、机器发出 110 dB 的噪音,且按此顺序发生时,发出警报。
-
跟踪
:涉及确定事物的存在位置、事件发生的时间或事物未出现在应出现的位置。例如,公司需要知道服务卡车的具体位置和最后出现的时间,在农业、人员移动、患者跟踪等领域有广泛应用。
-
趋势分析
:对预测性维护特别有用,基于时间相关的系列数据设计规则来检测事件。与时间事件类似,但趋势分析将时间作为一个维度,可用于检测牲畜健康状况。
-
批处理查询
:批处理通常比实时流处理更全面、更深入,设计良好的流平台可以将分析任务分叉到批处理系统中。
-
深度分析路径
:在实时处理中,对事件做出即时决策,但某些事件是否真的需要发出警报可能需要进一步的非实时处理。例如,智能城市发布儿童失踪的琥珀警报,实时流引擎先进行简单的特征提取和分类,识别可能的车牌或标志,然后将确认的帧传递给深度分析包进行更深入的对象识别,以消除误报。
-
模型和训练
:前面提到的一级模型可能是机器学习系统的推理引擎,机器学习工具基于训练好的模型进行实时分析。
-
信号传递
:通常需要将操作信号传递回边缘设备和传感器,例如工厂自动化和安全场景中,机器温度超过一定限制时,记录事件并向边缘设备发送信号以减缓机器速度。
-
控制
:需要对分析工具进行控制,包括启动、停止、报告、记录或调试等功能。
3. 顶级云管道架构
从传感器到仪表盘的典型数据流程中,数据会经过多种媒介(如 WPAN 链接、宽带、数据湖形式的云存储等)。在构建云分析解决方案时,需要考虑扩展性问题,早期适合 10 个物联网节点和单个云集群的设计,在物联网设备数量增长到数千个且分布在多个地理位置时,可能无法有效扩展。
云的分析(预测 - 响应)部分有多种形式:
-
规则引擎
:简单地定义操作并产生结果,也称为业务规则管理系统(BRMS)。规则引擎可以是有状态的,会根据事件的历史顺序、数量或模式采取不同的操作;也可以是无状态的,仅检查当前事件。例如 Drools 规则引擎,它由 Red Hat 开发,支持正向和反向链式推理。
-
正向链式推理
:不断获取可用数据,直到满足规则链,例如一系列的 if/then 子句,持续搜索以满足其中一个路径来推断操作。
-
反向链式推理
:从操作开始,反向推导所需的数据条件。
- 以下是一个简单的规则引擎伪代码示例:
Smoke Sensor = Smoke Detected
Heat Sensor = Heat Detected
if (Smoke_Sensor == Smoke_Detected) && (Heat_Sensor == Heat_Detected) then
Fire
if (Smoke_Sensor == !Smoke_Detected) && (Heat_Sensor == Heat_Detected) then
Furnace_On
if (Smoke_Sensor == Smoke_Detected) && (Heat_Sensor == !Heat_Detected) then
Smoking
if (Fire) then Alarm
if (Furnace_On) then Log_Temperature
if (Smoking) then SMS_No_Smoking_Allowed
- 假设 `Smoke_Sensor` 为关闭,`Heat_Sensor` 为开启,正向链式推理会推断出正在记录温度;反向链式推理则会从记录温度这个结果出发,反向证明炉子是否开启。
- 流处理 :将传感器读数等事件注入流处理器,处理路径是一个图,图中的节点代表操作符,将事件发送给其他操作符。该图可以在集群上并行复制和执行,便于扩展到数百台机器。
- 复杂事件处理 :基于类似 SQL 的查询,用高级语言编写,基于事件处理,针对低延迟进行了优化。
- Lambda 架构 :通过在大规模数据集上并行执行批处理和流处理,试图平衡吞吐量和延迟。
4. 实时分析的必要性及挑战
实时分析之所以重要,是因为数据从数百万个节点同时、异步地流式传输,且存在各种错误、格式问题和时间差异。以纽约市的 250,000 个智能路灯为例,每个路灯会监测周围的运动、自身是否需要维护、温度和湿度等信息,每秒会产生 250,000 条消息,高峰时可达 325,000 条。如果云服务每秒只能处理 250,000 条消息,在高峰时段就会出现积压。只有增加集群的处理能力或减少输入流,系统才能恢复正常。
5. 规则引擎详细解析
规则引擎是一种执行事件操作的软件结构,也称为业务规则管理系统(BRMS)。规则引擎可以是有状态的或无状态的。以 Drools 规则引擎为例,它由 Red Hat 开发,支持正向和反向链式推理。
-
正向链式推理
:持续获取可用数据,直到满足规则链,能够对新数据做出响应,触发新的推理。
-
反向链式推理
:从操作出发,反向推导所需的数据条件。
-
Drools 基本元素
:
-
会话
:定义默认规则。
-
入口点
:定义要使用的规则。
-
When 语句
:条件子句。
-
Then 语句
:要执行的操作。
-
Drools 规则示例
:
rule "Furnace_On"
when
Smoke_Sensor(value > 0) && Heat_Sensor(value > 0)
then
insert(Furnace_On())
end
执行完所有规则后,可以使用以下查询语句检查哪些规则为真:
query "Check_Furnace_On"
$result: Furnace_On()
end
规则有句法和语义两种模式,Drools 支持创建非常复杂的规则,可能需要数据库来存储这些规则。
6. 数据摄取、流处理和数据湖
物联网设备通常与传感器相关,传感器会异步地广播数据,无论云或雾节点是否在监听。物联网数据流具有持续、异步、无结构或有结构以及尽可能接近实时的特点。
为了满足物联网实时需求,云架构需要优化,保持数据流动,避免数据轮询。大多数流处理框架支持内存操作,避免将数据临时存储到大容量文件系统中。Apache 提供了多个开源软件项目来构建流处理架构:
-
Apache Spark
:以小批量方式处理数据,适用于内存受限的云集群(如小于 1TB),基于内存处理,减少了文件系统依赖和延迟,对机器学习模型处理也很有用。
-
Apache Storm
:试图在云架构中尽可能接近实时地处理数据,具有低延迟的特点,处理大数据事件而不是将其分割成小批量。
为了给流处理框架提供数据,可以使用 Apache Kafka 或 Flume。Kafka 可以在摄取各种物联网传感器和客户端数据时作为 MQTT 使用,能够按需扩展,对事件高峰有很好的响应能力。Flume 是一个分布式系统,用于收集、聚合和移动数据,与 Hadoop 紧密集成,但扩展性略低于 Kafka。
当物联网部署涉及数千或数百万个传感器和终端节点时,云环境可能会使用数据湖。数据湖是一个大规模的存储设施,用于存储来自多个来源的原始未过滤数据,采用扁平文件系统,通过为每个条目附加元数据标签来组织数据。数据湖可以存储任何形式的数据,并且认为所有数据都有价值,会永久保存,对数据分析引擎非常有利。
以下是一个使用传统批处理和流处理的概念架构流程图:
graph LR
A[传感器] --> B[Kafka]
B --> C[Spark]
B --> D[数据湖]
C --> E[数据仓库]
D --> F[数据分析引擎]
F --> G[仪表盘/响应]
综上所述,在云与雾环境中进行数据分析和机器学习,需要综合考虑数据处理阶段、分析功能、云管道架构、规则引擎、数据摄取和存储等多个方面,以构建高效、可扩展的系统,满足物联网实时性和大数据处理的需求。
云与雾中的数据分析和机器学习:技术解析与应用
7. 不同数据处理方式的对比
| 处理方式 | 特点 | 适用场景 | 示例 |
|---|---|---|---|
| 流处理 | 处理连续数据流,内存处理速度快,需与数据进入速度匹配,接近实时处理,但对工业机械和自动驾驶汽车等无法提供严格实时特性 | 实时监测、实时决策场景 | 智能路灯实时监测周围环境 |
| 批处理 | 处理高容量数据更高效,适合与历史数据关联分析 | 需要综合大量数据进行深入分析的场景 | 物联网数据与历史数据关联分析 |
8. 规则引擎的操作步骤
以 Drools 规则引擎为例,使用规则引擎进行事件处理的操作步骤如下:
1.
定义规则
:使用 Drools 的基本元素,如会话、入口点、When 语句和 Then 语句来定义规则。例如:
rule "Furnace_On"
when
Smoke_Sensor(value > 0) && Heat_Sensor(value > 0)
then
insert(Furnace_On())
end
- 执行规则 :将规则加载到 Drools 引擎中,引擎会根据输入的数据对规则进行匹配和执行。
- 查询结果 :执行完所有规则后,使用查询语句检查哪些规则为真。例如:
query "Check_Furnace_On"
$result: Furnace_On()
end
9. 流处理框架的选择与使用
在选择流处理框架时,需要考虑集群的内存大小、对实时性的要求等因素:
-
如果集群内存受限(如小于 1TB)
:可以选择 Apache Spark,其以小批量方式处理数据,基于内存处理,减少了文件系统依赖和延迟,对机器学习模型处理也很有用。操作步骤如下:
1. 安装和配置 Apache Spark 环境。
2. 编写 Spark 应用程序,将数据以小批量的形式输入到 Spark 中进行处理。
3. 对处理结果进行存储或进一步分析。
-
如果对实时性要求极高
:可以选择 Apache Storm,其试图在云架构中尽可能接近实时地处理数据,具有低延迟的特点,处理大数据事件而不是将其分割成小批量。操作步骤如下:
1. 安装和配置 Apache Storm 环境。
2. 编写 Storm 拓扑结构,定义数据源、处理组件和输出组件。
3. 提交拓扑结构到 Storm 集群中运行。
10. 数据湖的优势与使用
数据湖在物联网环境中有诸多优势:
-
存储灵活性
:可以存储任何形式的数据,无论是有结构还是无结构的数据。
-
数据价值保留
:认为所有数据都有价值,会永久保存,为数据分析提供了丰富的数据资源。
-
对分析引擎有利
:大量的数据可以用于训练数据分析引擎的模型,提高分析的准确性和可靠性。
使用数据湖的操作步骤如下:
1.
选择数据湖平台
:如 Apache Hadoop 等。
2.
将数据摄取到数据湖
:可以使用 Kafka 等工具将物联网传感器数据摄取到数据湖中。
3.
对数据湖中的数据进行管理和组织
:通过为每个条目附加元数据标签来组织数据。
4.
使用数据分析引擎对数据湖中的数据进行分析
:如机器学习模型、深度学习模型等。
11. 云架构优化策略
为了支持物联网实时需求,云架构需要进行优化,具体策略如下:
-
保持数据流动
:数据在云服务之间的传输应像管道一样,避免数据轮询,确保数据持续移动。
-
内存操作优先
:大多数流处理框架应支持内存操作,避免将数据临时存储到大容量文件系统中,减少延迟。
-
合理使用消息队列
:如 Apache Kafka 等,它可以按需扩展,对事件高峰有很好的响应能力,有助于保持数据的流畅传输。
-
优化存储和文件系统访问
:减少不必要的存储和文件系统操作,提高数据处理效率。
12. 未来发展趋势
随着物联网技术的不断发展,云与雾中的数据分析和机器学习将面临更多的挑战和机遇:
-
更高的实时性要求
:对于工业自动化、自动驾驶等领域,对数据分析的实时性要求将越来越高,需要进一步优化云与雾的架构,提高数据处理速度。
-
更复杂的数据分析模型
:随着数据量的不断增加,需要开发更复杂的数据分析模型,如深度学习模型、强化学习模型等,以挖掘数据中的潜在价值。
-
边缘计算的发展
:边缘计算将在物联网中发挥越来越重要的作用,将部分数据分析任务从云端转移到边缘设备,减少数据传输延迟,提高系统的响应速度。
13. 总结
云与雾中的数据分析和机器学习是物联网领域的关键技术,涉及数据处理阶段、分析功能、云管道架构、规则引擎、数据摄取和存储等多个方面。通过合理选择和使用各种技术和工具,如流处理框架、批处理系统、规则引擎、数据湖等,可以构建高效、可扩展的系统,满足物联网实时性和大数据处理的需求。同时,随着技术的不断发展,需要不断探索和创新,以应对未来的挑战和机遇。
以下是一个云与雾数据分析和机器学习整体流程的流程图:
graph LR
A[物联网传感器] --> B[数据摄取]
B --> C[流处理/批处理]
C --> D[规则引擎]
C --> E[数据湖]
D --> F[预测与响应]
E --> F
F --> G[仪表盘/边缘设备]
通过以上的介绍和分析,希望能够帮助读者更好地理解云与雾中的数据分析和机器学习技术,为实际应用提供参考和指导。
超级会员免费看
56

被折叠的 条评论
为什么被折叠?



