物联网是一个很宽泛的概念,是指各种设备、机器都通过互联网连接起来,车联网、工业互联网等都属于物联网范畴。根据Gartner报告,联网的设备在2019年已经超过142亿,预计2021年将达到250亿,这是一个巨大的数量。毫无疑问,我们需要一个物联网大数据平台来处理这些联网设备产生的海量数据。
一个物联网大数据平台需要具备哪些功能?与通用的大数据平台相比,它需要具备什么样的特征呢?我们来仔细分析一下。
1. 高效分布式
必须是高效的分布式系统。物联网产生的数据量巨大,仅中国而言,就有5亿多台智能电表,每台电表每隔15分钟采集一次数据,一天全国智能电表就会产生500多亿条记录。这么大的数据量,任何一台服务器都无能力处理,因此处理系统必须是分布式的,水平扩展的。为降低成本,一个节点的处理性能必须是高效的,需要支持数据的快速写入和快速查询。
2. 实时处理
必须是实时处理的系统。互联网大数据处理,大家所熟悉的场景是用户画像、推荐系统、舆情分析等等,这些场景并不需要什么实时性,批处理即可。但是对于物联网场景,需要基于采集的数据做实时预警、决策,延时要控制在秒级以内。如果计算没有实时性,物联网的商业价值就大打折扣。
3. 高可靠性
需要运营商级别的高可靠服务。物联网系统对接的往往是生产、经营系统,如果数据处理系统宕机,直接导致停产,产生经济有损失、导致对终端消费者的服务无法正常提供。比如智能电表,如果系统出问题,直接导致的是千家万户无法正常用电。因此物联网大数据系统必须是高可靠的,必须支持数据实时备份,必须支持异地容灾,必须支持软件、硬件在线升级,必须支持在线IDC机房迁移,否则服务一定有被中断的可能。
4. 高效缓存
需要高效的缓存功能。绝大部分场景,都需要能快速获取设备当前状态或其他信息,用以报警、大屏展示或其他。系统需要提供一高效机制,让用户可以获取全部、或符合过滤条件的部分设备的最新状态。
5. 实时流式计算
需要实时流式计算。各种实时预警或预测已经不是简单的基于某一个阈值进行,而是需要通过将一个或多个设备产生的数据流进行实时聚合计算,不只是基于一个时间点、而是基于一个时间窗口进行计算。不仅如此,计算的需求也相当复杂,因场景而异,应容许用户自定义函数进行计算。
6. 数据订阅
需要支持数据订阅。与通用大数据平台比较一致,同一组数据往往有很多应用都需要,因此系统应该提供订阅功能,只要有新的数据更新,就应该实时提醒应用。而且这个订阅也应该是个性化的,容许应用设置过滤条件,比如只订阅某个物理量五分钟的平均值。
7. 和历史数据处理合二为一
实时数据和历史数据的处理要合二为一。实时数据在缓存里,历史数据在持久化存储介质里,而且可能依据时长,保留在不同存储介质里。系统应该隐藏背后的存储,给用户和应用呈现的是同一个接口和界面。无论是访问新采集的数据还是十年前的老数据,除输入的时间参数不同之外,其余应该是一样的。
8. 数据持续稳定写入
需要保证数据能持续稳定写入。对于物联网系统,数据流量往往是平稳的,因此数据写入所需要的资源往往是可以估算的。但是变化的是查询、分析,特别是即席查询,有可能耗费很大的系统资源,不可控。因此系统必须保证分配足够的资源以确保数据能够写入系统而不被丢失。准确的说,系统必须是一个写优先系统。
9. 数据多维度分析
需要对数据支持灵活的多维度分析。对于联网设备产生的数据,需要进行各种维度的统计分析,比如从设备所处的地域进行分析,从设备的型号、供应商进行分析,从设备所使用的人员进行分析等等。而且这些维度的分析是无法事先想好的,而是在实际运营过程中,根据业务发展的需求定下来的。因此物联网大数据系统需要一个灵活的机制增加某个维度的分析。
10. 支持数据计算
需要支持数据降频、插值、特殊函数计算等操作。原始数据的采集可能频次挺高,但具体分析时,往往不需要对原始收据进行,而是数据降频之后。系统需要提供高效的数据降频操作。设备是很难同步的,不同设备采集数据的时间点是很难对齐的,因此分析一个特定时间点的值,往往需要插值才能解决,系统需要提供线性插值、设置固定值等多种插值策略才行。工业互联网里,除通用的统计操作之外,往往还需要支持一些特殊函数,比如时间加权平均。
11. 即席分析和查询
需要支持即席分析和查询。为提高大数据分析师的工作效率,系统应该提供一命令行工具或容许用户通过其他工具,执行SQL查询,而不是非要通过编程接口。查询分析的结果可以很方便的导出,再制作成各种图标。
12. 灵活数据管理策略
需要提供灵活的数据管理策略。一个大的系统,采集的数据种类繁多,而且除采集的原始数据外,还有大量的衍生数据。这些数据各自有不同的特点,有的采集频次高,有的要求保留时间长,有的需要多个副本以保证更高的安全性,有的需要能快速访问。因此物联网大数据平台必须提供多种策略,让用户可以根据特点进行选择和配置,而且各种策略并存。
13. 开放的系统
必须是开放的。系统需要支持业界流行的标准SQL,提供各种语言开发接口,包括C/C++,Java,Go,Python,RESTful等等,也需要支持Spark,R,Matlab等等,方便集成各种机器学习、人工智能算法或其他应用,让大数据处理平台能够不断扩展,而不是成为一个孤岛。
14. 支持异构环境
系统必须支持异构环境。大数据平台的搭建是一个长期的工作,每个批次采购的服务器和存储设备都会不一样,系统必须支持各种档次、各种不同配置的服务器和存储设备并存。
15. 支持边云协同
需要支持边云协同。要有一套灵活的机制将边缘计算节点的数据上传到云端,根据具体需要,可以将原始数据,或加工计算后的数据,或仅仅符合过滤条件的数据同步到云端,而且随时可以取消,更改策略。
16. 单一后台管理
需要单一的后台管理系统。便于查看系统运行状态、管理集群、管理用户、管理各种系统资源等,而且系统能够与第三方IT运维监测平台无缝集成,便于管理。
17. 私有化部署
便于私有化部署。因为很多企业出于安全以及各种因素的考虑,希望采用私有化部署。而传统的企业往往没有很强的IT运维团队,因此在安装、部署上需要做到简单、快捷,可维护性强。
以上总结了物联网大数据平台的主要功能和特点。虽然物联网大数据平台本身也在演变之中,但总的目标不会改变,那就是高效、可伸缩、实时、可靠、灵活、开放、简单、易维护。