当前位置: 首页 > 科技观察

如何为物联网构建数据流、人工智能和机器学习平台

时间:2023-03-18 18:17:02 科技观察

今天的物联网用例越来越依赖于分析大量设备生成的数据或实时更新机器学习算法。如果来自监测患者、自动驾驶汽车或预测性维护应用程序的数据未被实时捕获、处理和采取行动,则可能会导致患者受伤、车辆坠毁或系统故障。那么,企业如何才能经济高效地构建一个可靠的平台来大规模摄取和响应大量数据呢?企业可以使用基于开源软件堆栈构建的流媒体平台和数据存储系统来做到这一点。当今的许多开源解决方案已在数以千计的生产部署中证明是可靠的。许多产品都可以从商业企业获得企业级支持和咨询服务,这些企业也可能提供解决方案的企业级版本。这些受支持的解决方案使企业能够通过实施物联网解决方案而无需大量前期成本来实现其数字化转型目标,同时还为其公司提供可靠、面向未来的基础设施。以下是开源解决方案的示例,这些解决方案是当今许多最成功的数字化转型企业的基础。流数据开源流解决方案,如ApacheKafka或ApacheFlink,用于构建实时数据管道,以在IoT部署中的系统和应用程序之间移动数据。例如,在患者监护用例中,流式解决方案会将连接到患者的物联网传感器收集的数据传送到一个平台,在该平台上可以聚合、分析和存储数据。Box、LinkedIn、Netflix、Oracle和Twitter使用Kafka。Flink被用于阿里巴巴、AWS、CapitalOne、eBay和Lyft的运营中。然而,对于支持大规模实时业务流程的流解决方案,它必须与其他技术集成,包括分布式内存计算平台、容器管理解决方案以及分析和机器学习功能。内存计算ApacheIgnite是一个分布式内存计算平台,部署在商用服务器集群上。它可以用作插入现有应用程序和基于磁盘的数据库之间的内存数据网格,或用作新应用程序的独立内存数据库。Ignite汇集集群的可用CPU和RAM,并将数据和计算分布到各个节点。它可以部署在本地、公共或私有云或混合环境中。Ignite支持ANSI-99SQL和ACID事务。Ignite可以实时摄取大量数据。由于所有数据都保存在内存中,Ignite使用MapReduce在分布式集群中执行大规模并行处理(MPP)。利用内存数据缓存和MPP,与使用基于磁盘的数据库的应用程序相比,Ignite可以将应用程序性能提高多达1000倍。Ignite用户还可以利用原生Kafka集成轻松地将流数据从IoT设备提取到内存计算集群中。正如我在上一篇文章中讨论的那样,Ignite可用于构建数字集成中心(DIH),以聚合和处理来自多个本地数据存储、基于云的数据源和流数据源的数据。作为DIH,Ignite提供了一个高性能数据访问层,使聚合数据实时可供多个业务应用程序使用。ApacheIgnite已被美国航空公司、IBM、ING和24HourFitness用于生产。集群管理Kubernetes可以自动化部署和管理已在Docker或其他容器解决方案中容器化的应用程序。容器解决方案创建一个包含应用程序和虚拟化操作系统的包,以便应用程序可以在同一硬件或虚拟化硬件(例如云服务)上运行多个完全独立的应用程序版本。Kubernetes使管理Docker容器变得更加容易,并确保可以部署在任何地方(例如本地、公共或私有云或混合环境)的服务器集群之间的一致性。该API使Kubernetes能够管理ApacheIgnite和流媒体平台资源,并根据IoT内存计算自动扩展集群。更易于管理可以大大降低复杂性和错误并缩短开发时间。Kubernetes用于Booking.com、CapitalOne、Box、IBM和Sling的运营。分析和机器学习流媒体平台难题的最后一块是对数据采取行动的能力。对于分析用例,ApacheSpark是一个分布式计算引擎,用于处理和分析大量数据。Spark可以利用ApacheIgnite内存计算平台快速分析通过流式管道提取的大量数据。Spark还可以将Ignite用作在线数据存储,允许Spark用户将数据附加到他们现有的DataFrame或RDD并重新运行Spark作业。Spark还可以轻松地在分布式计算环境中编写对非结构化数据的简单查询。Spark已经在Amazon、CreditKarma、eBay、NTTData和Yahoo!等运营机构中使用。对于机器学习用例,ApacheIgnite包括集成的、完全分布式的机器学习和深度学习库,这些库针对大规模并行处理进行了优化。这种集成使企业能够创建持续学习应用程序,其中机器学习或深度学习算法针对内存计算集群的每个节点上的内存数据在本地运行。在本地运行算法允许在模型上不断更新,即使是PB级,因为新数据部署在节点上。