Hadoop map reduce 过程获取环境变量
来源:互联网 发布:马刺队球员数据 编辑:程序博客网 时间:2024/06/13 12:34
Hadoop map reduce 过程获取环境变量
Hadoop任务执行过程中,在每一个map节点或者reduce节点能获取一下环境变量,利用这些变量可以为特殊的需求服务,例如:获取当前map节点处理的数据文件的路径。
hadoop是java实现的,利用java可以很方便的获取相关环境变量,其内部包含在Context和MRJobConfig中(hadoop版本不一样,可能会有区别,我的hadoop是0.21)。
举例:
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.MRJobConfig;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
public class MergeDaysMapper extends Mapper<LongWritable, Text, Text, Text> {
private String inputFile = null;
public void setup(Context context)
{
System.err.println("[STARTS TO GET PARAMETERS OF THIS JOB]");
Path input = ((FileSplit)context.getInputSplit()).getPath();
inputFile = input.toString();
System.err.println("Input: "+ input.toString());
System.out.println("Input: "+ input.getName());
System.out.println("MAP_INPUT_FILE: " + MRJobConfig.MAP_INPUT_FILE);
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
解决如下:
例子:
#!/bin/sh
while read line
do
echo "$line"
echo $mapreduce_map_input_file
done
测试通过
- hadoop map reduce 过程获取环境变量
- Hadoop map reduce 过程获取环境变量
- hadoop map-reduce数据过程
- Hadoop-map reduce处理过程
- Hadoop源码之Map/Reduce应用过程
- 实例讲解Hadoop Map-Reduce过程
- hadoop map-reduce倒排索引过程
- [置顶] Hadoop Map-Reduce的过程解析
- Hadoop MapReduce执行过程中map和reduce执行过程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- Hadoop Map/Reduce教程
- hadoop map/reduce setup
- Hadoop Map/Reduce教程
- ImageSwitcher结合Gallery展示SD卡中的资源图片
- ubuntu创建、删除文件及文件夹,强制清空回收站方法
- Sqoop安装过程详解
- 4.11 Moving Cells and Sections in Table Views
- 进程与线程的区别和联系
- Hadoop map reduce 过程获取环境变量
- 【摘】Session详解
- GNU C内嵌汇编(x86)演示
- IOCP工作原理
- Linux下select, poll和epoll IO模型的详解
- Android获取经纬度的方法
- c语言,迷宫最短路径
- web常见攻击二——命令注入攻击(Command Injection Execution)
- iPhone iTunesMobileDevice C++ 接口描述