`

hadoop 源码分析(一) jobClient 提交到JobTracker

阅读更多

  

   Hadoop 用了2年多了.从最初一起创业的11人20台服务器集群到后来独立搭建基于hadoop nutch的搜索引擎并商用化 到现在也2年了.这两年来应用了很多新技术也经历了很多,从数据仓库的Hive pig 到mapreduce的编码去解决算法或是etl的问题 等等都离不开hadoop.觉得用了2年多也到了该总结的时候了.故此想重新翻译hadoop 源码,按照不同的类方法的不同作用.也希望读到这篇博客的人和我一起 经历这一段岁月,一起讲hadoop的核心结合实用主义 传递给中国的开源软件使用者。

 

 下图为 jobClient 提交到 Mapreduce 作业到JobTracker 核心逻辑。

 



 

 1.JobProfile类:

 job的描述性元语,相当于bean的功能.其中包括:
  user job的提交者
  jobid 唯一的标志一个job的ID  ->JobID 类生成:
      --jobid 包括两部分.第一部分代表jobTracker 标志,第二部分代表时间.如果是本地job(local Job) 则为local,最后为 job数量,代表是第   几个job
  jobFile job运行时文件
  url  定位该条job的描述性信息url
  name  job的名字
  queueName  job 队列名称,
 
2.JobStatus 类:
   -- job的几种状态
  running
  successed
  failed
    prep
  killed
3.copyAndConfigureFiles() 方法:
 1.JobSubmissionFiles  工具类 负责管理 job 相关文件:
   conf 路径
   jar 包路径
   分布式缓存(distributed cache files(archives,libjars,)) 路径
 拷贝job执行文件到 job执行目录 
4.writeNewSplits()
 mapred.max.split.size 设置最小输入分片
  mapred.max.split.size  最大分片的大小
 计算输入分片
 FileInputFormat  ->getSplits()->computeSplitSize()方法 
分片计算法:
 1.首先 获取文件的长度 length
 2.获取blocksize
 3. 获取最 大分片大小 getMaxSplitSize
 4.取 maxsize 和 block 中 的较小者 A
 5. 取 最新分片和 A 中的最大者 作为分片大小
 6.如果文件长度 length/分片大小 >1.1 则调用FileSplit 分片
FileInputFormat 类:
setInputPaths((Job job,  Path... inputPaths) 可添加多个输入路径
 


 

  • 大小: 106.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics