Hadoop map reduce 过程获取环境变量
System.out.println("MAP_INPUT_PATH:"+ MRJobConfig.MAP_INPUT_PATH);
System.out.println("MAP_INPUT_START:"+ MRJobConfig.MAP_INPUT_START);
System.err.println("JOB_NAME" + MRJobConfig.JOB_NAME);
System.out.println("[FINISHED GETTING PARAMETERS OF THIS JOB]");
}
? ??
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException
{
if (null == inputFile)
? ?context.write(new Text("key"), new Text("inputFile"));
else
context.write(new Text("key"), new Text(inputFile));
}
}
?
同时,在streaming任务中也有同样的需求,需要获取相关环境变量,查过别人的资料,如下:
{{
streaming框架通过设置环境变量的方式给mapper、reducer程序传递配置信息。常用的环境变量如下:
?
HADOOP_HOME
计算节点上配置的Hadoop路径
LD_LIBRARY_PATH
计算节点上加载库文件的路径列表
PWD
当前工作目录
dfs_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任务数
?
?
}}
?
自己测试了一下,不对,又是版本问题,查了http://hadoop.apache.org/mapreduce/docs/r0.21.0/streaming.html#How+do+I+get+the+JobConf+variables+in+a+streaming+job%27s+mapper%2Freducer%3F
解决如下:
?
?
NameTypeDescriptionmapreduce.job.idStringThe job idmapreduce.job.jarStringjob.jar location in job directorymapreduce.job.local.dirStringThe job specific shared scratch spacemapreduce.task.idStringThe task idmapreduce.task.attempt.idStringThe task attempt idmapreduce.task.ismapbooleanIs this a map taskmapreduce.task.partitionintThe id of the task within the jobmapreduce.map.input.fileStringThe filename that the map is reading frommapreduce.map.input.startlongThe offset of the start of the map input splitmapreduce.map.input.lengthlongThe number of bytes in the map input splitmapreduce.task.output.dirStringThe task's temporary output directory相关参数在streaming中“."用”_"代替即可。
?
?
例子:
#!/bin/sh
while read line
do
? echo "$line"
? echo $mapreduce_map_input_file
done
?
测试通过
申明:原文urlhttp://www.linuxidc.com/Linux/2012-07/66337.htm