2.5 学习层
随着物联设备生成的数据量增大,人们需要用合适的技术来学习这些数据。学习和分析的软件产品将包含查询技术、有监督和无监督的机器学习技术等。以往人们主要关注IoP应用程序,大多数应用于学习的技术已应用到与人相关的数据学习中。和整个技术栈的其他组件一样,未来基于物联设备数据的机器学习仍大有改进空间。不幸的是,如果我们不着手创新学习方法,那么在很多场合数据最终会被“数字化排放”——没有采集,也没有分析。
幸运的是,基于开源技术和云服务的结合可以快速地实现构建现代化分析的IT-OT应用程序。目前,至少有16种不同的技术类别和132种不同的软件产品可供选择:
(1)计算和存储云服务(如AWS EC2和S3)。计算和存储云服务按需要提供计算和存储资源,由服务提供商管理。人们可以在本地计算和存储上构建分析应用程序,但这将会增加所需的技术决策数量,提高固定设备和人员管理资源的前期成本。
(2)容器编排。威睿公司(VMWare)开创了创建虚拟硬件机(VM)的先河,但VM是重量级的,而且是不可移植的。现代分析应用程序使用基于操作系统级虚拟化的容器,而不是采用硬件虚拟化。容器编排根据用户工作量安排计算、网络和存储等资源,比VM更容易构建。另外,由于容器编排与底层资源和主机文件系统是分离的,因此可以通过云和操作系统分发进行移植。例如,这种容器平台有Kubernetes、Apache Mesos和Docker Swarm。
(3)批量数据处理。随着数据集的规格越来越大,分析应用程序需要一种能有效处理大型数据库的方法。过去使用一台大型计算机来处理和存储数据,而现在的批量数据处理软件可以把商用硬件数据聚合在一起并行分析大型数据集。这类软件产品有Amazon EWR、Hortonworks和Databricks。
(4)流数据处理。当分析应用程序被设计用于与准实时数据实现交互时,需要应用流数据处理软件。流数据处理软件具有3个主要功能:
①发布和订阅记录流;
②以容错、持久的方式存储记录流;
③当记录流出现时,具有处理记录流的能力。
这类软件的供应商有IBM Streams、Apache Kafka和亚马逊公司的Kinesis。
(5)软件预配置。从传统的裸机到无服务器,基础设施的自动化预配置是自动化分析应用程序运行生命周期的第一步。软件预配置软件用来配置最新的云平台、虚拟化主机与管理程序、网络设备及裸机服务器。在任何进程流水线(process pipeline)中,软件预配置应用程序都提供网络连接工具。这类软件产品有Puppet、Chef、Ansible和SaltStack。
(6)IT数据采集。大多数IT应用程序建立在SQL数据库之上。任何分析应用程序都需要具有能够从各种各样的SQL数据源处收集数据的能力。这类软件产品有Teradata、Postgres、MongoDB、Microsoft SQL Server和Oracle。
(7)OT数据采集。对于与传感器数据有关的分析应用程序来说,它需要收集和处理时间序列数据。传统历史数据库有傲时软件公司的PI和万维公司(Wonderware)的数据库。甲骨文公司提供了一个扩展到包括时间序列数据的传统数据库技术的示例。还有一些公司提供新的数据存储软件产品,如InfluxData、TimeScale等公司。
(8)消息代理。消息代理是一个程序,它把发送器消息传递协议发送的消息转换为接收器消息传递协议。这意味着当消息来自成百上千甚至数百万个端点时,需要一个消息代理来为这些消息创建一个集中存储区/处理程序。这类软件产品有RabbitMQ、Redis和MQTT。
(9)数据流水线编排。数据工程师创建数据流水线用来协调数据从源头到最终目的地的移动、转换、验证和加载。数据流水线编排软件允许标识要运行的所有任务的集合,这些任务以某种能反映它们的关联关系和相关性的方式集合。这类软件产品有Airflow、Luigi和Nifi。
(10)性能监控。任何应用程序(包括分析应用程序)性能都需要进行实时性能监控来判定其存在的不良问题,最终预测其性能。这类软件产品有Datadog、New Relic和Yotascale。
(11)CI/CD。持续集成(CI)和持续交付(CD)软件支持一套工作原理和应用集合,使分析应用程序开发团队可以频繁、可靠地传送代码更改。这种实现也称为CI/CD流水线,是DevOps团队采用的最佳方法之一。这类软件产品有Jenkins、Circle CI和Travis。
(12)后端框架。后端框架由分析应用程序开发环境中的服务器端编程语言和工具组成。后端框架通过提供每个人都需要的软件来加快应用程序的开发速度,如设置用户权限软件。这类软件产品有Flask、Django和Rails。