- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hadoop平台结构浅析 什么是Hadoop? Hadoop是Apache下面的一个分布式并行计算框架,是从Lunece中抽取出来的一个框架。Hadoop的核心设计思想是MapReduce和HDFS,其中MapReduce是 Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。 前提和设计目标 1. 硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS 的核心架构目标。 2. 跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 3. HDFS以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。 4. HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这一假设简化了数据一致性问 题,使高吞吐量的数据访问成为可能。典型的如MapReduce框架,或者一个web crawler应用都很适合这个模型。 5. 移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比 之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。 6. 在异构的软硬件平台间的可移植性。 Hadoop的What, Why, How Hadoop框架中最核心的设计就是:MapReduce和HDFS。 MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。 HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。 Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率 任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce要做的工作。 HDFS结构分析 HDFS是一个大规模的分布式文件系统,采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服 务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。 Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。 Datanode在Namenode的指挥下进行block的创建、删除和复制。Namenode和Datanode都是设计成可以跑在普通的廉价的运行 linux的机器上。 HDFS架构图 Hadoop的源代码现在已经对外公布,用户可以从它的官方网站上下载源代码并自己编译,从而安装在Linux或者Windows机器上。 Hadoop的基本结构 基本模型Master / Slaves / Client 其对应的实现: Master– NameNode Slaves–DataNode s Client –DFSClient 可移植性与通用性 Hadoop的框架代码采用Java编写,这就保证了其良好的移植性与通用性 但是在其上运行的应用程序并不局限于使用Java语言,使用C++,Python,Perl语言均可以方便地编写 一些包与依赖关系 通信接口 由于Hadoop 的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化。Hadoop并没有采用Java的序列化,而是引入了它自己的系统。 org.apache.hadoop.io中定义了大量的可序列化对象,他们都 实现了Writable接口 实现了Writable接口的一个典型例子如下 public?class?MyWritable?implements?Writable?{????? ????//?Some?data?????????? ????private?int?counter;????? ????private?long?timestamp;????? ???? ????public?void?write(DataOutput?out)?throws?IOException?{????? ????????out.writeIn
文档评论(0)