基于Hadoop生态系统的大数据解决方案综述
*
陈吉荣,乐嘉锦
(东华大学算机科学与技术学院,上海201620
)摘 要:一个大数据解决方案需要面对三个关键问题:大数据的存储、大数据的分析和大数据的管理。首先综述了大数据和Hadoop生态系统的定义;然后从商业产品和Hadoop生态系统两个方面来探讨如
何面对大数据,重点分析了Hadoop生态系统是如何解决的:分别用HDFS、HBase和OpenTSDB解决存储问题,用Hadoop MapReduce(Hive)和HadoopDB解决分析问题,用Sqoop和Ganglia等解决管理问题。对于每个成员,分别分析了其系统架构、实现原理和特点;对于重点成员,分别分析了其存在的一些问题或缺点,并在总结当前学术和应用的进展基础上,结合我们自身的研究进展,提出了解决方法、解决思路和观点。可以预见,Hadoop生态系统将是中小企业在面对大数据问题时的首选解决方案。
关键词:大数据;Hadoop生态系统;MapReduce;HDFS;列存储数据库中图分类号:TP311
文献标志码:A
doi:10.3969/j
.issn.1007-130X.2013.10.003Reviewing the big data solution based on Hadoop
ecosystemCHEN Ji-rong,LE Jia-j
in(School of Computer Science and Technology,Donghua University,Shang
hai 201620,China)Abstract:Solving big data must deal with three crucial problems:big data storage,big
data analysisand big data management.Firstly,the definitions of big data and Hadoop
ecosystem are summarized re-spectively.Secondly,how to face big data is discussed from the two aspects of commercial products andHadoop ecosystem.The paper focuses on reviewing the big data solution based on Hadoop
ecosystem:(1)HDFS,HBase and OpenTSDB are used to deal with storage problems;(2)Hadoop MapReduce(Hive)and HadoopDB do analytical problems;and(3)Sqoop
and Ganglia solve management problems.For each partner,its architecture,principles and features are analyzed.And for some defects or prob-lems existing in some key partners,we propose some solutions,ideas and viewpoints based on our re-search progress.It is predicted that Hadoop ecosystem is the preferable solution for the small and medi-um-sized enterprises.Key
words:big data;Hadoop ecosystem;MapReduce;HDFS;column-oriented database1 引言
近几年,随着物联网、云计算和移动电子商务的发展,大数据业务占整个数据库市场的比例不断提高:全球数据库市场每年业务约146亿美元,
大数据业务约占到39.8亿美元(约27%)
,且以每年约10.3%的比例增长[1]
。2012年3月,
美国政府宣布推出2亿美元的“大数据的研究和发展计划”
,将大数据从商业行为上升到国家战略[
2]
。直面大数据时需要解决三个主要问题:存储问题、分析问题和管理问题。目前,对于大数据的解决方案,有
*
收稿日期:2013-02-25;修回日期:2013-05-
29基金项目:国家核高基项目(2010ZX01042-001-003)通讯地址:201620上海市松江区松江大学城人民北路2999号图文信息中心7楼B719Address:Room B719,7th Floor,Library and Information Center,2999Renmin Rd North,Songjiang University Town,Songjiang Dis-trict,Shang
hai 201620,P.R.China CN 43-
1258/TPISSN 1007-
130X 计算机工程与科学
Computer Engineering
&Science第35卷第10期2013年10月
Vol.35,No.10,Oct.2013
文章编号:1007-130X(2013)10-0025-
11
商业解决方案和Hadoop生态系统[3]解决方案。商业解决方案具有性能高、集成度高和使用方便等
特点,但是从目前Hadoop生态系统的成员来看,
其多样性、灵活性、扩展性对用户,特别是对中小型用户具有很大的吸引力。而且,Hadoop生态系统之所以和大数据如此紧密地联系在一起,不仅仅是因为它是开源系统,最主要的是它符合了大数据的本质特点(下文对大数据和Hadoop生态系统有详
细的分析)。Eclipse开源系统之所以能成为开发Java语言程序的统治性开发平台,
不仅仅是其开源,最重要的原因是其灵活的插件支持非常适合软件工程的思想和Java程序的自身特点。
本文针对大数据的三个关键问题,将一些主流的商业解决方案和Hadoop生态系统解决方案做了对比分析,重点放在Hadoop生态系统解决方案上。对于涉及到的Hadoop生态系统成员,本文对它的系统架构、实现原理、适用范围和技术特点做了分析归纳,对于重点成员存在的一些问题,在分析目前学术进展和应用进展的基础上,结合我们课题的研究,提出了自己的解决方法、解决思路和观点。
1.1 什么是大数据
要研究大数据,首先必须明确大数据的特征或定义。IBM给出了大数据的三个V[4]
,
分别是:Volume、Variety、Velocity(如图1所示)。大数据在Volume体现的是处理的数据量正从TB级别
跨越到ZB级别,Variety体现的是处理的数据类型从结构化类型为主过渡到结构化和非结构化两种数据类型共存,而Velocity体现的则是对数据处理的响应时间从批处理响应时间到实时的流数据处理响应时间
。
Figure 1 Three features of big data proposed by
IBM图1 IBM定义的大数据三个特征
麻省理工学院Hidalg
o C A博士[5]
则是从另外三个不同的Dimension(维度)(Size、Resolution
和Scope)来定义大数据:数据的规模足够大、数据的深度足够深和数据的广度足够宽,其主要意思
是:规模足够大指的是数据量要足够大(与IBM描述大数据的Volume一致)
;深度足够深指的是数据的各种解析度或粒度(
样本、类型和时间等)要细;广度足够宽指的是数据包含的内容要足够多。
上面两个对大数据的描述都是从数据自身的角度来考虑,第二种描述还考虑了大数据的质量,从目前业界对大数据的实际应用来看,如Google、Facebook、Yahoo和IBM等的解决方案,还应该将处理大数据的硬件平台和软件平台这两个要素考虑进去,
这样综合起来的大数据特征是:用大量的中低端机器(刀片机)构成集群来作为硬件平台;用相关的开源软件来作为软件平台。这种技术趋势在中小企业中表现得特别明显,这除了考虑软硬件的性价比外,
企业从数据安全的角度考虑也不太愿意将大数据放在公有云上来处理。所以,本文认为大数据的描述包括:规模足够大;深度足够深;广度足够宽;处理时间短;硬件系统普通化;软件系统尽量开源化。
1.2 什么是Hadoop生态系统
Goog
le在2003年和2004年分别发表了GFS[6]和Map
Reduce[7]
两篇论文,其影响之一就是产生了Apache Hadoop这个开源项目。同时,
其它众多的开源项目,例如HBase、Hive、Hadoop
++、HadoopDB、Pig、Zookeeper和Sqoop等,自然形成了围绕Hadoop的生态系统,
为大数据提供了一个完整的、多种选择的解决方案(如图2所示)。生态系统在生物界的表现就是食物链,且必定有一种生物处于食物链的最底层;Hadoop生态系统所表现的特征就是一个成员以另一个成员为基础,其中Hadoop核心是最底层。需要强调的是,并不是Hadoop生态系统中的所有成员都属于Apache组织,例如Hadoop
DB属于Yale大学,Ganglia属于UC Berkeley,HOP属于Google。各种论文或技术文档中提到的Hadoop有两种含义:
一种指的是所谓的Hadoop核心,主要包括HDFS和MapReduce;另一种指的是Hadoop生态系统的一部分,但是这里面一定有Hadoop核心,因为它是整个生态系统的最低层
。
Figure 2 Hadoop ecosystem图2 Hadoop生态系统
62Computer Engineering
&Science 计算机工程与科学 2013,35(10)
2 大数据的存储问题
IBM预计,到2020年全球的数据量将达到40ZB(目前中国占全球数据量的13%),数据类型以半结构化和非结构化为主。传统的关系型数据库系统如Oracle、SQL Server等只能满足关系型数据的存储需求,面临的主要挑战是存储半结构化和非结构化数据。这类数据的存储系统应具有高性价比、高可靠性、容量横向扩展(通过增加节点数量)和满足分布式计算等特点。Google用GFS存储非结构化数据,BigTable[8]以GFS为基础来存储半结构化数据或结构化数据,这种存储方案已经用在Google内部多个项目中,例如用GFS[6]存储网络爬虫大数据、用户Web请求的日志大数据;用BigTable[8]存储Google Analytics、Google Finance和Google Earth等项目的大数据。HP通过Sto-reAll存储来解决非结构化的大数据存储问题,该存储可在单一命名空间内同时支持文件存储和对象存储,总的数据量可达16PB。
目前,在Hadoop生态系统中对于非结构化数据的存储是通过Hadoop HDFS项目来解决,半结构化数据或结构化数据是通过HBase项目来解决,而对于面向时间序列的数据则是通过OpenTSDB项目来解决,这三个项目在生态系统中的层次关系如图2所示。
2.1 HDFS
HDFS[3,9,10](Hadoop Distributed File Sys-tem)是一个分布式文件系统,类似于Google的GFS,其架构是典型的Master/Slave形式(如图3所示),Master节点上启动一个进程Namenode,每个Slave节点上启动一个进程Datanode,Nameno-de与每个Datanode之间通过Heartbeat的方式进行通信。在Namenode进程运行的节点(简称Na-menode节点,即Master节点)上存放文件的元数据,在Datanode进程运行的节点(简称Datanode节点,即Slave节点)上存放具体的文件内容。
一个文件以多个block的形式存放在多个Namenode节点上,每个block有多个副本,副本存放的具体位置按照Hadoop的放置算法决定。这里需要注意的是,虽然HDFS中有缺省的block大小和副本数,但是缺省参数是可以重新设置的,而且对于每个Client或者一个Client的每个文件,都可以临时设置这两个参数(dfs.block.size
和
Figure 3 Architecture of HDFS
图3 HDFS的系统架构
dfs.replication)。这样增加了系统灵活性,因为每个文件的大小、重要性和逻辑处理单元都不一样(处理单元是split,split和block存在的对应关系可能是一对一关系、一对多关系和多对一关系的三种形式,对应关系直接影响到计算本地化的比例,而计算本地化的比例是影响最终分布式计算效率的重要因素之一)。
归纳起来HDFS具有的主要特点是:
(1)可以通过增加机器来横向扩展系统的存储能力。
(2)系统具有高可靠性。高可靠性还体现在当节点数不能满足block和复制因子时,或者说某个block被破坏时,如果有新的节点加入,系统会自动复制block,使得block数接近或等于复制因子。
(3)性价比高。由于具有上面两个优点,所以可以采用中低端的机器(刀片机)来作为Slave节点。
(4)适合对数据进行分布式计算,特别是Ma-
pReduce的计算模式。
(5)适合存储非结构化数据。
目前的HDFS还存在一些问题需要解决或优化,比较典型的是以下三个问题:
(1)对大量的小数据文件组成的集合处理效率
较低。不能通过简单的压缩方法,因为压缩后的文件很可能不支持正确的“切分”,Hadoop提供了三种解决方案,分别是Hadoop Archive、SequenceFile和CombineFileInputFormat,这三种方式各有优点和缺点,文献[11,12]也提供了相关的解决方案。但是,这些方案都受制于HDFS的分块机制。
(2)HDFS文件的读写并行问题,这里面还涉
及到文件一致性问题。目前,HDFS完全支持读读
并行,但是在读写并行、写读并行上受到一些制约。例如,一个正在进行写操作的文件,读用户是无法
7
2
陈吉荣等:基于Hadoop生态系统的大数据解决方案综述
“看到”其最后一个block内容的。在文献[13]中,作者对这两个问题进行了一些改进。关于写写并行这个问题,文献较少,实际上这个问题给Ma-
p
Reduce计算模型带来了一些制约。例如,用户输入一个文件,
但是最终的输出不是一个文件,最常见的是等于reducer的数量,即在某个目录下产生了part-r-00000、part-r-00001类似格式的输出文件。也就是说用户如果想得到一个最终结果,还必须合并这些文件;
无法将一个本地系统的大数据文件并行地导入到单独的一个HDFS中,只能串行;如果要对第一次的Map
Reduce输出再进行第二次的MapReduce,就制约了第二次输入数据的“切分”
方式,可能的切分方式是按单个文件切分,而不能像一个整体数据文件那样有很灵活的切分方式。从HDFS的文件组织方式来看,其元数据文件和真实数据文件是单独存放的,且HDFS中的每个
数据块均对应本地文件系统(Windows或者Linux)下的一个独立文件,所以在不改动HDFS主要特点或主要接口的基础上,通过块的逻辑处理(包括块的编号算法、每个不同的HDFS文件的块集合的组合)是一种可行的技术路线。
(3)HDFS的高可靠性与高可用性问题[1
4]
。按照HDFS的思想,
其是通过多个块副本的系统架构将大量普通的存储资源连接在一起,来获得高可靠性。但是,HDFS的元数据是其获得高可靠性和高可用性的一个最大制约。Hadoop老版本是通过元数据备份方案来获得高可靠性,但是无法实现高可用性;新版本(1.0以后的版本)是通过BackNode方案来获得高可靠性和高可用性,
但是还有较大的改进空间,与商业解决方案(如FaceBook)的AvatureNode运行机制还有较大的差距(完全的热备机制,能达到秒级别的迁移时间)。2.2 HBase
HBase
[15]
是一个面向列存储的数据库,类似
于Google的Big
Table,其系统架构如图4所示
。Fig
ure 4 Architecture of HBase图4 HBase的系统架构
从图4可以看出,HBase的物理数据是存储在HDFS集群中的,只有少量的元数据需要Zoo-
keep
er集群和HBase集群来维护,因此HBase可以存储大表(百万行数据以上的表)。在实际应用中,我们最好使各个不同的进程运行在不同的物理节点上,特别是不要使Datanode和HReg
ionServ-er运行在同一节点上,因为HRegionServer维持的数据不具有恢复功能,
且该进程在用户使用时必须始终处于运行状态(
不能崩溃)。HTable的逻辑结构是(Rowkey,Family,Col-umn,Timestamp,
Value),存储方式是按列存储。系统首先将初始Table对应一个Region,这个Region按照Family个数被切分为多个S
tore,每个Store包含一个或多个HFile,HFile是实际的存储文件。当HFile的长度超过配置参数
(hbase.region.max.filesize)时,其所在的Region一分为二;同时,一个Store中的多个或全部HFile也可以合并,HFile的分裂和合并是两个比较复杂的过程。避免过多的分裂是提高HBase写操作效率的一个关键问题。
这样看来HBase具有的主要特点是:(1)可以通过增加机器来线性扩展系统的存储能力。
(2)是一个面向列的NoSQL数据库,适合存储半结构化数据或非结构化数据。
(3)能方便地利用Map
Reduce框架进行数据分析。
(4)有较好的读写性能。(5)有丰富的接口类型,包括:Native JavaAPI、Shell、IE、Thift Gateway和Rest Gateway等。
当前版本的HBase存在的主要问题就是其辅
助索引问题(Secondary Indexes)和事务(Transac-tions)问题,这两项功能是传统的RDBMS均提供
的普通功能。但是,HBase不能直接支持。HBase对于辅助索引问题,有四种比较典型的解决方
法[
15]
:(1)应用层建立一个查询表(Lookup/Mapping
Table),当数据写入HBase数据表(Data Table)时,同时更新查询表。查询表的功能是提供辅助索引键到主键的映射。
(2)利用基于HBase的提供辅助索引的开源
系统,如ITHBase
。注意,这个系统并没有修改HBase
。(3)利用修改了的HBase,如IHBase,其内部直接提供了辅助索引的功能。
(4)利用HBase提供的coprocessor技术实现辅助索引。
82Computer Engineering
&Science 计算机工程与科学 2013,35(10)
关于事务问题,普遍的观点是列存储类型的数据库由于通常操作的对象是单一的大表,其所对应的业务不需要复杂的事务支持。如果需要复杂的事务处理,其存储结构还是要用RDBMS。很多商业的大数据处理平台同时提供两种存储结构:列存储和行存储(RDBMS),分别用两种存储结构的强项,而不是“勉为其难”,例如SAP的HANA大数
据处理平台。2.3 Op
enTSDBOp
enTSDB[16]
主要是用来存储时间序列数据,
例如,物联网中传感器的数据,数据库服务器、Web服务器或应用服务器的相关数据,
网络相关数据,股票市场数据,天气数据等。这些数据既可以通过OpenTSDB在IE上实时可视化展现,也可以对这些数据进行深度分析。其系统架构如图5所示
。
Figure 5 Architecture of Op
enTSDB图5 Op
enTSDB的系统架构Op
enTSDB是基于HBase的。在HBase上通过Rowkey的不同设计,一个表可以对应两种不同类型的逻辑样式:tall-narrow和flat-wide,两种样式的物理存储样式一样,但是查询/更新的效率差别较大。一般对于时间序列的数据,
常用的查询方式是:查询某个指标在某个时间区段的值,所以Op
enTSDB采用了flat-wide的逻辑样式。具体实现是通过field promotion的方法:以〈metric-id〉〈base-timestamp〉〈name ID〉〈value ID〉……作为Rowkey
(一个复合主键)。归纳起来OpenTSDB具有的主要特点如下:(1)能实时(秒级别)、连续和多指标地存储大数据。
(2)存储能力能横向扩展。(3)提供IE接口,将收集到的各种数据以曲线图的方式同步显示在IE上。
(4)提供Py
thon接口,通过编写脚本程序实现如提醒和报警等功能。
(5
)提供R语言接口,可以利用R语言来分析收集到的时间序列数据。
Op
enTSDB严格意义上属于应用层的系统,在其之前已经有很多成熟或正在运行的监控系统,所以如何将OpenTSDB融合进当前正在运行的监控系统是一个趋势。OpenTSDB数据可视化采用了gnuplot,所以在数据可视化方面还需要进行二次开发才能满足业务的实际需求。
3 大数据的分析问题
在生态系统出现前,对海量数据(海量数据和大数据的定义有一些区别)进行分析主要依靠一些商业并行数据库,如Vertica、DB-X、Greenp
lum、Teradata、Exadata和Madison等。这些并行数据库采用的是shared-nothing架构,主要特征表现为:系统通过高速网络将大量的Slave节点连接在一起;各个Slave节点是相互独立的,即Slave节点有自己的本地CPU、本地内存、本地存储和本地数据库管理系统(这些计算能力和存储能力也可以通过虚拟机或云平台来获得);Master节点对所有的Slave节点进行管理,客户端提交的SQL查询(
或通过JDBC、ODB接口访问并行数据库的应用程序)被Master节点透明地分解到多个Slave节点的独立数据库系统上并行执行。
由于并行数据库可以利用数据库领域众多的优化技术,如索引、数据压缩和对压缩的数据直接进行操作、物理视图、结果缓存和I/O共享等,所以在对结构化数据分析方面表现出很强的性能优势。但是,
随着要分析的数据越来越表现出大数据的特征(
处理的数据类型以半结构化数据和非结构化数据为主、数据量的爆发式增长),并行数据库在系统的可扩展性、容错性和同构性方面的先天不足就表现出来,
而且互相影响。Hadoop生态系统在大数据处理方面有自己
的特点,主要表现为:适合处理非结构化和半结构化数据;系统具有很强的扩展性和容错性;多样化的接口类型;适应运行环境的异构性;由于计算模型支持并行计算,
系统能获得较高的性能。但是,生态系统同等条件下用经典benchmark与商业并行数据库进行测试对比,前者在性能上(特别是复杂查询)表现出一些劣势。
这个问题可以从三个方面来思考。首先,Ha-doop生态系统最初是针对非结构化数据和半结构化数据设计的。其次,由于生态系统具有很强的可扩展性和容错性,可以通过增加节点数量来获得高
9
2陈吉荣等:基于Hadoop生态系统的大数据解决方案综述
性能,完全没有必要在同一条件下与并行数据库进行比较。增加节点数量既不需要修改SQL接口查询命令,也不需要修改通过编程语言实现的分析程序。而且由于采用的是中低端机器,对性价比影响也有限。最后,
目前生态系统自身也正在对性能问题进行优化和调整,包括Hadoop核心的优化(优化job调度程序、数据的压缩)和体系结构的优化(HadoopDB项目,Hadoop++项目)
。当前,Hadoop生态系统中有两种主要方式解决大数据的分析问题:经典型MapReduce方式和混合型MapReduce方式(吸收并行数据库的一些特点),分别对应生态系统中的Hadoop
MapRe-duce项目和HadoopDB项目,它们在生态系统中的层次关系如图2所示。3.1 Map
Reduce这里所讲的MapReduce[3]
,包括Hadoop
Ma-p
Reduce和Hive(限于篇幅,省略Hive,Hive本质上是在Hadoop
MapReduce上做了一个接口层,将SQL查询转换为一组执行Map
Reduce的job队列;Hive中的每个表实际上对应HDFS中的一个独立文件)。一个标准的MapReduce执行过程如图6所示
。
Figure 6 MapReduce process图6 Map
Reduce执行过程Map
Reduce计算模型还有另外两种形式[17]
,分别为Map-Only型和Iterative型。Map-Only型
的主要特点是没有Reduce过程,如执行一个文档转换;Iterative型的主要特点是连续执行多次Ma-
p
Reduce,且前面的MapReduce输出直接作为其后继Map
Reduce的输入,如Hive上的SQL查询。从表面看,MapReduce框架好像对开发人员进行了较大限制,实际上它是一个开放的框架,具体体现在:没有限制split如何切分;没有限制Map
函数输入的key/value对的含义、类型和数据来源;Map和Reduce功能完全由用户自己实现;没有限制最终输出的格式。这些就保证了这种框架具有解决较多问题的能力。
归纳起来Map
Reduce具有的主要特点是:(1
)并行执行,处理数据的效率较高,主要体现在Map阶段。(2)容错性,主要实现机制是HDFS存在多个数据备份和task的推测执行。(3)适用范围广,能解决较多的分布式计算问题,如排序、索引、查询和语义分析等。(4
)简单,因为在内部解决了分布式计算中较麻烦的问题,如任务分解、子任务的通信(同步)和结果汇总等。
(5
)可扩展性强。当前Map
Reduce存在的主要问题是其执行效率的问题,
影响执行效率的主要因素是调度算法。MapReduce获得较快执行速度的原理是“计算本地化”:即计算程序移动到本次计算的数据节点上,也就是说衡量一个调度算法的优劣可以通过一大批作业的计算本地化比例来评价(MapReduce提供了统计本地化比例的接口)
。目前的调度算法的思想和方法大部分还局限于操作系统、分布式系统或网格计算,如Map
Reduce提供的FIFO调度、fair调度、文献[18]提出的“自适应调度”算法、文献[19]提出的“加权公平队列调度”算法等。3.2 Hadoop
DB在大数据的分析上,Hadoop MapReduce(Hive)的处理效率与一些商业并行数据库(如Vertica、DB-X和Greenp
lum等)相比还有一些差距。HadoopDB[1,20,21]
将Map
Reduce与非共享机制的并行数据库技术相结合,
使得效率上接近并行数据库,容错性上接近Hadoop
MapReduce(Hive
),其系统架构[1]
如图7所示
。Figure 7 Architecture of Hadoop
DB图7 Hadoop
DB的系统架构03Computer Engineering
&Science 计算机工程与科学 2013,35(10)
从并行数据库的角度来看HadoopDB,其设计思想是:在每一个Slave节点上配置一个数据库系统,然后利用Hadoop作为其执行job的协调者(job如何分配到各个节点的数据库系统)和通信层(Master与Slave之间)构成一个非共享的并行数据库系统;从Hadoop(Hive)的角度来看,其设计思想是:扩展了Hive,将SQL查询转换为一组执行MapReduce的job队列,第一个job的Map数据源从文件修改为数据库(将这次查询工作压进数据库系统来处理),从而使得本次Map的输入记录来自本地节点的数据库系统的查询结果,本质仍然是Hadoop(Hive)的MapReduce执行模式。
HadoopDB主要有四个组件,分别是:Data-base Connector、Catalog、Data Loader和SMSPlanner:
(1)Database Connector是一个节点的数据库系统与Tasktracker之间的接口,是Hadoop(Hive)中的InputFormat的一种扩展,这里的数据库类似于HDFS中的block。
(2)Catalog主要是保存数据库的元数据信息,存在的形式是一个上传到HDFS中的Hadoop-DB.XML。该文件可以利用HadoopDB提供工具类,将用户设置的Catalog.properties文件转换为一个本地HadoopDB.xml文件。
(3)Data Loader主要是将数据集分散到各个节点的各个数据库对应的表中,包括:将数据集按照Slave节点个数切分为相同数量的partion,再将每个partion切分为多个chunk,最后将chunk注入到表中。
(4)SMS Planner对外给用户提供了一个SQL查询接口,对内的机制是扩展了Hive的SQLPlanner。SMS首先将用户提交的SQL查询转换为一个MapReduce作业序列(多个MapReduce作业,一个作业的输出数据存入HDFS并作为下一个作业的输入数据),最后根据HadoopDB转换规则将这个作业序列中的多个操作(由底向上扫描)再转换为一个或多个SQL查询并压入本地数据库系统(数据源)进行操作。
下面通过一个示例来具体化HadoopDB的工作原理。在伪分布Hadoop环境下,一个tempera-ture表或数据文件:两个字段id和data,6条记录(1/10,2/10,3/10,1/10,2/10,3/10,1/10,2/10,3/10),HadoopDB中对数据文件分为1个partion,不分块,SQL查询语句为“select id,SUM(data)from temperature group by id”,在HadoopDB的
查询接口执行,通过http:∥localhost:50030观察这次MapReduce的job,可以发现Map的输入记录数为3;如果直接用Hadoop(Hive)执行,其对应Map输入记录数为9。
归纳起来HadoopDB具有的主要特点如下:
(1)将并行数据库技术与Hadoop在体系结构上做了一个深度融合,而非简单的接口关系。
(2)提供两种接口:SQL查询接口和Java API接口,使得用户既可以直接使用熟悉的SQL实现查询,也可以编程实现类似Hadoop MapReduce的job应用程序(HadoopDB job)。
(3)一些SQL查询执行效率接近并行数据库(包括多表的连接操作),大部分SQL查询执行效率超过Hadoop。
(4)容错性、可扩展性大大超过并行数据库,接近Hadoop。
但是,HadoopDB目前也还存在一些问题需要解决,主要有:
(1)需要用户以手工方式来参与较多的前期工作,包括:HadoopDB.xml的生成;数据的分区和分块;每个节点的数据库(多个)和数据表(多个)的构建(虽然可以通过程序实现对所有节点进行批处理);数据最终注入到数据表(虽然可以通过脚本文件对所有节点进行批处理)等。
(2)用户除需要管理Hadoop系统外,还需要管理数据库系统。
(3)用户需要建立查询中涉及到的所有表的对应外表(只有表的描述,没有表的物理数据)。
(4)一些复杂的多表联合查询并不能完全压进数据库系统中来完成。
目前,HadoopDB已经被商业化为Hada-pt[22],这从一个侧面反映出该项目的优势和前景。从其网站可以发现,其已经在上述HadoopDB存在的四个问题的解决上取得了进展。
4 大数据的管理问题
开源项目一般都不太重视易用性,Hadoop生态系统也存在这个问题,而商业解决方案就比较注重这个问题。例如,IBM的大数据解决方案Bi-gInsights,其对Hadoop集群、HDFS文件管理和作业运行就有一个统一的可视化系统来管理;Google的大数据解决方案也特别依赖于内部的一个集群管理系统(in-house cluster managementsystem)。
1
3
陈吉荣等:基于Hadoop生态系统的大数据解决方案综述
实际上,一个完备的Hadoop大数据解决方案很需要一体化的管理系统,因为这个系统解决方案涉及到:较多的开源项目,大量机器构成的Ha-
doop集群和其它小集群,各种数据类型和数据来源,
大量参数的配置、调整和优化,多个作业的部署和运行等。如果依靠手工,
没有专门的工具或平台,系统的规模和效率较难得到保证,也影响到系统的推广。一些企业虽然利用了生态系统来构建平台,
实际上企业内部后来均独立开发了专门的工具或系统做这个工作。目前,每个生态系统项目均提供一些基本工具,以Hadoop
HDFS和HadoopMapReduce为例,有Shell接口、Web接口和E-clip
se插件,但是功能不全或偏弱:没有集群的配置平台,增加节点和删除节点需要手工操作;配置参数的优化依靠经验,缺少模拟器。
目前,有两个项目(Sqoop和Ganglia)被广泛应用于Hadoop生态系统的大数据管理,它们在生态系统中的层次如图2所示。4.1 Sqoop
大数据的一个特点就是数据类型多,有结构化数据、
非结构化数据和半结构化数据,数据的存在有本地文件、数据库表、HDFS文件和HBase表等多种形式。在实际应用中,大量的历史数据也是需要处理的,
而历史数据常用的存在形式就是本地文件和数据库表。Sqoop[17]主要解决的问题是:
导入Hadoop生态系统外的数据源(
本地文件或数据库表)到系统内(HDFS文件、Hive表和HBase表);导出系统内的数据源(包括处理结果)到系统外。图8是Sqoop的系统架构(实现导入功能,限于篇幅,
省略导出功能)
。Figure 8 Architecture of Sqoop(importing
process)图8 Sqoop的系统架构(
导入功能)Sqoop导入功能的实现原理是(
以将数据表导入进HDFS为例):Sqoop针对一个命令行生成一个Map
Reduce作业,该作业没有Reduce阶段;通过命令行指定的分割字段(最好为表的主键),Sqoop找到分割字段在表中的最小值m
in和最大值max(通过select实现),并假设[min,max]是一个连续的区间,也就是说该表在整个区间内都有记录;将这个区间平均分为map
task数量的小区间,也就是说每个map task就导入一个小区间范围内的所有记录(通过select实现)。从上面可以看出,
分割字段的选择直接影响到整个导入过程的速度,因为这是一个并行导入,正常情况下整个命令花费的时间等于分配记录最多的那个map task执行时间。
但是,Sqoop作为一个Hadoop生态系统内外数据转换的工具,有下面四个问题需要解决:(1
)缺少图形化的客户端,包括导入客户端和导出客户端(
导入客户端界面类似于数据库客户端,例如SQuirreL SQL
Client和DBBrowser;导出客户端界面类似于一个HDFS文件管理器)。(2
)导入的效率还需要进一步提高(导出的目标系统是RDBMS,由于数据库系统一般不支持并行插入,所以导出效率的优化可能性较小)
。(3
)稳定性问题需要解决。这里的稳定性是指:RDBMS中具有相同行数的两个大表,或者对于同一个表用两个不同的分割字段,其最终的导入效率差别很大。
(4)导出文件的数量不是1,而是与mapper的数量相同。
目前我们已经解决了前面三个问题,主要工作包括:
(1)开发了Web、application和插件的客户端。
(2)针对Sqoop在导入大表时表现出的不稳
定和效率较低两个主要问题,
设计并实现了一种新的基于Map
Reduce的大表导入编程模型。该模型对于大表的切分算法是:将大表总的记录数对mapper数求步长,获得对应每个sp
lit的SQL查询语句的起始行和区间长度(等于步长),从而保证了每个mapper的导入工作量完全相同;该模型的Map方式是:进入map函数的键值对中的键是一
个split所对应的SQL语句,将查询放在map函数
中完成,从而使得模型中的每个mapp
er只调用一次map函数。对比实验表明:两个记录数相同的大表,无论其记录区间如何分布,其导入时间基本相同,或者对同一表分别用不同的分割字段,导入时间也完全相同;而对于同一个大表,模型的导入效率比Sqoop有显著提高。
最后一个问题普遍存在于HDFS和Map
Re-duce中,其深层次的原因是:当前HDFS不能直接
23Computer Engineering
&Science 计算机工程与科学 2013,35(10)
支持“并行写”一个HDFS文件。如果能实现
HDFS并行写操作,就可以在Map阶段将多个mapp
er的输出整合为一个输出文件,而不是类似于part-m-00000、part-m-00001等多个输出文件。4.2 Gang
liaGang
lia[18]
可以Web的方式来实时监控Ha-doop集群,监控参数主要包括:CPU、内存、硬盘利用率、I/O负载和网络流量等,
它是一个可扩展的分布式的监控系统,
其体系结构如图9所示
。Figure 9 Architecture of Gang
lia图9 Gang
lia的系统架构Ganglia主要包含三个关键组件:g
mond(Gan-glia monitoring
daemon),需要监控的每台机器都要运行该进程来收集数据;gmetad(Ganglia metadaemon),在一个中心节点运行该进程gmetad,汇总来自gmond进程上收集的数据;Ganglia PHPWeb
Frontend,其主要工作是将gmond上汇总出的数据转变为HTML文件,用户就可以在IE上进行Web显示,该组件一般部署在gmetad进程运行的节点上。如果Hadoop涉及到的机器数量多或者集群数量多,可以将Ganglia配置为一个树型的分层架构,也就是说在非叶子节点上运行gmetad,高层的gmetad汇总来自其儿子节点上g
metad收集到的数据。对于Hadoop生态系统构成的大数据平台,Gang
lia还能收集和监控一些特有的参数。例如,对于HBase,能监控下面一些参数:hbase.master.cluster_requests、hbase.master.splitSize_avg_
time和hbase.master.splitSize_num_ops等,这样可以帮助用户从更细的粒度来分析参数和算法对系统的影响,从而调整使得系统更加优化。Ha-doop和Ganglia的整合是通过Hadoop实现的一
个类GangliaContext实现的。该类的主要工作是将在进程中收集到的一些指标送往Ganglia,用户可通过配置hadoop-metrics.properties文件的相关部分来整合这两个系统。
但是,在实际的应用中,Ganglia存在两个主要问题:
(1)用户不能定制自己的metrics
。(2)收集到的metrics及其数据只能用于显
示,不能用于深度分析。主要原因是Ganglia收集到的数据达到设定的数据量或者收集到的数据达到设定的时间跨度就必须进行数据稀释。但是,用户也有深度分析较长周期原始数据(没有被稀释)的需求,且由于这些数据是面向时间序列的数据,当采集频率较快和时间跨度较长时,这些数据本身也成为一个大数据。
目前,我们针对上述两个问题的解决思路是:将OpenTSDB架构融合进Gang
lia。对比两种架构可以发现:数据收集器类似于gmetad,TSD类似于gmond,HBase类似于RRDTool。所以,如果能将gmond收集到的数据分别送往RRDTool和HBase(关系数据库或其它列存储数据库),就能解决Gang
lia存在的上述问题:既实现了监控,同时又保存了原始数据。融合后的架构如图10和图11所示(图10和图11两种架构实现的原理基本
相同,区别在于图10向TSD写数据是分布式的,而图11是集中式的,需要通过实验来比较哪种架构写性能和效率更高)
。3
3陈吉荣等:基于Hadoop生态系统的大数据解决方案综述
5 结束语
基于Hadoop生态系统的大数据解决方案符合大数据的特点,且能按照业务需求进行比较自由的组合。当然,商业解决方案在性能、易用性和服务上有其优势。东华大学计算机学院在几个涉及大数据的项目中,如档案云项目(非结构化数据)、智慧医疗项目(结构化数据)和独立用户目标行为分析项目(半结构化数据),均采用了这种解决方案,实现了对相关大数据的存储、分析和管理,在过程中也对生态系统中的相关项目进行了优化,正在开发Hadoop生态系统大数据平台的管理套件。
目前,大数据和Hadoop生态系统都处于一个快速发展的时期,彼此影响和促进,而且商业的RDBMS、并行数据库系统和大数据平台,也非常重视与Hadoop生态系统的结合,是一个竞争和共生的关系,这一点与当初网格计算有很大的不同。大数据的安全也是一个重要的问题,特别是想将大数据放进公用云上,限于篇幅,本文没有探讨该问题。可以预见,基于Hadoop生态系统构建中小企业的大数据平台将会成为一个趋势。
参考文献:
[1] Abouzeid A,Bajda-Pawlikowski K,Abadi D J,et al.Ha-doopDB:An architectural hybrid of MapReduce and DBMS
technologies for analytical workloads[C]∥Proc of the 35th
International Conference on Very Large Data Bases,2009:733-743.
[2] USA government.“Big data”initiative:announces$200mil-lion in new r&d investments[EB/OL].[2013-04-24].http:
∥www.whitehouse.gov/sites/default/files/microsites/ostp/
big_data_press_release_final_2.pdf.
[3] White T.Hadoop:The definitive guide[M].Nanjing:South-east University Press,2011.(in Chinese)
[4] Zikopoulos P C,Eaton C,Deroos D,et al.Understandingbig data:Analytics for enterprise class Hadoop and streaming
data[M].USA:McGraw-Hill,2012.
[5] Hidalgo C A.How to transform big data into knowledge[EB/OL].[2013-04-24].http:∥enterprise.huawei.com/en/a-
bout/e-journal/ict/detail/hw-195167.htm.
[6] Ghemawat S,Gobioff H,Leung S T.The google file system[C]∥Proc of the 19th ACM Symposium on Operating Sys-
tem Principles,2003:29-43.
[7] Dean J,Ghemawat S.MapReduce:Simplified data process-ing on large clusters[C]∥Proc of the 6th Symposium on Op-
erating System Design and Implementation,2004:137-150.[8] Chang F,Dean J,Ghemawat S,et al.Bigtable:A distributedstorage system for structured data[C]∥Proc of the 6th Sym-posium on Operating System Design and Implementation,2006:205-218.
[9] Lam C.Hadoop in action[M].USA:Manning Publications,2012.
[10] Venner J.Pro hadoop[M].USA:Appress,2009.
[11] Cai Rui-cheng.Processing of small files based on HDFS andoptimization and improvement of the performance for Ma-
pReduce computing model[D].Changchun:Jilin Universi-
ty,2012.(in Chinese)
[12] Zhang Chun-ming,Rui Jian-wu,He Ting-ting.An approachfor storing and accessing small files on Hadoop[J].Com-
puter Applications and Software,2012,29(11):95-100.(in
Chinese)
[13] Jin Song-chang.Design and implementation of multi-user par-allel IO based on Hadoop[D].Changsha:National Universi-
ty of Defense Technology,2010.(in Chinese)
[14] Wen Ai,Wang Lei.Closer practice of high availability HDFS[M].Beijing:Tsinghua University Press,2012.(in Chi-
nese)
[15] George L.HBase:The definitive guide[M].USA:O’REIL-LY,2011.
[16] OpenTSDB[EB/OL].[2013-04-24].http:∥opentsdb.net/.
[17] Hwang K,Fox G,Dongarra J.Distributed and cloud com-puting:From parallel processing to the internet of things
[M].Beijing:China Machine Press,2012.(in Chinese)[18] Chen Quan,Deng Qian-ni.Self-adaptive MapReduce schedu-ling under heterogeneous environment[J].Computer Engi-
neering &Science,2009,31(A1):169-175.(in Chinese)[19] Kai Hua-dong,Tian Qi.Design and implementation prioritybased weighted fair queue based on MapReduce cluster[J].
Computer Knowledge and Technology,2011,7(9):2129-
2132.(in Chinese)
[20] Abouzied A,Bajda-Pawlikowski K,Huang Jie-W,et al.HadoopDB in action:Building real world applications[C]∥
Proc of the ACM SIGMOD International Conference on
Management of Data,2010:1111-1113.
[21] Bajda-Pawlikowski K,Abadi D J,Silberschatz A,et al.Ef-ficient processing of data warehousing queries in a split exe-
cution environment[C]∥Proc of the ACM SIGMOD Inter-
national Conference on Management of Data,2011:985-996.[22] Hadapt[EB/OL].[2013-04-24].http:∥hadapt.com/.
[23] Sqoop Project[EB/OL].[2013-04-24].http:∥sqoop.ap-ache.org/.
[24] Ganglia Project[EB/OL].[2013-04-24].http:∥ganglia.in-fo/.
附中文参考文献:
[3] White T.Hadoop权威指南(影印版)[M].南京:东南大学
4
3Computer Engineering &Science 计算机工程与科学 2013,35(10)
出版社,2011.
[11] 蔡睿诚.基于HDFS的小文件处理与相关Map
Reduce计算模型性能的优化与改进[D].长春:吉林大学,2012.
[12] 张春明,芮建武,何婷婷.一种Hadoop小文件存储和读取
的方法[J].计算机应用与软件,2012,29(11):95-
100.[13] 金松昌.基于HD
FS的多用户并行文件IO的设计与实现[D].长沙:国防科学技术大学,2010.
[14] 文艾,王磊.高可用性的HDFS—Hadoop分布式文件系统
深度实践[M].北京:清华大学出版社,2012.
[17] Hwang
K,Fox G,Dongarra J.云计算与分布式系统:从并行处理到物联网(英文版)[M].北京:机械工业出版社,2012.
[18] 陈全,邓倩妮.异构环境下自适应的Map
Reduce调度[J].计算机工程与科学,2009,31(A1):169-
175.[19] 开华东,田琪.基于Map
Reduce集群的加权公平队列调度算法研究[J].电脑知识与技术,2011,7(9):2129-
2132.作者简介:
陈吉荣(1971-),男,安徽舒城人,博士,讲师,在站博士后,研究方向为大数据平台的研究与开发。E-mail:cj
rbit@sohu.comCHEN Ji-rong,born in 1971,PhD,lec-turer,his research interests include
research&development of big
data platform.乐嘉锦(1951-),男,浙江镇海人,教授,博士生导师,研究方向为数据工程。E-mail:lejiaj
in@dhu.edu.cnLE Jia-jin,born in 1951,professor,PhD sup
ervisor,his research interest in-cludes data engineering
.第二届自然语言处理与中文计算会议(NLP&CC
2013)2013年11月15~19日,中国,重庆,君豪大饭店Nov.15~19,2013,Chongqing
,China,Jun Hao Hotel NLP&CC
2013简介:自然语言处理与中文计算会议(以下简称NLP&CC)是由中国计算机学会(CCF)主办的CCF中文信息技术专业委员会年度学术会议。NLP&CC专注于自然语言处理及中文计算领域的研究和应用创新,致力于推动该领域学术界和工业界的交流,成为覆盖全国、具有国际影响力的学术交流平台。
第一届自然语言处理与中文计算会议(NLP&CC 2012)于2012年10月31日至11月5日在北京成功举行,得到了相关领域学术界和工业界人士的积极关注和深度参与,共有300余人参加了大会组织的各项学术活动,活动反响超出预期,学术大会、ADL/Tutorials、技术评测Workshop等活动均受到与会者的好评。
第二届自然语言处理与中文计算会议(NLP&CC 2013)由CCF主办、由重庆大学和数字出版技术国家重点实验室承办,继续致力于构建覆盖全国、具有国际影响力的学术交流平台,展开各项学术活动。NLP&CC 2013以“数据智能、知识智能与社会智能”为主题,重点关注面向大数据资源的深度挖掘、深度理解与智能应用,欢迎学术界和工业界同行围绕相关研究投稿,论文内容须具有创新性。
会议正常注册缴费日期:2013-10-15及以前会议现场注册缴费日期:2013-10-15后·会议时间:2013年11月15~19日Conference:November 15~19,2013重要信息:
·投稿网址:https://www.softconf.com/e/nlpcc2013·投稿细节说明:中文说明和英文说明·会议注册网址:NLP&CC
2013网上注册5
3陈吉荣等:基于Hadoop生态系统的大数据解决方案综述
https://www.doczj.com/doc/033543701.html, 网易视频云:Kudu,支持快速分析的新型 Hadoop存储系统 网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在在线音视频平台。 Kudu是Cloudera开源的新型列式存储系统,是Apache Hadoop生态圈的新成员之一(incubating),专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop存储层的空缺。本文主要对Kudu的动机、背景,以及架构进行简单介绍。 背景——功能上的空白 Hadoop生态系统有很多组件,每一个组件有不同的功能。在现实场景中,用户往往需要同时部署很多Hadoop工具来解决同一个问题,这种架构称为混合架构(hybrid architecture)。比如,用户需要利用Hbase的快速插入、快读random access的特性来导入数据,HBase也允许用户对数据进行修改,HBase对于大量小规模查询也非常迅速。同时,用户使用HDFS/Parquet + Impala/Hive来对超大的数据集进行查询分析,对于这类场景,Parquet这种列式存储文件格式具有极大的优势。
https://www.doczj.com/doc/033543701.html, 很多公司都成功地部署了HDFS/Parquet + HBase混合架构,然而这种架构较为复杂,而且在维护上也十分困难。首先,用户用Flume或Kafka等数据Ingest工具将数据导入HBase,用户可能在HBase上对数据做一些修改。然后每隔一段时间(每天或每周)将数据从Hbase中导入到Parquet文件,作为一个新的partition放在HDFS上,最后使用Impala等计算引擎进行查询,生成最终报表。 这样一条工具链繁琐而复杂,而且还存在很多问题,比如: ? 如何处理某一过程出现失败? ? 从HBase将数据导出到文件,多久的频率比较合适? ? 当生成最终报表时,最近的数据并无法体现在最终查询结果上。 ? 维护集群时,如何保证关键任务不失败? ? Parquet是immutable,因此当HBase中删改某些历史数据时,往往需要人工干预进行同步。
中国管理科学研究院人才战略研究所 人才所[2015]第(06)号 “Hadoop大数据系统理论与实践”高级培训班通知一、培训特色 当前,我国已经进入大数据时代,在这样的时代背景下,Hadoop的应用也逐渐深入,正在从互联网企业,逐渐拓展到电信,金融,政府,医疗这些传统行业。目前Hadoop应用场景已广泛应用于日志存储、查询和非结构化数据处理等大数据应用领域,随着Hadoop技术的不断成熟以及生态系统相关产品的完善,包括Hadoop对SQL不断加强的支持,以及主流商业软件厂商对Hadoop支持的不断增强,必定会带动Hadoop渗透到越来越多的应用场景中。 2014年是中国大数据的应用落地年,越来越多的行业用户开始重视并启动大数据相关的项目。而在大数据领域的众多技术中,最受关注的是衍生于开源平台的Hadoop生态系统。Hadoop从2006年诞生至今已经超8年时间。2014年,整个生态系统变得比以往更加丰富,无论是在开源领域,商业软件厂商或是硬件厂商,都开始推出基于Hadoop的相关产品。Hadoop之所以受到如此的关注,主要原因在于它支持用户在低价的通用硬件平台上实现对大数据集的处理和分析,在某种程度上替代了传统数据处理所需的昂贵的硬件设备和商业软件。中国管理科学研究院人才战略研究所特举办“hadoop大数据系统理论与实践”高级培训班;并由盛科博文(北京)文化发展有限公司具体承办。 本课程将分别从理论基础知识,系统搭建以及应用案例三方面对Hadoop进行介绍。 本课程采用循序渐进的课程讲授方法,首先讲解Hadoop系统基础知识,概念及架构,之后讲解Hadoop实战技巧,最后详尽地介绍Hadoop经典案例,使培训者从概念到实战,均会有收获和提高。 二、目标收益 本课程将为大家全面而又深入的介绍Hadoop平台的构建流程,涉及Hadoop系统基础知识,概念及架构,Hadoop实战技巧,Hadoop经典案例等。 通过本课程实践,帮助学员对Hadoop生态系统有一个清晰明了的认识;理解Hadoop系统适用的场景;掌握Hadoop等初、中级应用开发技能;搭建稳定可靠的Hadoop集群,满足生产环境的标准;了解和清楚大数据应用的几个行业中的经典案例。 三、时间地点 2015年4月24日——2015年4月27日北京 (第一天报到,授课三天) 四、培训对象 各类IT/软件企业和研发机构的软件架构师、软件设计师、程序员。对于怀有设计疑问和问题,需要梳理解答的团队和个人,效果最佳。 主办单位:承办单位: 中国管理科学研究院人才战略研究所盛科博文(北京)文化发展有限公司2015年03月20日2015年03月20日
1自由选课一 1、以下哪个不是数据仓库的特点 2、以下哪个不属于数据仓库需求分析的先决条件 3、进行需求分析可使用多种工具,但以下哪项是不适用的 4、以下哪个不属于数据仓库需求分析的先决条件 5、以下与逻辑建模技术表述无关的是哪一个 6、数据仓库设计过程中所采用的逻辑模型是下面哪一个 7、以下有关ETL表述不正确的是哪一个 8、以下哪一个不属于元数据管理系统的建设的步骤 9、以下哪一个不是数据仓库管理的内容 10、以下哪一项在数据挖掘项目中所占时间比重最大
11、在数据挖掘中,可以通过哪种方法找出发现不真实的数据资料,保证资料的可信度 12、软件需求规格说明书的内容不应包括对的描述 13、K-means算法的缺点不包括 14、CRM是指在合适的、通过合适的、在合适的内、向合适的、提供合适的。 15、银行客户流失预测模型建立流程中模型预测周期一般为 16、商业银行信用评分模型中的数据源不包括 17、利用客户偏好模型对客户进行合理性、等角度去描述群体和调整模型,直至得到理想的模型。 18、客户关系管理的核心是 19、BI和CRM的关系描述中,不正确的是 20、关于软件的概念,说法错误的是
21、下列说法有误的是 22、下列关于ORM的描述,哪些是错误的 23、下列关于软件重用的描述有误的是 中间件是通用服务,这些服务具有标准的程序接口和协议,针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。以下关于中间件的相关描述有误的是 24、Hadoop的标志物是 25、BigTable对应Apache开源项目中的 26、Hadoop生态系统中,被作为ETL使用的软件是 27、Hadoop生态系统中,由Facebook开源,使用SQL语言进行离线分析的软件是 28、Hadoop是由何种语言编写的 29、下列哪些服务是在安装Hadoop时需要临时关闭
hadoop生态系统及简介 一、hadoop1.x的生态系统 HBase:实时分布式数据库 相当于关系型数据库,数据放在文件中,文件就放在HDFS中。因此HBase是基于HDFS的关系型数据库。实时性:延迟非常低,实时性高。 举例:在近18亿条数据的表中查询1万条数据仅需1.58s,这是普通数据库(Oracle 集群,Mysql集群)无法办到的。 HDFS:分布式文件系统 MapReduce:分布式计算框架 Zookeeper:分布式协作服务 协作HBase存储、管理、查询数据,Zookeeper是一个很好的分布式协作服务框架。
Hive:数据仓库 数据仓库: 比如给你一块1000平方米的仓库,让你放水果。如果有春夏秋冬四季的水果,让你放在某一个分类中。但是水果又要分为香蕉、苹果等等。然后又要分为好的水果和坏的水果。。。。。 因此数据仓库的概念也是如此,他是一个大的仓库,然后里面有很多格局,每个格局里面又分小格局等等。对于整个系统来说,比如文件系统。文件如何去管理?Hive 就是来解决这个问题。 Hive: 分类管理文件和数据,对这些数据可以通过很友好的接口,提供类似于SQL语言的HiveQL查询语言来帮助你进行分析。其实Hive底层是转换成MapReduce的,写的HiveQL进行执行的时候,Hive提供一个引擎将其转换成MapReduce再去执行。 Hive设计目的:方便DBA很快地转到大数据的挖掘和分析中。 Pig:数据流处理 基于MapReduce的,基于流处理的。写了动态语言之后,也是转换成MapReduce 进行执行。和Hive类似。 Mahout:数据挖掘库 基于图形化的数据碗蕨。
如今Apache Hadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper、Flume)。 Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化、非结构化等)的能力。但这与之前有什么不同? 现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据。但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类,同时这种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是Hadoop与传统数据处理方式最大的不同。 本文就重点探讨了Hadoop系统的组成部分,并解释各个组成部分的功能。MapReduce——Hadoop的核心 Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”。除了Hadoop,你还会在MapReduce上发现MPP(Sybase IQ推出了列示数据库)和NoSQL(如Vertica和MongoDB)。 MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行 的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题,此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法。Yahoo在2006年看到了Hadoop未来的潜力,并邀请Hadoop创始人Doug Cutting着手发展Hadoop技术,在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他
作者:GETINDATA公司创始人兼大数据顾问彼得亚·雷克鲁斯基(Piotr Krewski)和GETINDATA公司首席执行官兼创始人亚当·卡瓦(Adam Kawa) 目录 ?内容简介 ?设计理念 ?H ADOOP组件 ?H DFS ?Y ARN ?Y ARN 应用程序 ?监控 YARN 应用程序 ?用HADOOP处理数据 ?H ADOOP 的其它工具 ?其它资源 内容简介 Hadoop是目前最流行的大数据软件框架之一,它能利用简单的高级程序对大型数据集进行分布式存储和处理。本文将介绍Hadoop的核心概念,描述其体系架构,指导您如何开始使用Hadoop以及在Hadoop上编写和执行各种应用程序。 Hadoop是阿帕奇(Apache)软件基金会发布的一个开源项目,它可以安装在服务器集群上,通过服务器之间的通信和协同工作来存储和处理大型数据集。因为能够高效地处理大数据,Hadoop近几年获得了巨大的成功。它使得公司可以将所有数据存储在一个系统中,并对这些数据进行分析,而这种规模的大数据分析用传统解决方案是无法实现或实现起来代价巨大的。
以Hadoop为基础开发的大量工具提供了各种各样的功能,Hadoop还出色地集成了许多辅助系统和实用程序,使得工作更简单高效。这些组件共同构成了Hadoop生态系统。 Hadoop可以被视为一个大数据操作系统,它能在所有大型数据集上运行不同类型的工作负载,包括脱机批处理、机器学习乃至实时流处理。 您可以访问https://www.doczj.com/doc/033543701.html,网站获取有关该项目的更多信息和详细文档。 您可以从https://www.doczj.com/doc/033543701.html,获取代码(推荐使用该方法)来安装Hadoop,或者选择Hadoop商业发行版。最常用的三个商业版有Cloudera(CDH)、Hortonworks(HDP)和MapR。这些商业版都基于Hadoop的框架基础,将一些组件进行了打包和增强,以实现较好的集成和兼容。此外,这些商业版还提供了管理和监控平台的(开源或专有的)工具。 设计理念 Hadoop在解决大型数据集的处理和存储问题上,根据以下核心特性构建: ?分布式:存储和处理并非构建在一台大型超级计算机之上,而是分布在一群小型电脑上,这些电脑之间可以相互通信并协同工作。 ?水平可伸缩性:只需添加新机器就可以很容易地扩展Hadoop集群。每台新机器都相应地增加了Hadoop集群的总存储和处理能力。 ?容错:即使一些硬件或软件组件不能正常工作,Hadoop也能继续运行。 ?成本优化:Hadoop不需要昂贵的高端服务器,而且在没有商业许可证的情况下也可以正常工作。 ?编程抽象:Hadoop负责处理与分布式计算相关的所有纷杂的细节。由于有高级API,用户可以专注于实现业务逻辑,解决他们在现实世界中的问题。 ?数据本地化:Hadoop不会将大型数据集迁移到应用程序正在运行的位置,而是在数据所在位置运行应用程序。
大数据技术与应用 网络与交换技术国家重点实验室 交换与智能控制研究中心 程祥 2016年9月
提纲-大数据处理和分析 1. 批处理计算 1.1 MapReduce 1.2 Spark 2. 流计算 2.1 Storm 3. 图计算 3.1 Pregel 4. 分析和挖掘 4.1 Hive 4.2 Mahout
2 Spark ?2.1 Spark概述 ?2.2 Spark生态系统 ?2.3 弹性分布式数据集(RDD)?2.3 Spark运行架构 ?2.4 Spark编程实践
2.1 Spark概述 ?2.1.1Spark简介 ?2.1.2Scala简介 ?2.1.3Spark与Hadoop的比较
?Spark最初由美国加州伯克利大学(UC Berkeley)的AMPLab于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序 ?2013年Spark加入Apache孵化器项目后发展迅猛,如今已成为Apache软件基金会最重要的分布式计算系统开源项目之一 ?Spark在2014年打破了Hadoop保持的基准排序纪录–Spark/206个节点/23分钟/100TB数据 –Hadoop/2000个节点/72分钟/100TB数据 Spark用十分之一的计算资源,获得了比Hadoop快3倍的速度!
Spark具有以下特点: ①运行速度快:采用DAG执行引擎和内存计算 ②容易使用:支持包括Scala、Java、Python和R语 言在内的多种语言进行编程 ③与HDFS等存储层兼容:可以独立运行,也可以运 行在YARN等集群管理系统之上,特别地,它可以运行在任何的Hadoop数据源上,例如,HDFS和 HBase ④通用性:类似Hadoop,Spark提供了完整而强大 的技术栈,包括SQL查询、流式计算、机器学习和图算法等组件
Hadoop配置部署 每个节点上的Hadoop配置基本相同,在Master节点操作,然后完成复制到其他所有的从节点。 下面所有的操作都使用waibao用户,切换waibao用户的命令是: su waibao 密码是:waibao 将软件包中的Hadoop生态系统包复制到相应waibao用户的主目录下(直接拖拽方式即可拷贝) 3.3.1 Hadoop安装包解压 进入Hadoop软件包,命令如下: cd /home/waibao/resources/ 复制并解压Hadoop安装包命令如下: cp hadoop-2.5.2.tar.gz ~/ cd tar -xvf hadoop-2.5.2.tar.gz mv hadoop-2.5.2 hadoop cd hadoop ls -l看到如下图的内容,表示解压成功: 3.3.2配置环境变量hadoop-env.sh 环境变量文件中,只需要配置JDK的路径。
vi etc/hadoop/hadoop-env.sh 在文件的靠前的部分找到下面的一行代码: export JAVA_HOME=${JAVA_HOME} 将这行代码修改为下面的代码: export JAVA_HOME=/usr/java/jdk7 然后保存文件。 3.3.3配置环境变量yarn-env.sh 环境变量文件中,只需要配置JDK的路径。 vi etc/hadoop/yarn-env.sh 在文件的靠前的部分找到下面的一行代码: # export JAVA_HOME=/home/y/libexec/jdk1.6.0/ 将这行代码修改为下面的代码(将#号去掉): export JAVA_HOME=/usr/java/jdk7 然后保存文件。 3.3.4配置核心组件core-site.xml vi etc/hadoop/core-site.xml 用下面的代码替换core-site.xml中的内容: