从原始人用贝壳计数开始,人类就一直在利用数据来描述和分析物质世界。如今,随着智能终端、物联网、云存储、云计算等技术的出现,人类对数据的积累速度达到历史的最高点,对数据的思维方式也从局部转换为整体,单一转换为复杂,因果转化为相关。大数据的数据世界观,就是通过量化来理解世界。
物联网(IoT)是近年来迅速发展的技术,它实现了万物互联和物质的量化,正受到广泛的关注。IoT通过采用各种传感器,如射频识别、红外感应、全球定位、激光扫描等一系列终端技术,按照特定的协议进行信息通信,实现一系列功能,如识别、跟踪、定位、监控、管理。物联网所连接的物,数量将远超互联网(含移动互联网)所连接的人(计算机、手机等移动终端),业界预计,到2020年,全球物联网将有1000亿连接。面对如此多的连接数量,传统技术无法进行有效处理,必然会驱动新技术应用到物联网领域。
大数据是近几年发展迅速的另一种技术,顾名思义是用来处理大量数据的,与物联网需要处理海量数据的需求是吻合的。事实上,正是由于物联网的发展,需要采集和处理的数据量激增,在一定程度上促进了大数据技术的发展,大数据技术的发展又为物联网的发展提供了保障。从传统的关系型数据库到分布式、NoSQL、流计算、内存计算,物联网的数据量和需求变化是贯穿整个技术变化的主题,主要分为关系型和非关系型两个时期。
关系型时期主要采用ACID解决方案,即用Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)来衡量一个系统的性能。该方案多用在数据量稳定、对数据一致性要求高的领域,包含单机存储阶段和分布式存储阶段。
非关系型时期(联网时期)主要采用CAP解决方案,即用Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)来衡量一个系统的性能。在任何一种设计中,一个应用至多只能同时支持以上两种属性,不可能三者兼顾。对应CAP理论,传统数据库追求的是一致性和可用性(CA),NoSQL追求的是可用性和分区容错性(AP)。AP可为系统带来平行扩展能力,这正是大数据时代所需的。
ACID和CAP代表了两种截然相反的设计哲学,在分布式设计的场景中,系统组件对一致性的要求是不同的,因此ACID和CAP又会结合使用。
物联网数据具有时间、地点、身份、事件4大属性,业务特点是变化频繁,对实时性或统计性有较高要求,在业务不牵涉事务(Transaction)的时候,可以理解为对数据的一致性未做要求。
针对物联网数据的特点,传统的ACID设计必然是不合适的。物联网的数据随应用场景不同而有不同的特点,因此应用大数据技术处理物联网数据时存在选择的问题。对于实时性要求高的计算,多采用流式处理,如Hadoop生态圈的Spark或者Storm技术;对于非实时性的需求可采用MR任务置于后台计算,当然也可以用Spark的分布式内存计算技术;对于频繁变化的数据,采用SQL的设计必然是不符合要求的,多采用NoSQL。Hadoop平台提供了如Hbase这样的NoSQL数据库,支持列式存储,也提供了Solr,支持全文检索。对于统计的需求,Hadoop可以和R语言结合。
Hadoop是由Apache基金会所开发的开源产品,至今还处于高速发展阶段。中兴通讯在Hadoop的基础上,发布了自己的大数据DAP平台,解决了维护困难、不稳定、学习成本过高等问题,使得平台运维管理简单,安全性更高,组件功能和性能增强,应用广泛。图1是中兴通讯DAP应用于电力调度领域的方案架构。在用电负荷越来越高的情况下,电网经济性尤为重要。该方案依托Hadoop平台的存储计算能力,整合了电网的数据采集、发电预测、潮流计算等功能,通过平台网管统一管理,实现了电网的即时调度,降低了电网损耗,提高了电网经济性。
电网的潮流计算提了很多年,但电网环境复杂,物理节点多,采集的数据节点数成千上万。在计算方程里,求几千个参数的最优值是异常困难的,虽然提出了不少方法,但是软硬件一直达不到潮流计算所需要求,直到大数据技术的出现。在大数据技术出现之前,不少科学家已经提出了粒子群算法,算法本身是很优秀的,但当时的传感器技术达不到可用性要求,也没有符合粒子群算法的计算机模型。而这两个问题被新出现的物联网技术LoRa和大数据技术Hadoop完美解决了。
LoRa解决了传输质量、传输距离、功耗、蓄电量的问题,Hadoop解决了计算模型的问题。在NoSQL的平行扩展性解决了大量数据的存储问题的基础上,Hadoop的Spark计算模型所采用的将计算分配到相近物理节点上的方式,天然匹配粒子群算法所需要的分片结构,使得整个计算可以完美地发布到整个集群中,每一次计算粒子状态的计算,就是一次Map和Reduce,即一次迭代。Spark构架引入的内存计算和RDD技术,同时提供了计算效率和数据正确性保障,也通过Streaming技术实现了数据的实时性。
物联网的发展必然导致复杂的业务和对系统存储、计算能力的要求。大数据技术能够解决物联网海量的数据处理问题,针对不同应用场景,发展出不同的数据处理技术。随着物联网应用的发展,大数据技术将渗透到各行各业,为人们的生活和工作带来更多意想不到的精彩。