欢迎来到天天文库
浏览记录
ID:41112409
大小:331.00 KB
页数:12页
时间:2019-08-16
《Hadoop0200源码流程分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Hadoop源码以及流程解析整体结构DN:Configuration,JobClient,JobConfMaster:JobTracker,JobInProgress,TaskInProgressWN:TaskTracker,Task(MapTask、ReduceTask),JvmManager,Child图1整体结构ClientConfiguration从Configuration类的源代码可以看到,定义了如下私有成员变量:privatebooleanquietmode=true;//第一个是boolean型变量quietmode,用于设置加载配置的模式。通过阅读源代码就可以清
2、楚,这个quietmode如果为true,实际上默认就为true,加载配置的模式为快速模式,其实也就是在解析配置文件的过程中,不输出日志信息,就这么简单。privateArrayListdefaultResources=newArrayList();//它是一个列表,该列表中存放的是配置文件的名称privateArrayListresources=newArrayList();//全部资源的配置包括URL、String、Path、InputStreamprivateSetfinalParameters=newHashSet3、ng>();//程序性的privatebooleanloadDefaults=true;//是否载入默认资源privatestaticfinalWeakHashMapREGISTRY=newWeakHashMap();//privatePropertiesproperties;//个人程序所需要的所有配置会以Properties的形式存储privatePropertiesoverlay;//它也是一个Properties变量。它对应于finalResources列表,也就是解析finalRes4、ources列表中设置的配置文件,配置项设置到overlay中。这里,overlay比较关键的一点就是,如果overlay不为空属性配置,在创建一个Configuration实例的时候会检查overlay,不空就将其中的配置项加入到properties中privateClassLoaderclassLoader;//类加载器在这里所有客户端程序中配置的类的信息和其他运行信息,都会保存在这个类里。JobClientJobClient.runJob(job)静态方法会实例化一个JobClient实例,然后用此实例的submitJob(job)方法向master提交作业。此方法会返回一5、个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,R6、educer等实现。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();调用job7、Client.submitJobInternal(conf);在这个函数中利用jobId建立提交根路径,jar文件路径,job分割文件的路径,job.xml路径。代码如下:JobIDjobId=jobSubmitClient.getNewJobId();//生成jobIdrpcPathsubmitJobDir=newPath(getSystemDir(),jobId.toString());//用jobId来建立job任务的提交根路径PathsubmitJobFile=newPa
3、ng>();//程序性的privatebooleanloadDefaults=true;//是否载入默认资源privatestaticfinalWeakHashMapREGISTRY=newWeakHashMap();//privatePropertiesproperties;//个人程序所需要的所有配置会以Properties的形式存储privatePropertiesoverlay;//它也是一个Properties变量。它对应于finalResources列表,也就是解析finalRes
4、ources列表中设置的配置文件,配置项设置到overlay中。这里,overlay比较关键的一点就是,如果overlay不为空属性配置,在创建一个Configuration实例的时候会检查overlay,不空就将其中的配置项加入到properties中privateClassLoaderclassLoader;//类加载器在这里所有客户端程序中配置的类的信息和其他运行信息,都会保存在这个类里。JobClientJobClient.runJob(job)静态方法会实例化一个JobClient实例,然后用此实例的submitJob(job)方法向master提交作业。此方法会返回一
5、个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,R
6、educer等实现。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();调用job
7、Client.submitJobInternal(conf);在这个函数中利用jobId建立提交根路径,jar文件路径,job分割文件的路径,job.xml路径。代码如下:JobIDjobId=jobSubmitClient.getNewJobId();//生成jobIdrpcPathsubmitJobDir=newPath(getSystemDir(),jobId.toString());//用jobId来建立job任务的提交根路径PathsubmitJobFile=newPa
此文档下载收益归作者所有