第二章
大数据技术
一、大数据技术层
目前,大数据领域每年都会涌现出大量新的技术,成为大数据获取、存储、处理分析、大数据安全及可视化的有效手段。大数据技术能够将大规模数据中隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度。
这里把大数据技术层归纳为五大类,如表1所示。
表1 大数据技术分类
(一)基础架构支持
由于大数据要处理大量、非结构化的数据,所以在各处理环节中都可以采用并行处理。目前,Hadoop、MapReduce和Spark等分布式处理方式已经成为大数据处理各环节的通用处理方法。大数据处理需要拥有大规模物理资源的云数据中心和具备高效的调度管理功能的云计算平台的支撑。云计算管理平台能为大型数据中心及企业提供灵活高效的部署、运行和管理环境,降低应用系统开发、部署、运行和维护的成本,提高资源使用效率。
作为新兴的计算模式,云计算在学术界和业界获得巨大的发展动力。政府、研究机构和行业领跑者正在积极尝试应用云计算来解决网络时代日益增长的计算和存储问题。除了亚马逊的AWS、Google的APP Engine和Microsoft的Windows Azure Services等商业云平台之外,还有一些如OpenNebula、Eucalyptus、Nimbus和OpenStack等开源的云计算平台,每个平台都有其显著的特点和不断发展的社区。
(二)数据采集
数据采集技术指从传感器和其他待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析、处理的过程。数据采集技术可分为3大类:
网络数据采集方法:指通过网络爬虫或网站公开API等方式从网站上获取图片、音频、视频等文件或附件等数据信息。该方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。支持文件之间的自动关联。除了网络中包含的内容之外,对于网络流量的采集可以使用DPI或DFI等带宽管理技术进行处理。
系统日志采集方法:通过智能硬件、传感器、社交网络等数据载体的日常运维进行数据资源的采集,大部分数据企业都拥有自己的采集工具,如Hadoop的Chukwa、Cloudera的Flume、Facebook的Scribe等,这些工具均采用分布式架构,能满足每秒数百MB的日志数据采集和传输需求。
其他数据采集方法:其他数据包括企业生产经营数据或学科研究数据等保密性要求较高的数据,可以通过与企业或研究机构合作,使用特定系统接口等相关方式采集数据。
大数据预处理技术,主要完成对已接收数据的辨析、抽取、清洗等操作。数据抽取:因获取的数据可能具有多种结构和类型,数据抽取过程可以将这些复杂的数据转化为单一的或者便于处理的类型,以达到快速分析处理的目的。数据清洗:对于大数据,并不全是有价值的,对于无价值的数据或干扰数据,需要通过过滤“去噪”进而提取出有效数据。
(三)数据存储
传统的数据存储和管理以结构化数据为主,因此关系数据库系统(RDBMS)可以一统天下满足各类应用需求。大数据往往是以半结构化和非结构化数据为主,结构化数据为辅,而且各种大数据应用通常是对不同类型的数据内容检索、交叉比对、深度挖掘与综合分析。为了满足快速增长的存储需求,大数据的存储需要具备高扩展性、高可靠性、高可用性、低成本、自动容错和去中心化等特点。常见的大数据的存储形式可以分为分布式文件系统和分布式数据库。其中,分布式文件系统采用大规模的分布式存储节点来满足存储大量文件的需求,而分布式的NoSQL数据库则为大规模非结构化数据的处理和分析提供支持。
Google在早期面对海量互联网网页的存储及分析难题时,率先开发出了Google文件系统GFS以及基于GFS的MapReduce分布式计算分析模型。由于一部分的Google应用程序需要处理大量的格式化以及半格式化数据,Google又构建了弱一致性要求的大规模数据库系统Big-Table,能够对海量数据进行索引、查询和分析。Google的这一系列产品,开创了云计算时代大规模数据存储、查询和处理的先河,也成为这个领域的事实上的标准,在技术上一直保持领先地位。
在大规模分布式数据库方面,HBase及Cassandra等主流NoSQL数据库主要是提供高可扩展性支持,在一致性和可用性方面会做相应的牺牲,在对传统的RDBMS的ACID语义、事务支持等方面存在不足。Google的Megastore则是努力把NoSQL与传统的关系型数据库融合,并为一致性和高可用性提供了强有力的保证。Megastore使用同步复制来达到高可用性和数据的一致性视图。简而言之,MegaStore对“不同地域的低延迟性的数据副本”提供了完全的串行化ACID语义来支持交互的在线服务。Megastore兼具了NoSQL和RDBMS两者的优点,在保障一致性的原则下,又能满足高可扩展性、高容错性和低延迟,为Google的上百个生产应用提供服务。
(四)数据计算
面向大数据处理的数据查询、统计、分析、挖掘等需求,促生了大数据计算的不同计算模式,整体上我们把大数据计算分为离线批处理计算、实时交互计算和流计算三种。
1.离线批处理
随着云计算技术得到广泛的应用和发展,基于开源的Hadoop分布式存储系统和MapReduce数据处理模式的分析系统也得到了广泛的应用。Hadoop通过数据分块及自恢复机制,能支持PB级的分布式的数据存储,以及基于MapReduce分布式处理模式对这些数据进行分析和处理。MapReduce编程模型可以很容易地将多个通用批数据处理任务和操作在大规模集群上并行化,而且有自动化的故障转移功能。MapReduce编程模型在Hadoop这样的开源软件带动下被广泛采用,应用到Web搜索、欺诈检测等各种各样的实际应用中。
除了MapReduce计算模型之外,以Swift为代表的工作流计算模式,Pregel为代表的图计算模式,也都可以处理包含大规模的计算任务的应用流程和图算法。Swift系统作为科学工作流和并行计算之间的桥梁,是一个面向大规模科学和工程工作流的快速、可靠的定义、执行和管理的并行化编程工具。Swift采用结构化的方法管理工作流的定义、调度和执行,它包含简单的脚本语言SwiftScript,SwiftScript可以用来简洁地描述基于数据集类型和迭代的复杂并行计算,同时还可以对不同数据格式的大规模数据进行动态的数据集映射。运行时系统提供一个高效的工作流引擎用来进行调度和负载均衡,它还可以与PBS和Condor等资源管理系统进行交互,完成任务执行。Pregel是一种面向图算法的分布式编程框架,可以用于图遍历、最短路径、PageRank计算等。它采用迭代的计算模型:在每一轮,每个顶点处理上一轮收到的消息,并发出消息给其他顶点,并更新自身状态和拓扑结构(出、入边)等。
2.实时交互计算
当今的实时计算一般都需要针对海量数据进行,除了要满足非实时计算的一些需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级。
数据量巨大且不能提前计算出结果的,但要求对用户的响应时间是实时的。主要用于特定场合下的数据分析处理。当数据量庞大,同时发现无法穷举所有可能条件的查询组合,或者大量穷举出来的条件组合无用的时候,实时计算就可以发挥作用,将计算过程推迟到查询阶段进行,但需要为用户提供实时响应。这种情形下,也可以将一部分数据提前进行处理,再结合实时计算结果,以提高处理效率。
数据源是实时的不间断的,要求对用户的响应时间也是实时的。海量数据的实时计算过程可以被划分为以下三个阶段:数据的产生与收集阶段、传输与分析处理阶段、存储和对外提供服务阶段。如图1所示。
图1 实时计算过程
数据实时采集在功能上需要保证可以完整地收集到所有数据,为实时应用提供实时数据;响应时间上要保证实时性、低延迟;配置简单,部署容易;系统稳定可靠等。目前,互联网企业的海量数据采集工具,有Facebook开源的Scribe、LinkedIn开源的Kafka、Cloudera开源的Flume、淘宝开源的TimeTunnel、Hadoop的Chukwa等,均可以满足每秒数百MB的日志数据采集和传输需求。
数据实时计算:传统的数据操作,首先将数据采集并存储在数据库管理系统(DBMS)中,然后通过query和DBMS进行交互,得到用户想要的答案。整个过程中,用户是主动的,而DBMS系统是被动的。但是,对于现在大量存在的实时数据,这类数据实时性强,数据量大,数据格式多种多样,传统的关系型数据库架构并不合适。新型的实时计算架构一般都是采用海量并行处理MPP的分布式架构,数据的存储及处理会分配到大规模的节点上进行,以满足实时性要求,在数据的存储上,则采用大规模分布式文件系统,比如Hadoop的HDFS文件系统,或是新型的NoSQL分布式数据库。
实时查询服务的实现可以分为三种方式:(1)全内存:直接提供数据读取服务,定期dump到磁盘或数据库进行持久化。(2)半内存:使用Redis、Memcache、MongoDB、BerkeleyDB等数据库提供数据实时查询服务,由这些系统进行持久化操作。(3)全磁盘:使用HBase等以分布式文件系统(HDFS)为基础的NoSQL数据库,对于key - value引擎,关键是设计好key的分布。
3.流计算
在很多实时应用场景中,比如实时交易系统、实时诈骗分析、实时广告推送、实时监控、社交网络实时分析等,存在数据量大,实时性要求高,而且数据源是实时不间断的。新到的数据必须马上处理完,不然后续的数据就会堆积起来,永远也处理不完。反应时间经常要求在秒级以下,甚至是毫秒级,这就需要一个高度可扩展的流式计算解决方案。
流计算就是针对实时连续的数据类型而准备的。在流数据不断变化的运动过程中实时地进行分析,捕捉到可能对用户有用的信息,并把结果发送出去。整个过程中,数据分析处理系统是主动的,而用户却是处于被动接收的状态。如图2所示。
图2 流计算过程
(五)数据的展现与交互
可视化通过交互式视觉表现的方式来帮助人们探索和理解复杂的数据,能在生产实践和企业运营中,形成有效的统计、分析、预测及决策。因此大数据的展现技术,以及与数据的交互技术在大数据全局中也占据重要的位置。
大数据可视化技术主要是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术等。它涉及到计算机图形学、图像处理、计算机视觉、计算机辅助设计等多个领域,成为研究数据表示、数据处理、决策分析等一系列问题的综合技术。当然这种新型设备和技术的弊端也是显而易见,我们处在一个随时被监控、隐私被刺探、侵犯的状态,所以大数据技术所带来的安全性问题也不容忽视。
大数据技术的兴起正完成对各传统领域的颠覆。全球范围内,运用大数据推动经济发展、完善社会治理、提升政府服务和监管能力正成为趋势。各国已相继制定实施大数据战略性文件,大力推动大数据发展和应用。从全球大数据发展的趋势来看,大数据产业推动社会生产要素的网络化共享、集约化整合、协作开发和高效利用,改变了传统的生产方式和经济运行机制,可显著提升经济运行水平和效率。中国是数据生产大国。目前,中国互联网、移动互联网用户规模居全球第一,拥有丰富的数据资源和应用市场优势。如果能在大数据管理和分析技术的研发与应用方面取得突破,可持续推动互联网创新企业和创新应用的高速成长。