大数据流难管理?使用StreamSets利用IoT数据有望发掘独特且前所未有的业务洞察力,但前提是企业能够成功管理从众多IoT数据源流入的数据。许多企业试图从IoT项目中获取价值的一个常见问题是数据漂移:源设备和数据处理基础设施中经常发生不可预测的变化,从而导致数据的结构、内容或含义发生变化。无论是流式处理还是批处理,数据通常会通过多种工具从其来源传输到最终存储位置。链上任何地方的变化都可能导致下游系统中的数据不完整、不准确或不一致,无论是源系统架构的变化、编码字段值含义的变化,还是软件组件的升级参与数据的生成或添加。这种数据漂移的影响可能特别有害,因为它们通常长时间未被发现,从而使低保真数据污染数据存储和后续分析。在被发现之前,使用这些有问题的数据可能会导致错误的发现和糟糕的业务决策。当最终发现问题时,通常会在数据科学家手动清理和准备数据的帮助下解决这些问题,这会增加硬成本、机会成本和数据分析的延迟。StreamSetsDataCollector使用StreamSetsDataCollector构建和管理大数据摄取管道将有助于减轻数据漂移的影响,同时显着减少花在数据清理上的时间。在本文中,我们将介绍一个典型的用例:实时摄取物联网传感器生成的数据,将其输入HDFS进行分析,并使用Impala或Hive将其可视化。StreamSetsDataCollector无需编写一行代码即可从各种来源获取流数据和批数据。StreamSets数据收集器在数据流式传输之前执行转换和清理数据,然后写入各种目的地。管道就位后,您可以获得精细的数据流指标、检测异常数据并发出警报,以便您可以密切关注管道性能。StreamSetsDataCollector可以独立运行或部署在Hadoop集群上,它提供支持多种类型的数据源和目标的连接器。以下用例涉及从集装箱实时生成的数据。数据漂移的第一个例子是集装箱中使用的物联网传感器。由于长期升级,生产线中的传感器运行三种不同固件版本中的一种。每个版本都会添加新的数据字段并更改架构。为了从这些传感器数据中获取价值,我们用来摄取信息的系统必须能够适应这种多样性。清洗和传递数据我们的管道从RabbitMQ系统读取数据,该系统负责从生产线上的传感器接收MQTT消息。我们检查以确保我们收到的消息是我们想要处理的消息。为此,我们使用数据流选择器处理程序,它指定入站消息的数据规则。然后我们使用规则声明所有符合规则标准的数据都被传递到下游,但任何不匹配的数据都被丢弃。然后,我们使用另一个流选择器根据设备的固件版本路由数据。匹配版本1的所有记录都采用一条路径,匹配版本2的所有记录采用另一条路径,依此类推。我们还指定了一个默认的包罗万象的规则,将任何异常发送到“错误”路径。对于现代数据流,我们充分预料到意外的数据变化,因此我们设置了优雅的错误处理机制:直接将异常记录到本地文件、Kafka数据流或辅助管道。这样,我们可以在不满足主要目的之后重新处理数据的同时保持管道运行。一个好的起点是处理固件版本3的数据,它添加了纬度/经度数据。我们立即想要确保这些字段存在于数据集中并且数据包含有效值。由于location字段是嵌套结构,我们希望将其展平,最终丢弃嵌套数据。此外,固件版本2包括新的方向字段(原始、俯仰和滚动),我们可以以类似的方式验证和清理这些字段。最后,所有设备版本都包括温度和湿度读数。首先,我们转换这些读数的数据类型。湿度转换为双精度,湿度转换为整数,日期转换为Unix时间戳。然后我们使用脚本处理程序编写一些自定义逻辑,例如将华氏温度值转换为摄氏温度。StreamSets脚本处理程序支持Jython、Groovy和JavaScript。清理数据后(即根据固件版本和最终用途路由数据),我们将其发送到多个HDFS目的地。配置目标StreamSets本机支持许多数据格式,例如纯文本、分隔文本、JSON、Protobuf和A??vro。在此示例中,我们将数据写入压缩的Avro文件。可以灵活配置HDFS目的地。您可以根据公司政策的要求配置安全性,动态配置输出文件的路径和位置,甚至决定写入多个ClouderaCDH版本。设计管道后,您可以切换到预览模式并使用数据样本来测试和调试数据流。您可以遍历每个处理程序,分析任何阶段的数据状态。例如,我们可以看到下面将reading_date和temperature的数据类型转换为long和double。如果执行了转换数据的操作,StreamSets也会提醒您。您还可以将异常或“边缘情况”数据注入数据流,并查看它如何影响您的数据流。预览模式允许您轻松调试复杂的管道,而无需将管道投入生产。执行管道现在我们已准备好执行管道并开始将数据摄取到我们的集群中。单击“开始”按钮,用户界面将切换到执行模式。此时,StreamSetsDataCollector摄取数据,在内存中处理数据,并将数据发送到目的地。屏幕底部的监控窗口显示了各种实时指标,例如读入了多少条记录,写出了多少条记录。您还可以查看每个处理程序花费了多少时间以及它使用了多少内存。还可以通过Java管理扩展(JMX)访问这些指标以及更多指标。一旦我们将数据输入HDFDS,我们就可以开始查询Impala并运行分析、机器学习或可视化。如今,随着用户更改和更新系统,甚至切换平台,物联网设备、传感器日志、网络点击流和其他重要数据源都在不断变化。这些数据内容、结构、行为和意义的变化是不可预测的、未经宣布的和无休止的,它们对数据处理和分析系统及其操作构成重大危害。StreamSetsDataCollector有助于管理对数据基础架构的持续更改、驯服数据漂移并确保数据处理系统的完整性。原标题:TameunrulybigdataflowswithStreamSets,作者:ArvindPabhakar
