环境变量名 | 意义解释 |
---|---|
HADOOP_HOME | 计算节点上配置的hadoop client路径 |
LD_LIBRARY_PATH | 计算节点上加载库文件的路径列表 |
PWD | 当前工作目录 |
df_block_size | 当前设置的HDFS文件块大小 |
map_input_file | mapper正在处理得输入文件路径,包含文件名 |
mapred_job_id | 当前作业ID |
mapred_job_name | 当前作业名称 |
mapred_tip_id | 当前任务的第几次重试 |
mapred_task_id | 任务ID |
mapred_task_is_map | 当前任务是否为map |
mapred_output_dir | 计算输出路径 |
mapred_map_tasks | 计算的map任务数 |
mapred_reduce_tasks | 计算的reduce的任务数 |
mapred_work_output_dir | task临时输出目录 |
mapred_output_dir | job输出路径 |
- mapred_work_output_dir解释
为了避免冲突,Map/Reduce框架为每次尝试执行任务都建立和维护一个特殊的
${mapred.output.dir}/temporary/${taskid}子目录,这个目录位于本次尝试执行任务输出结果所在的FileSystem上,可以通过 ${mapred.work.output.dir}来访问这个子目录。 对于成功完成的任务尝试,只有${mapred.output.dir}/temporary/${taskid}下的文件会移动到${mapred.output.dir}。当然,框架会丢弃那些失败的任务尝试的子目录。这种处理过程对于应用程序来说是完全透明的。
在任务执行期间,应用程序在写文件时可以利用这个特性,比如 通过 FileOutputFormat.getWorkOutputPath()获得${mapred.work.output.dir}目录, 并在其下创建任意任务执行时所需的side-file,框架在任务尝试成功时会马上移动这些文件,因此不需要在程序内为每次任务尝试选取一个独一无二的名字。
注意:在每次任务尝试执行期间,${mapred.work.output.dir} 的值实际上是 ${mapred.output.dir}/temporary/{$taskid},这个值是Map/Reduce框架创建的。 所以使用这个特性的方法是,在 FileOutputFormat.getWorkOutputPath() 路径下创建side-file即可。