当今的IoT用例越来越依赖于对大量设备生成的数据进行分析或实时更新机器学习算法。如果没有实时获取、处理和采取行动,以监控患者、自动驾驶汽车或预测性维护应用的数据,则患者会遭受伤害,车辆坠毁或系统出现故障。
那么,企业如何才能经济高效地构建一个可靠的平台来大规模接收和响应大量数据?企业可以使用基于开放源代码软件堆栈构建的流平台和数据存储系统来做到这一点。
事实证明,当今许多开源解决方案在数千个生产部署中都是可靠的。许多产品都可从商业企业获得企业级支持和咨询服务,这也可能会提供企业级版本的解决方案。这些受支持的解决方案使企业可以通过实施IoT解决方案来实现其数字化转型目标,而无需支付大量的前期费用,同时还为其公司提供可靠的、面向未来的基础设施。
以下是开放源代码解决方案的样本,这些解决方案是当今许多最成功的数字化转型企业的基础。
流数据
诸如Apache Kafka或Apache Flink之类的开源流解决方案用于构建实时数据管道,以在IoT部署中的系统和应用之间移动数据。例如,在患者监控用例中,流传输解决方案会将由连接到患者的IoT传感器收集的数据传递到平台,在平台上可以对数据进行汇总、分析和存储。
Box、linkedIn、Netflix、ORacle和TwITteR使用Kafka。Flink在阿里巴巴、AWS、Capital One、eBay和Lyft的运营中使用。但是,要使流传输解决方案大规模支持实时业务流程,必须将其与其他技术集成,包括分布式内存计算平台、容器管理解决方案以及分析和机器学习功能。
内存计算
Apache IgnITe是部署在商品服务器群集上的分布式内存计算平台。它可用作插入现有应用程序和基于磁盘的数据库之间的内存数据网格,也可用作新应用程序的独立内存数据库。 IgnITe池化了群集的可用CPU和RAM,并将数据和计算分配到各个节点。它可以部署在本地、公共或私有云中或混合环境中。IgnITe支持ANSI-99 SQL和ACID事务。
IgnITe可以实时摄取大量数据。在所有数据都保留在内存中的情况下,IgnITe使用MapRedUCe在整个分布式群集上执行大规模并行处理(MPP)。利用内存数据缓存和MPP,与使用基于磁盘的数据库的应用相比,IgnITe在规模上可将应用性能提高多达1000倍。IgnITe用户还可以利用本机Kafka集成来轻松地将流数据从IoT设备提取到内存计算集群中。
正如我在上一篇文章中讨论的那样,IgnITe可用于构建数字集成中心(DIH),以聚合和处理来自多个本地数据存储,基于云的数据源和流数据源的数据。作为DIH,IgnITe提供了一个高性能的数据访问层,使聚合的数据实时可用于多个业务应用。 Apache IgnITe已用于美国航空、IBM、ING和24 HouR FITneSS的生产中。
集群管理
KubeRnetes可以自动执行已在DockeR或其他容器解决方案中容器化的应用的部署和管理。容器解决方案创建一个包含应用和虚拟化操作系统的软件包,以使该应用可以在同一硬件上或跨虚拟化硬件运行多个完全独立的应用版本。KubeRnetes使管理DockeR容器变得更容易,并确保跨服务器群集的一致性。
API使KubeRnetes能够管理Apache IgnITe和流媒体平台资源,并自动扩展基于IoT内存计算的群集。更高的管理简便性可以大大降低复杂性和错误并减少开发时间。
分析和机器学习
流平台难题的最后一部分是对数据采取行动的能力。对于分析用例,Apache SpaRk是一个分布式计算引擎,用于处理和分析大量数据。SpaRk可以利用Apache IgnITe内存计算平台来快速分析通过流传输管道提取的大量数据。 SpaRk还可以将IgnITe用作在线数据存储,从而使SpaRk用户可以将数据追加到其现有的DataFRaMe或RDD中并重新运行SpaRk作业。 SpaRk还使在分布式计算环境中为非结构化数据编写简单查询变得容易。
对于机器学习用例,Apache IgnITe包括集成的、完全分布式的机器学习和深度学习库,这些库已针对大规模并行处理进行了优化。这种集成使企业能够创建连续学习应用,其中机器学习或深度学习算法将针对内存中计算集群每个节点上的内存中数据在本地运行。在本地运行算法可允许在模型上不断更新模型,因为新数据已部署在节点上,甚至达到了PB级。