Hadoop运行一个MapReduce Job后,JobTracker和TaskTracker都需要创建/维护一系列的文件以便运行/管理/监控job。其中,有部分job files存储在HDFS从而可以分发到各个TT,有部分存储在JT和TT本地。
JobTracker Files
下表总结了几种主要的job file:
FS | Location Property | Child Directory | Directory File List | File Type |
HDFS | mapreduce.jobtracker.staging.root.dir | <userId>/.staging/<jobId> | job.xml job.jar job.split job.splitmetainfo | Temporary |
HDFS | mapred.system.dir | <jobId> | jobToken | Temporary |
Local | mapred.local.dir | jobTracker | <jobId>.xml | Temporary |
Local | hadoop.job.history.location | . | <jobId>_<timestamp>_<userId>_<jobName> <jobId>_conf.xml | Persistent |
其中有两点解释一下:
- Staging directory: 用户提交Job时,客户端需要将Job相关的文件拷贝到HDFS以便JobTracker随后引用。这在另一篇文章《MapReduce Job Submission Files》中讨论过
- History directory: 用户之所以可以通过UI来监测Job运行以及历史信息,是因为JobTracker实现了一个HistoryServer,并将Job运行的历史信息记录到Local FS。最主要的是记录历史运行状态的文件,记录了包括提交/完成时间,每个Task Attemp的启动时间,运行状态,Counter等。
Cloudera Blog上有一篇总结Job Files的文章http://blog.cloudera.com/blog/2010/11/hadoop-log-location-and-retention/
TaskTracker Files
真正执行Task的TaskTracker在Local FileSystem也需要维护一系列的job files,下面这篇文章的"Directory Structure"部分有详细总结: