基于Hadoop生态系统的大数据解决方案
2019-06-26韩朵朵刘会杰许爱雪
韩朵朵 刘会杰 许爱雪
(石家庄铁路职业技术学院 河北石家庄 050041)
1 引言
随着21世纪进入信息化时代,由人类日益普遍的网络行为伴生的数据信息量呈爆发式增长,大数据概念也应运而生。由于大数据包含了超出传统数据库系统处理能力的海量数据,处理这些信息时必须采用与传统数据处理方式不同的解决方案。目前,围绕大数据的相关研究已经大量存在,主要集中在对数据的快速捕获、管理、存储和分析等关键问题的解决上。其中,由Apache软件基金研发的Hadoop技术在大数据分析处理领域占据了主流地位。
本文介绍了大数据的概念及Hadoop生态系统的组成框架,重点从大数据平台中面临的数据存储、分析、管理及安全等关键问题入手,对基于Hadoop生态系统的解决方案进行了分析综述,并结合实际指出基于Hadoop的大数据平台的研究和应用发展方向。
1.1 大数据特征
当数据量超过一定规模,致使常规软件不能在可接受的时长内完成对数据的捕获、管理和处理工作时,这些数据即可称为大数据(big data)。大数据是物理世界在数字空间的映射,通过大数据平台有效组织各类数据,模拟物理世界属性,即可用来分析和服务现实世界,这也是大数据所追求的最终目的。大数据具有典型的“4V”特征,分别为:
(1)体量(Volume):数据量级高,从TB量级跃增到PB量级,并持续增高。
(2)速度(Velocity):处理速度快,对于时间敏感的数据处理,一般要在秒级给出分析结果,时间太长就失去价值。比如发现诈骗事件,数据就必须要及时反馈给相应机构。
(3)多样性(Variety):数据结构复杂,包括各种结构化、非结构化和半结构化的数据,类型涵盖视频、文本、音频、图片和日志数据等。
(4)价值(Value):价值密度低但存在着可观的商业价值,例同监控视频,连续不停顿的画面里,有价值的可能仅有几秒。
1.2 Hadoop生态系统
目前,遍观国内外现有的各种模式的大数据解决方案,由Apache软件基金研发的Hadoop技术迅速崛起,并逐步演化形成了一个生态系统,奠定了其在大数据分析处理领域的主流地位。Hadoop生态系统基本框架如图1所示[1],其中最核心的是底层的Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce编程框架,除此之外,还包括与之紧密关联的HBase数据库集群和ZooKeeper集群。需要指出的是,Hadoop生态系统中有的技术并不是由Apache组织提出的。例如HadoopDB属于Yale大学,HOP属于Google,Ganglia属于UC Berkeley。
图1 Hadoop生态系统基本框架
2 Hadoop关键技术及应用
构建一个能够有效支撑大数据应用的平台,需要着重考虑几个关键问题:大数据的存储、大数据的分析、大数据的管理以及大数据的安全,而Hadoop系统在这些问题的处理上都有着较明显的优势。
2.1 大数据的存储问题
据统计,当前中国的数据量占了全球数据量的约13%,到2020年全球数据将可能达到40ZB,这些数据的类型以半结构化和非结构化为主,而传统的关系型数据库系统比如SQL Server、Oracle等仅适于处理结构化数据,对于半结构和非结构化数据的存储还需要开发寻找其他合适的新系统。这类系统需具有高性价比、高可靠性和容量可横向扩展等特点,并且满足分布式计算的需求。为此,Google设计了以GFS为基础的Bigtable分布式数据存储系统,并将其应用到公司内部多个项目中,比如存储网络爬虫大数据、用户Web请求的日志大数据等。HP利用StoreAll解决非结构化大数据的存储问题,可在单一命名空间内支持文件存储的同时支持对象存储,并且总数据量可达16PB。
目前,Hadoop生态系统是大数据研究中最热门的解决方案之一,其通过HDFS分布式文件系统来解决非结构化数据的存储,通过HBase项目来解决结构化数据或半结构化数据。HDFS类同于Google的GFS,以Master/Slave形式为架构,以“一次写入,多次读取”访问方式为核心设计思想,将需要存储的大文件进行分割,形成Block数据块分别存放,从而完成大数据的存储。对大数据进行存储主要依赖于并行数据库,通过对数据的各个节点并行来实现对数据库执行的目的,但并行数据库在读写并行上存在一定制约,所以大家一般尽可能采用移动终端对信息进行存储,而不使用并行数据库。
2.2 大数据的分析问题
大数据不同于海量数据,简单来说,大数据=海量数据+复杂类型的数据。在生态系统出现之前,商业并行数据库是对海量数据进行分析的主要手段,这些并行数据库主要采用的是shared-nothing架构,独立设置网络中每个Slave节点的本地CPU、本地存储、本地内存和本地数据库管理系统,保持各个Slave节点间的独立性。作为所有Slave节点的管理员,Master节点负责将客户端提交的SQL查询任务进行透明化分解,分配给多个Slave节点并行执行。
借助数据库领域成熟领先的优化技术,如索引、数据压缩等,并行数据库在结构化数据分析上表现出超强的性能优势。但是随着以半结构化和非结构化为主的大数据出现,并行数据库的先天不足就开始显现出来,主要表现在可扩展性差,容错性能低和同构性不足几个方面。而最初就是针对大数据特征提出的Hadoop生态系统,弥补了在半结构化和非结构化数据处理上的这些不足,并且随着生态系统性能的不断优化调整,Hadoop的这种优势会越来越明显。
Hadoop主要由两部分组成:底部是HDFS,负责存储工作,上部是MapReduce引擎,负责对大数据集进行并行处理。MapReduce是一种简化的分布式编程模式,核心思想是Map和Reduce,即任务的分解与结果的汇总,该种方式编写的程序会被分布到一个超大集群中的若干个普通机器上并行执行。作为影响MapReduce执行效率的主要因素,调度算法的研究至关重要。目前常用的调度算法,如MapReduce提供的fair调度、FIFO调度及Chen Quan等人提出的“自适应调度”算法,其主要思想和方法依然局限在分布式系统、操作系统或网格计算中。近些年针对MapReduce的计算模型的改进研究,主要集中在数据集的扫描、分解和归约等方面的并行性上,通过结合具体应用来比较不同方法适用的数据类型及性能优劣。
2.3 大数据的管理问题
一个Hadoop大数据解决方案只有有了一体化的管理系统才算得上是完备的,因为这个系统解决方案涉及太多方面,比如复杂的数据类型和数据来源、大量机器构成的Hadoop集群和其它小集群、大量参数的配置和优化、多个作业的部署和运行等[5]。离开了专门的管理工具或系统,系统就难以得到提升,系统推广也就非常受限了。所以企业在利用Hadoop生态系统构建平台后,均会开发专门的管理工具或系统。
实际上,每个生态系统项目均会带有一些基本工具,以HDFS和Hadoop MapReduce为例,有Eclipse插件、Web接口和Shell接口,但是功能尚不完善[5]。目前,Hadoop大数据管理工作中应用较为广泛的是Sqoop和Ganglia两个项目,Sqoop主要实现的是Hadoop生态系统内外数据转换的工作,Ganglia可以Web的方式来实现监控Hadoop集群[9]。
2.4 大数据的安全问题
在开发之初,Hadoop优先考虑的是功能,安全问题并未得到过多考虑,而实际上大数据中可能包含大量的用户敏感数据和隐私信息,随着Hadoop大数据平台应用日益广泛,企业不得不考虑如何保护这些敏感数据,尤其是想将大数据放进公用云上。因此,针对Hadoop平台可能存在的安全隐患,开发者们通过加强平台的身份验证、访问授权、数据加密和操作审计等管控手段,对应不同应用场景设计出实用化的安全管控产品。
2009年,基于Kerberos的用户身份验证方案的提出,正式拉开了Hadoop平台安全管控研究工作的大幕。2013年,Intel牵头启动了开源项目“Project Rhino”,致力于增强Hadoop平台安全管控能力。到目前为止,通过引入Kerberos、配置防火墙、基础的HDFS权限和ACLs,已经形成了一套能满足众多组件且能横向扩展的安全管控基本解决方案。但其实,要实现Kerberos与Hadoop服务的完美整合,还需要做一系列复杂的配置工作,导致其易用性表现较差,安全问题依旧有待得到更好地解决。
2.5 Hadoop商业应用与发展
大数据的战略意义在于从海量的数据中挖掘出有用的价值。譬如企业进行大数据分析,期望从中发现隐含的商业价值,以便更好地提高产品和服务质量。所以目前,Hadoop在商业领域应用较多且取得了很大创新,商业应用更加注重处理的效率和运维的成本。其中,Cloudera CDH,Hortonworks和MapR 3家公司发行的Hadoop商业版本较为流行,通过对Apache的Hadoop进行打包、改进,为确保生态圈的所有软件协调工作提供技术支持。
在国外,作为大数据市场的积极推动者,Google,IBM,Yahoo等巨头也都是Hadoop的最大的应用者。蓝云Bluemix是IBM构建云框架的基础设施,基于Apache Hadoop构建的IBM InfoSphere Biginsights可提供大规模的静态数据分析功能,实时数据则可通过Infosphere Streams采用内存计算方式分析。Amazon基于Hadoop构建了A9.com,以此实现强大的商品搜索索引功能。Facebook使用Hadoop存储内部日志与多维数据,基于Hive等进行日志分析和数据挖掘。Twitter的微博数据、日志文件和中间数据的存储依靠Hadoop的HDFS完成,并采用Cloudera's CDH2系统来存储压缩数据[12]。
在国内,越来越多的企业加入到应用和研究Hadoop的行列,主要包括传统企业如百度、淘宝、腾讯、网易等互联网公司以及中国移动、华为、农业银行等。阿里巴巴是国内首先使用Hadoop的公司之一,百度是目前Hadoop的最大使用者之一,每天处理的数据量高达9000TB,针对自身需求百度对Hadoop进行了改进,开发了HCE(HadoopC++)系统以及自己的日志分析平台、数据仓库系统等,为公司业务提供分析计算和存储服务[12]。腾讯基于Hadoop和Hive构建了分布式数据仓库TDW(Tencent distributed Data Warehouse),克服了传统数据库可控性差,无法线性扩展的缺陷,目前改进为基于Spark框架。中国移动在通信领域广泛使用Hadoop,利用HDFS实现数据分布式存储,利用MapReduce进行分布式数据处理。华为构建了FusionInsight大数据平台,通过实时数据处理引擎,以事件驱动模式有效地解决了高速事件流的实时计算问题。
3 结语
目前,大数据和Hadoop生态系统都处于一个快速发展的时期,相互影响和促进。而Hadoop生态系统符合大数据本质特点,其成员具有多样性、灵活性、扩展性,尤其是对中小型用户具有很大的吸引力,能按企业业务需求进行比较自由的组合,相信利用Hadoop生态系统构建小企业的大数据平台将会成为一个趋势。
另外,虽然围绕大数据平台的研究已经大量存在,但还有一些问题有待进一步解决:一是技术推广,二是标准和法规的制定,三是应用系统(平台)之间的兼容和整合,四是提高数据应用能力,相信随着研究的不断深入,这些问题都可以慢慢得到解决或改进。