Hadoop Streaming 实战: 传递环境变量
2014-06-06 16:07
423 查看
环境变量可以理解程序运行的系统环境,用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
用JAVA实现的Map-Reduce程序可以通过Hadoop提供的编程接口访问作业的配置信息,而streaming程序不能使用JAVA编程接口,因此,streaming框架通过设置环境变量的方式给mapper、reducer程序传递配置信息。常用的环境变量如下:
示例:
1).编写map程序mapper.sh;reduce程序reducer.sh;测试数据test.txt
2)运行并观察输出
用JAVA实现的Map-Reduce程序可以通过Hadoop提供的编程接口访问作业的配置信息,而streaming程序不能使用JAVA编程接口,因此,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任务数 |
1).编写map程序mapper.sh;reduce程序reducer.sh;测试数据test.txt
mapper.sh:
#以下为环境变量
TASK_ID=$mapred_task_id
PDW=$PWD
BLOCK_SIZE=$dfs_block_size
#环境变量附着到输入数据并输出
whilereadline
do
echo"$TASK_ID$PDW$BLOCK_SIZE$line"
done
reducer.sh:
#!/bin/sh
whilereadline
do
echo$line
done
test.txt:
1,2,1,1,1
1,2,2,1,1
1,3,1,1,1
1,3,2,1,1
1,3,3,1,1
1,2,3,1,1
1,3,1,1,1
1,3,2,1,1
1,3,3,1,1
2)运行并观察输出
$hadoopstreaming
-input/app/test/test.txt/
-output/app/test/test_result/
-mapper./mapper.sh-reducer./reducer.sh/
-filemapper.sh-filereducer.sh/
-jobconfmapred.map.tasks=10-jobconfmapred.reduce.tasks=1/
-jobconfmapred.job.name="envi_test"
$hadoopfs-cat/app/test/test_result/part-00000
/home/disk5/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000000_0/work2684354561,2,1,1,1
/home/disk3/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000001_0/work2684354561,2,2,1,1
相关文章推荐
- Hadoop Streaming 实战: 传递环境变量
- Hadoop Streaming 实战: 传递环境变量
- Hadoop 实战之Streaming(三)
- Hadoop 实战之Streaming(二)
- Hadoop 实战之Streaming(七)
- Hadoop Streaming 实战: 多路输出
- Hadoop 实战之Streaming(十一)
- Hadoop/HBase/Hive安装设置环境变量
- Hadoop 实战之Streaming(八)
- Hadoop 实战之Streaming(九)
- 我的python学习之路----传递命令行参数给脚本及获取环境变量
- Hadoop Streaming 实战: 输出文件分割
- 通过环境变量传递参数给进程
- Hadoop 实战之Streaming(一)
- Hadoop Streaming 实战: 多路输出
- Hadoop Streaming 实战: bash脚本
- Hadoop Streaming 实战: grep
- Hadoop Streaming 实战: 文件分发与打包
- Hadoop 实战之Streaming(五)
- Hadoop 实战之Streaming(四)