Hadoop、HDFS数据流_解析__-_肖韬_南京大学计算机系_第1页
Hadoop、HDFS数据流_解析__-_肖韬_南京大学计算机系_第2页
Hadoop、HDFS数据流_解析__-_肖韬_南京大学计算机系_第3页
Hadoop、HDFS数据流_解析__-_肖韬_南京大学计算机系_第4页
Hadoop、HDFS数据流_解析__-_肖韬_南京大学计算机系_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HadoopDataFlow解析,肖韬南京大学计算机系2011.02,Job与Nodes的组成,一个job由若干task组成:若干maptasks若干reducetasks控制job运行的两类nodes:1个jobtracker:协调和控制系统中运行的所有jobs,以及所有在tasktrackers上运行的tasks若干tasktrackers:运行task,并向jobtracker发送进度报告(记录了每一个job的运行进度)如果一个task失败了,jobtracker可以将其重新部署到另一个tasktracker上运行,JobTracker与TaskTracker,Namenode与Data

2、node(1),Namenode与Datanode是HDFS中的概念。被存储在HDFS中的数据以block为单位存储,且每一个block被复制多份存储在不同节点,以提供可靠性保证和高速访问。HDFS采用master-slaves的架构:master管理数据文件的namepace(如metadata,目录结构,文件到blocks的映射,blocks的位置,访问权限等)slaves则管理实际的数据blocksmaster指导client对数据进行访问,Namenode与Datanode(2),在GFS中master被称作GFSmasterslaves被称作GFSchunkservers在Hadoo

3、p中master被称作namenodeslaves则被称作datanodes,HDFS架构,Hadoop集群的架构,Inputsplits,andrecords,MapReduce的输入(inputfile)被切分为固定大小的inputsplits,简称splitHadoop为每一个split都创建一个maptask,该maptask中的map函数会作用于split中的每一个record.一个record就是一个key-valuepair,这是inputfile,Inputsplit,这是一个Inputsplit,record,注意:inputsplit是对record(即key-valuep

4、air)在逻辑上的切分,而HDFS中的block是对输入数据的物理切分。当两者一致时,很高效,但是实际中往往不一致。record可能会跨越block的边界。,Split的大小选择,Split不该太大(失去parallel性)也不该太小(额外的开销占比过大)与HDFS中的一个Block的大小相同较为合适(Block默认为64BM),移动计算,而不是移动数据,Task在运行时需要数据Jobscheduler会在已经有了所需数据的节点上启动对应的task,这样就实现了datalocality,map与reduce的输出,Maptask的输出将被写入磁盘(Linux文件系统),而不是HDFS文件系统。

5、为什么?Map的输出是中间临时结果(intermediatekey-valuepairs),它们作为reducetasks的输入一旦job结束,这些中间临时结果即被丢弃,不再需要如果存入HDFS,就需要复制多份副本在网络上传输,浪费!Reducetask的输出会被写入到HDFS文件系统中毕竟,它们的输出是用户最终需要的结果,要妥善保存,只有1个reducetask的数据流图,每个虚线框表示一个node,partition,当存在多个reducer时,maptask会自己的输出进行partition,然后再将其送至reducetask。每一个partition会被发送至某个特别的reduceta

6、sk一个partition内可以包含多个不同的key,同一个key一定在一个partition内可以生成自定义的partitioner类(继承自),有多个reducetasks时的数据流图,每个虚线框表示一个node,可以只有maptask,而没有reducetask,这种情况下,maptask的输出会被写入HDFS,深入解析Shufflevoidmap(Keyk,Valuev,Contextcontext);voidcleanup(Contextcontext);被调用的顺序setupmapmapcleanupReducer类与之相似,maptask与mapperobject,Hadoop会

7、为每一个maptask创建一个mapper类的实例对象,每一个key-valuepair都会调用一次其中的map函数。所以,可以在处理多个records时保存相关的状态信息同理,Hadoop会为每一个reducetask创建一个reducer类的实例对象,每一个key(及其附带的value列表)都会调用一次reduce函数,会有多少个maptasks?,目前的版本中,maptask的个数与输入路径中的文件个数是一致的所以,应该避免大量的小文件,而是少量的大文件,这样使得launchedmaptask的个数可以少一些,reducetask又会有多少个呢?,overhead,启动一个新的map的工

8、作往往会耗费一段时间,所以一个map的实际计算时间最好超过1分钟。这样可以使得overhead所占比重不至于太大。,Context.write的输出,如果context.write的输出被传送至下一个task(例如mapper的输出被传送至reducer),那么很简单如果直接输出至文件(如reducer的输出),那么输出是以文本的形式被写入文件part-r-xxxxx中的:Context.write(key,listvalue,context)输出的文本形式为key.toString()+TAB+listi.toString(),SecondarySorting,Hadoop框架只能保证每一个

9、reducer接受的pairs都是key-sorted,如果某个key对应有多个values,那么这些values之间的顺序择不确定。那么怎样使这些values之间也有序呢?value-to-keyinversionapproach,即将value(或者是value中的一部分内容)归入到key中,然后重新编写compareTo函数(在WritableComparable接口中),关于Writable接口与Java的可序列化,假定我们自定义的value的类型形如:StructValueStringstr1Stringstr2;那么该怎样来实现write(DataOutput)与readFields(DataInput)接口?,最傻瓜、最安全的方法,classValueTextt1;Textt2;methodwrite(Da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论