从数据管理技术角度看,大数据系统与传统的管理平台相比,在数据抽取与准备、数据存储与管理、数据计算与处理、数据分析与利用、数据可视化与展现等多个环节都有自己的创新之处,接下来就逐一简要介绍。
1.数据抽取与准备环节的创新
在进行存储和处理之前,需要对数据进行清洗和整理,这个过程在传统数据处理体系中称为ETL过程。与以往的数据源相比,大数据的来源多种多样,包括企业内部数据库、互联网数据和物联网数据,不仅数量庞大、格式不一,质量也良莠不齐。当然,在大数据处理系统中,很多时候都是在数据的原始位置进行数据的组织,而不需要进行大量的迁移,这样做既省时又省钱。但在传统企业中,大数据系统与传统的数据处理系统并存的情况下,一般还是需要数据抽取环节的,一般的路径是从传统的数据管理系统中向大数据处理系统中转移,在这样的情况下,传统的ETL工具就显得力不从心了,需要Sqoop等更新的工具来支撑。Sqoop项目始于2009年,最早是作为Hadoop的一个第三方模块存在的,后来为了让使用者能够快速部署,也为了让开发人员能够更快速地迭代开发。
Sqoop是一款类似于ETL的开源工具,主要用于在Hadoop与传统的数据库间进行数据传递,用户可以在Sqoop的帮助下,轻松地把关系型数据库的数据导入到Hadoop与其相关的系统(如HBase和Hive)中;同时也可以把数据从Hadoop系统里抽取并导出到关系型数据库里。理论上,Sqoop支持任何一款符合JDBC规范的数据库,如DB2、MySQL和SQL Server等,即结构化数据与非结构化数据之间的双向数据传输。
除了这些主要的功能外,Sqoop也提供了一些诸如查看数据库表等实用的小工具。
2.数据存储与管理环节的创新
当前全球数据量正以每年超过50%的速度增长,存储技术的成本和性能面临非常大的压力。大数据存储系统不仅需要以极低的成本存储海量数据,还要适应多样化的非结构化数据管理需求,具备数据格式上的可扩展性。这要求底层硬件架构和文件系统在性价比上要大大高于传统技术,并能够弹性扩展存储容量。
以往,网络附着存储系统(NAS)和存储区域网络(SAN)等体系,存储和计算的物理设备分离,它们之间要通过网络接口连接,这导致在进行数据密集型计算(Data Intensive Computing)时I/O容易成为瓶颈。同时,传统的单机文件系统(如NTFS)和网络文件系统(如NFS)要求一个文件系统的数据必须存储在一台物理机器上,且不提供数据冗余性,可扩展性、容错能力和并发读写能力难以满足大数据需求。
Hadoop的分布式文件系统HDFS(Hadoop Distributed File System)成功地解决了上述难题,奠定了大数据存储技术的基础。HDFS系统工作原理如图6-11所示。
图6-11 HDFS系统工作原理
如图6-11所示,HDFS是一个主从结构,一个HDFS集群由一个名称节点和多个数据节点组成。其中名称节点是一个管理文件命名空间和调节客户端访问文件的主服务器;数据节点通常是一个节点一个机器,它来管理对应节点的存储。HDFS对外开放文件命名空间并允许用户数据以文件形式存储。内部机制是将一个文件分割成一个或多个块,这些块被存储在一组数据节点中。名称节点用来操作文件命名空间的文件或目录操作,如打开、关闭和重命名等。它同时确定块与数据节点的映射。数据节点负责来自文件系统客户的读写请求。数据节点同时还要执行块的创建、删除和来自名称节点的块复制指令。
与传统系统相比,HDFS具有以下几个特点。
(1)存储与计算一体化
将计算和存储节点在物理上结合在一起,可以避免在数据密集计算中易形成的I/O吞吐量的制约。同时,该文件系统也采用了分布式架构,能达到较高的并发访问能力。
(2)处理超大文件
这里的超大文件通常是指数百GB、甚至数百TB大小的文件。目前在实际应用中,HDFS已经用来存储管理PB级的数据了。在Yahoo公司,Hadoop集群已经扩展到4000个节点,最大应用达到过20000个节点。
(3)流式地访问数据
HDFS系统的设计是在“一次写入、多次读取”的数据访问模型的基础上建立的。因此,一旦数据源生成数据集之后,就会被复制到不同的存储节点,然后响应各种数据分析任务的请求。一般情况下,分析任务会涉及数据集中的大部分数据,即对于HDFS系统中的数据来说,访问整个数据集比访问一条记录的效率更高。
(4)运行在低成本的低端服务器集群之上
HDFS系统的设计对硬件设备的要求比较低,只需运行于低成本的X86集群之上,而不需要昂贵的高可用性设备。使用低成本的服务器会导致集群中节点故障率的升高,因此,HDFS系统在设计时充分考虑了系统中数据的可靠性、安全性等问题。
当然,随着应用范围不断扩展,HDFS也面临瓶颈。虽然HDFS在大文件的追加(Append)写入和读取时能够获得很高的性能,但随机访问(random access)、海量小文件的频繁写入性能较低,因此其适用范围也受到限制。业界的研究重点主要是在硬件上基于SSD等新型存储介质的存储体系架构,同时对现有分布式存储的文件系统进行改进,以提高随机访问、海量小文件存取等性能。
3.数据计算与处理环节的创新
大数据的分析挖掘是数据密集型计算,需要巨大的计算能力。与传统的“数据简单、算法复杂”的高性能计算不同,大数据的计算是数据密集型计算,对计算单元和存储单元间的数据吞吐率要求极高,对性价比和扩展性的要求也非常高。传统依赖大型机和小型机的并行计算系统不仅成本高,数据吞吐量也难以满足大数据要求,同时靠提升单机CPU性能、增加内存和扩展磁盘等实现性能提升的纵向扩展(Scale Up)的方式也难以支撑平滑扩容。
谷歌在2004年公开的MapReduce分布式并行计算技术,是新型分布式计算技术的代表。一个MapReduce系统由廉价的X86服务器构成,通过添加服务器节点可线性扩展系统的总处理能力(Scale Out),在成本和可扩展性上都有巨大的优势。(www.daowen.com)
MapReduce采用“分而治之”的思想,把对大规模数据集的操作分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果,这与“曹冲称象”的思路不谋而合。简单地说,MapRe-duce就是“任务的分解与结果的汇总”。在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。MapReduce工作原理如图6-12所示。
图6-12 MapReduce工作原理示意图
MapReduce在设计上具有以下几个主要的技术特征。
(1)向“外”横向扩展,而非向“上”纵向扩展
即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器,而非价格昂贵、不易扩展的高端服务器。
对于大规模数据处理,由于有大量数据存储需要,显而易见,基于低端服务器的集群远比基于高端服务器的集群优越,这就是为什么MapReduce并行计算集群会基于低端服务器实现的原因。
(2)失效被认为是常态
MapReduce集群中使用大量的低端服务器,因此,节点硬件失效和软件出错是常态,因而一个良好设计、具有高容错性的并行计算系统不能因为节点失效而影响计算服务的质量。任何一个节点失效时,其他节点都要能够无缝接管失效节点的计算任务,当失效节点恢复后应能够无缝加入集群,而不需要管理员人工进行系统配置。MapReduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重启技术,使集群和计算框架具有对付节点失效的健壮性,能有效处理失效节点的检测和恢复。
(3)把处理向数据端迁移
传统高性能计算系统通常有很多处理器节点与一些外存储器节点相连,如用存储区域网络SAN连接的磁盘阵列,因此,大规模数据处理时外存文件数据I/O访问会成为一个制约系统性能的瓶颈。为了减少大规模数据并行计算系统中的数据通信开销,应当考虑将处理向数据靠拢和迁移。MapReduce采用了数据/代码互定位的技术方法,计算节点将首先尽量负责计算其本地存储的数据,以发挥数据本地化特点,仅当节点无法处理本地数据时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。
(4)顺序处理数据,避免随机访问数据
大规模数据处理的特点决定了大量的数据记录难以全部存放在内存,而通常只能放在外存中进行处理。由于磁盘的顺序访问要远比随机访问快得多,因此MapReduce主要设计为面向顺序式大规模数据的磁盘访问处理。
为了实现面向大数据集批处理的高吞吐量的并行处理,MapReduce可以利用集群中的大量数据存储节点同时访问数据,以此提供高带宽的数据访问和传输能力。
4.业务分析与利用环节的创新
数据分析需要从纷繁复杂的数据中发现规律,提取新的知识。传统数据挖掘对象多是结构化、单一对象的小数据集,数据挖掘需要根据先验知识建立模型,然后依据模型进行分析。对于非结构化、多源异构的大数据集的分析,往往缺乏先验知识,很难建立科学的数学模型,这就需要发展更加智能的数据挖掘技术。
传统企业中,仅有1%左右的数据得到了回归、分类和聚类等较深入分析和挖掘。在大型互联网企业中,目前已经对网页索引、社交数据等半结构化数据进行了浅层分析,但占总量近60%的语音、图片及视频等非结构化数据还难以进行有效的分析。
大数据分析技术的发展需要在两个方面取得突破,一是对体量庞大的结构化和半结构化数据进行高效率的深度分析,如从自然语言构成的文本网页中理解和识别语义、情感、意图等;二是对非结构化数据进行分析,将复杂多源的语音、图像和视频数据转化为机器可识别的、具有明确语义的信息,进而提取有用的知识。
目前的大数据分析主要有两条技术路线,一是凭借先验知识建立数学模型来分析数据,二是通过建立人工智能系统,使用大量样本数据进行训练,让机器代替人工获得从数据中提取知识的能力。通过人工智能和机器学习技术分析大数据,被业界认为具有很好的前景。2006年谷歌等公司的科学家根据人脑认知过程的分层特性,提出增加人工神经网络层数和神经元节点数量,加大机器学习的规模,构建深度神经网络,可提高训练效果,并在后续试验中得到证实。这一事件引起工业界和学术界高度关注,使得神经网络技术重新成为数据分析技术的热点。目前,基于深度神经网络的机器学习技术已经在语音识别和图像识别方面取得了很好的效果。但未来深度学习要在大数据分析上广泛应用,还有大量理论和工程问题需要解决,主要包括模型的迁移适应能力,以及超大规模神经网络的工程实现等。
5.知识展现环节的创新
在大数据服务于决策支撑场景下,以直观的方式将分析结果呈现给用户,是大数据分析的重要环节。计算结果需要以简单直观的方式展现出来,才能最终为用户理解和使用,形成有效的统计、分析、预测及决策,应用到生产实践和企业运营中,因此大数据的展现技术和数据的交互技术在大数据中也占据重要的位置。
人脑对图形的理解和处理速度大大高于文字,因此,通过视觉化呈现数据,可以深入展现数据中潜在的或复杂的模式和关系。随着大数据的兴起,也涌现了很多新型的数据展现和交互方式,以及专注于这方面的一些创业公司。这些新型方式包括交互式图表,可以在网页上呈现,并支持交互,可以操作并控制图标、动画和演示。
此外,3D数字化渲染技术也被广泛应用在很多领域,如数字城市、数字园区、模拟与仿真和设计制造等,具备很高的直观操作性。现代的增强现实AR技术,它通过计算机技术,将虚拟的信息应用到真实世界,真实的环境和虚拟的物体实时地叠加到了同一个画面或空间同时存在。结合虚拟3D的数字模型和真实生活中的场景,提供了更好的现场感和互动性。通过AR技术,用户可以和虚拟的物体进行交互,如试戴虚拟眼镜、试穿虚拟衣服和驾驶模拟飞行器等。
总的来看,大数据对数据准备环节和知识展现环节来说更多的是量的变化,并没有根本性的变革。但大数据对数据分析、计算和存储3个环节的影响较大,需要对技术架构和算法进行重构,是当前和未来一段时间大数据技术创新的焦点。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。