Hadoop0.20.0源码流程分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hadoop源码以及流程解析 整体结构 DN: Configuration,JobClient,JobConf Master:JobTracker,JobInProgress,TaskInProgress WN:TaskTracker,Task(MapTask、ReduceTask),JvmManager,Child 图1 整体结构 Client Configuration 从Configuration类的源代码可以看到,定义了如下私有成员变量: private boolean quietmode = true;// 第一个是boolean型变量quietmode,用于设置加载配置的模式。通过阅读源代码就可以清楚,这个quietmode如果为true,实际上默认就为true,加载配置的模式为快速模式,其实也就是在解析配置文件的过程中,不输出日志信息,就这么简单。 private ArrayList defaultResources = new ArrayList();//它是一个列表,该列表中存放的是配置文件的名称 private ArrayListObject resources = new ArrayListObject();//全部资源的配置包括URL、String、Path、InputStream private SetString finalParameters = new HashSetString();//程序性的 private boolean loadDefaults = true;//是否载入默认资源 private static final WeakHashMapConfiguration, Object REGISTRY = new WeakHashMapConfiguration, Object();// private Properties properties;//个人程序所需要的所有配置 会以Properties的形式存储 private Properties overlay;// 它也是一个Properties变量。它对应于finalResources列表,也就是解析finalResources列表中设置的配置文件,配置项设置到overlay中。这里,overlay比较关键的一点就是,如果overlay不为空属性配置,在创建一个Configuration实例的时候会检查overlay,不空就将其中的配置项加入到properties中 private ClassLoader classLoader;//类加载器 在这里所有客户端程序中配置的类的信息和其他运行信息,都会保存在这个类里。 JobClient JobClient.runJob(job)静态方法会实例化一个JobClient实例,然后用此实例的submitJob(job)方法向 master提交作业。此方法会返回一个RunningJob对象,它用来跟踪作业的状态。作业提交完毕后,JobClient会根据此对象开始轮询作业的进度,直到作业完成。 submitJob(job)内部是通过submitJobInternal(job)方法完成实质性的作业提交。 submitJobInternal(job)方法首先会向hadoop分布系统文件系统hdfs依次上传三个文件: job.jar, job.split和job.xml。 job.xml: 作业配置,例如Mapper, Combiner, Reducer的类型,输入输出格式的类型等。 job.jar: jar包,里面包含了执行此任务需要的各种类,比如 Mapper,Reducer等实现。 job.split: 文件分块的相关信息,比如有数据分多少个块,块的大小(默认64m)等。 这三个文件在hdfs上的路径由hadoop-default.xml文件中的mapreduce系统路径mapred.system.dir属性 + jobId决定。mapred.system.dir属性默认是/tmp/hadoop-user_name/ mapred/system。写完这三个文件之后, 此方法会通过RPC调用master节点上的JobTracker. submitJob(job)方法,此时作业已经提交完成。 关键代码流程解析: jobClient.submit();调用jobClient.submitJobInternal(conf);在这个函数中利用jobId建立提交根路径,jar文件路径,job分割文件的路径,job.xml路径。代码如下: JobID jobId = jobSubmitClient.getNewJobId();//生成jobId rpc Path submitJobDir

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档