企业空间 采购商城 存储论坛
首页 > Hadoop > 正文

仔细扒拉扒拉Hadoop的前世今生(2)

2013-03-10 20:33来源:中国存储网
导读:3、集群系统 集群系统 Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。即使是分布式开发的新手也可以迅速使用Google的基础设施。核心组件是3个: 1、GFS(Google File System)。一个分布式文

3、集群系统

集群系统

Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。即使是分布式开发的新手也可以迅速使用Google的基础设施。核心组件是3个:

1、GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。Google根据自己的需求对它进行了特别优化,包括:超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等。GFS把文件分成64MB的块,分布在集群的机器上,使用Linux的文件系统存放。同时每块文件至少有3份以上的冗余。中心是一个Master节点,根据文件索引,找寻文件块。详见Google的工程师发布的GFS论文。

2、MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。

3、BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。   以上三个设施Google均有论文发表。

应用程序

Hadoop 的最常见用法之一是 Web 搜索。虽然它不是惟一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到 Google开发的启发。这个流程称为创建索引,它将 Web 爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义的搜索参数中识别内容。

MapReduce

最简单的 MapReduce 应用程序至少包含 3 个部分:一个 Map 函数、一个 Reduce 函数和一个 main 函数。main 函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop 提供了大量的接口和抽象类,从而为 Hadoop 应用程序开发人员提供许多工具,可用于调试和性能度量等。

MapReduce 本身就是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的 map 和 reduce 函数。它由两个可能包含有许多实例(许多 Map 和 Reduce)的操作组成。Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

这里提供一个示例,帮助您理解它。假设输入域是 one small step for man, one giant leap for mankind。在这个域上运行 Map 函数将得出以下的键/值对列表:(one, 1) (small, 1) (step, 1) (for, 1) (man, 1)  MapReduce 流程的概念流(one, 1) (giant, 1) (leap, 1) (for, 1) (mankind, 1)

如果对这个键/值对列表应用 Reduce 函数,将得到以下一组键/值对:(one, 2) (small, 1) (step, 1) (for, 2) (man, 1)(giant, 1) (leap, 1) (mankind, 1)

结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,现在假  显示处理和存储的物理分布的 Hadoop 集群设有两个输入域,第一个是 one small step for man,第二个是 one giant leap for mankind。您可以在每个域上执行 Map 函数和 Reduce 函数,然后将这两个键/值对列表应用到另一个 Reduce 函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是 MapReduce 的威力;它的并行功能可在任意数量的系统上使用。图 2 以区段和迭代的形式演示这种思想。

4、开源实现

开源实现

Hadoop是项目的总称,起源于作者儿子的一只玩具大象的名字。主要是由HDFS、MapReduce和Hbase组成。HDFS是Google File System(GFS)的开源实现。

MapReduce是Google MapReduce的开源实现。HBase是Google BigTable的开源实现。这个分布式框架很有创造性,而且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。因此Apache基金会用Java实现了一个开源版本,支持Fedora、Ubuntu等Linux平台。雅虎和硅谷风险投资公司Benchmark Capital 6月28日联合宣布,他们将联合成立一家名为Hortonworks的新公司,接管被广泛应用的数据分析软件Hadoop的开发工作。Hadoop实现了HDFS文件系统和MapRecue。用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job即可自动分布式运行。

目前Release版本是0.20.205.0。还不成熟,但是已经集群规模已经可以达到4000个节点,是在Yahoo!实验室中构建的。下面是此集群的相关数据:

· 4000 节点

· 2 x quad core Xeons@2.5ghz per 节点

· 4 x 1TB SATA Disk per 节点

· 8G RAM per 节点

· 千兆带宽 per 节点

· 每机架有40个节点

· 每个机架有4千兆以太网上行链路

· Redhat Linux AS4 ( Nahant update 5 )

· Sun Java JDK1.6.0_05 - b13

· 所以整个集群有30000多个CPU,近16PB的磁盘空间!

HDFS把节点分成两类:NameNode和DataNode。NameNode是唯一的,程序与之通信,然后从DataNode上存取文件。这些操作是透明的,与普通的文件系统API没有区别。MapReduce则是JobTracker节点为主,分配工作以及负责和用户程序通信。HDFS和MapReduce实现是完全分离的,并不是没有HDFS就不能MapReduce运算。Hadoop也跟其他云计算项目有共同点和目标:实现海量数据的计算。而进行海量计算需要一个稳定的,安全的数据容器,才有了Hadoop分布式文件系统(HDFS,Hadoop Distributed File System)。   

HDFS通信部分使用org.apache.hadoop.ipc,可以很快使用RPC.Server.start()构造一个节点,具体业务功能还需自己实现。针对HDFS的业务则为数据流的读写,NameNode/DataNode的通信等。MapReduce主要在org.apache.hadoop.mapred,实现提供的接口类,并完成节点通信(可以不是hadoop通信接口),就能进行MapReduce运算。   

目前这个项目还在进行中,还没有到达1.0版本,和Google系统的差距也非常大,但是进步非常快,值得关注。

另外,这是云计算(Cloud Computing)的初级阶段的实现,是通向未来的桥梁。   Hadoop的发音音标 [hædu:p]

现在回到 Hadoop 上,它是如何实现这个功能的?一个代表客户机在单个主系统上启动的 MapReduce 应用程序称为 JobTracker。类似于 NameNode,它是 Hadoop 集群中惟一负责控制 MapReduce 应用程序的系统。在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。MapReduce 应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。图 3 显示一个示例集群中的工作分布。

Hadoop 的这个特点非常重要,因为它并没有将存储移动到某个位置以供处理,而是将处理移动到存储。这通过根据集群中的节点数调节处理,因此支持高效的数据处理。

5、Hadoop主要子项目

Hadoop主要子项目

Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common

HDFS: Hadoop 分布式文件系统 (Distributed File System) - HDFS (Hadoop Distributed File System)

MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API

HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目)

Hive:数据仓库工具,由Facebook贡献。

Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。

Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

Hadoop研究

Hadoop是原Yahoo的Doug Cutting根据Google发布的学术论文研究而来。Doug Cutting给这个Project起了个名字,就叫Hadoop。其实Hadoop也是Doug Cutting的孩子的玩具的名字,一个可爱的黄色小象。

现在,Doug Cutting在Cloudera公司。Cloudera的Hadoop是商用版。不同于Apache的开源版。

如果要研究Hadoop的话,在下载Apache的版本是一种不错的选择。

只研究Apache版本的,不足以对Hadoop的理念理解。再对Cloudera版本的研究,会更上一层楼。

现在美国的AsterData,也是Hadoop的一个商用版,AsterData的MPP理念,Applications Within理念等等,

也都是值得研究。

Google的成功已经说明了RDB的下一代就是Nosql(Not Only SQL),比如说GFS,Hadoop等等。

Hadoop作为开源的版本来说,其魅力更是不可估量。

上文中说到Google的学术论文,其中包涵有:

Google File System(大规模分散文件系统)

MapReduce (大规模分散FrameWork)

BigTable(大规模分散数据库)

Chubby(分散锁服务)

这四大InfrastructureSoftware的陈述。

说起Google的GFS和Hadoop,不仅让我想起了,Unix和Linux。

由Unix而来的开源Linux,现在更是家喻户晓了。很多大型公司都启用Linux作为服务器。

相信不久的将来,Hadoop会像Linux一样,席卷全球,惠及全球。

6、Hadoop大事记

Hadoop大事记

2012年5月2日--来自北京暴风科技股份有限公司(暴风影音)的童小军通过认证考试,成为首位在国内完成培训并获得美国Cloudera公司认证的Apache Hadoop开发工程师(Cloudera Certified Developer for Apache Hadoop ,CCDH)。

2011年12月-- Apache Hadoop技术领导者Cloudera公司授予深圳市易思博信息技术有限公司为Apache Hadoop中国区培训合作伙伴,Apache Hadoop技术授权培训认证正式进入中国。

2009年4月-- 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

2009年3月-- 17个集群总共24 000台机器。

2008年10月-- 研究集群每天装载10 TB的数据。

2008年4月-- 赢得世界最快1 TB数据排序在900个节点上用时209秒。

2007年4月-- 研究集群达到两个1000个节点的集群。

2007年1月-- 研究集群到达900个节点。

2006年12月-- 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。

2006年11月-- 研究集群增加到600个节点。

2006年5月-- 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。

2006年5月-- 雅虎建立了一个300个节点的Hadoop研究集群。

2006年4月-- 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。

2006年2月-- 雅虎的网格计算团队采用Hadoop。

2006年2月-- Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。

2006年1月-- Doug Cutting加入雅虎。

2005年12月-- Nutch移植到新的框架,Hadoop在20个节点上稳定运行。

2004年-- 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。

7、Hadoop在中国

Hadoop在中国

Cloudera公司位于美国硅谷,是全球第一也是最大一家投身于Hadoop开源软件开发和发布免费Hadoop安装包的软件公司。同时,Cloudera公司还为大中小型企业提供一系列最具权威性的、基于Hadoop的新型数据平台和服务,涵盖金融,医疗健康,数字媒体,广告,网络和电信等各行各业。目前,互联网正从数据爆炸进一步发展到海量数据分析和挖掘的时代,为适应这一发展需求,Cloudera公司基于Hadoop的解决方案为海量数据存储和处理提供了经济、高效、高安全性和高可靠性的保障,必将为中国企业迈进海量数据分析和挖掘时代的大门提供金钥匙。

2011年12月,Cloudera公司授予深圳市易思博信息技术有限公司为Apache Hadoop中国区培训合作伙伴,Apache Hadoop技术授权培训认证正式进入中国。

深圳市易思博信息技术有限公司是中国一家领先的软件项目实训服务供应商。12年来,公司不断为高校和企业提供全面的软件教育解决方案,项目领域涉及电信、金融、电子商务等。公司总部设在深圳,在印度普那和中国设有多个分公司,拥有超过180名软件开发和系统咨询专家,以及超过35位项目经理。

有关深圳市易思博信息技术有限公司的Apache Hadoop授权培训方面的信息,可以参阅Cloudera公司的官方网站。

Hadoop认证

Cloudera公司目前主要提供Apache Hadoop开发工程师认证(Cloudera CertifiedDeveloper for Apache Hadoop ,CCDH)和Apache Hadoop管理工程师认证(Cloudera CertifiedAdministrator for Apache Hadoop ,CCAH),更多相关信息,请参阅Cloudera公司官方网站。

在中国,Apache Hadoop开发工程师认证(Cloudera CertifiedDeveloper for Apache Hadoop ,CCDH)和Apache Hadoop管理工程师认证(Cloudera CertifiedAdministrator for Apache Hadoop ,CCAH)主要由Cloudera公司通过授权培训合作伙伴深圳市易思博信息技术有限公司提供,认证考试通过,将获得Cloudera公司总部颁发的认证证书。

2012年5月2日,深圳市易思博信息技术有限公司举办的国内首届美国Cloudera公司授权Apache Hadoop开发工程师培训班在北京顺利结业,来自北京暴风科技股份有限公司(暴风影音)的童小军率先通过认证考试,成为首位在国内完成培训并获得美国Cloudera公司认证的Apache Hadoop开发工程师(Cloudera Certified Developer for Apache Hadoop ,CCDH)。 

继续阅读
关键词 :
Hadoop
中国存储网声明:此文观点不代表本站立场,如有版权疑问请联系我们。
相关阅读
产品推荐
头条阅读
栏目热点

Copyright @ 2006-2019 ChinaStor.COM 版权所有 京ICP备14047533号

中国存储网

存储第一站,存储门户,存储在线交流平台