Hadoop Streaming 实战: 传递环境变量

转载 2012年03月26日 13:39:04

环境变量可以理解程序运行的系统环境,用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 
       用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
 
#环境变量附着到输入数据并输出
while read line
do
echo "$TASK_ID $PDW $BLOCK_SIZE $line"
done
 
reducer.sh:
#!/bin/sh
 
while read line
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) 运行并观察输出 
$hadoop streaming
-input /app/test/test.txt /
-output /app/test/test_result /
-mapper ./mapper.sh -reducer ./reducer.sh /
-file mapper.sh -file reducer.sh /
-jobconf mapred.map.tasks=10 -jobconf mapred.reduce.tasks=1 /
-jobconf mapred.job.name="envi_test"
 
$hadoop fs -cat /app/test/test_result/part-00000
/home/disk5/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000000_0/work 268435456 1,2,1,1,1
/home/disk3/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000001_0/work 268435456 1,2,2,1,1
/home/disk9/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000002_0/work 268435456 1,3,1,1,1
/home/disk9/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000003_0/work 268435456 1,3,2,1,1
/home/disk10/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000004_0/work 268435456 1,3,3,1,1
/home/disk9/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000005_0/work 268435456 1,2,3,1,1
/home/disk4/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000006_0/work 268435456 1,3,1,1,1
/home/disk2/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000007_0/work 268435456 1,3,2,1,1
/home/disk3/mapred/taskTracker/jobcache/job_201104221932_88161/attempt_201104221932_88161_m_000008_0/work 268435456 1,3,3,1,1

相关文章推荐

Hadoop Streaming入门

说明:本文使用的Hadoop版本是2.6.0,示例语言用Python。 概述 Hadoop Streaming是Hadoop提供的一种编程工具,提供了一种非常灵活的编程接口, 允许用户使用...

Hadoop Streaming 获取mapreduce_map_input_file遇到的版本问题

1.Hadoop Streaming,可以在任务中获取hadoop设置的环境变量,   例如用awk写的map可以这样获取:filename = ENVIRON["mapreduce_map_inp...

Hadoop streaming mapreduce多文件输入使用方法

写Mapreduce程序时,常常会有同时处理多个输入文件的的需求,那么如何在map程序中方便的知道这一条record到底来自哪个文件呢?如果数据源是可控的,我们尚可以通过字段的个数等来判断,然而这不是...

Hadoop Streaming 实战: 传递环境变量

环境变量可以理解程序运行的系统环境,用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。        用JAVA实现的Map-Reduce程序可以通过Hadoop提供的编程接口...
  • yfkiss
  • yfkiss
  • 2011-05-16 09:28
  • 5158

Gradle 实战(1)—— 配置环境变量

背景:Gradle 是一款构建工具,继 Ant 、Maven 之后的现代构建工具,我会在接下来的博文中陆续介绍,我在工作中是如何使用 Gradle 的。下载 Gradle下面是 Gradle 的官方网...

实战 - Hive中使用变量(环境变量、命令行变量、Hive 配置属性)

在Hive命令行工具中,可以使用系统环境变量、Hive配置文件中定义的属性以及Hive命令行工具中定义的变量。通过 set 命令,可以访问变量和修改变量的值。不同的变量,存储在不同的命名空间中。通过命...

hadoop map reduce 过程获取环境变量

hadoop任务执行过程中,在每一个map节点或者reduce节点能获取一下环境变量,利用这些变量可以为特殊的需求服务,例如:获取当前map节点处理的数据文件的路径。 hadoop是java...
  • lmc_wy
  • lmc_wy
  • 2012-07-24 12:54
  • 3449

Hadoop学习<一>--hadoop安装和环境变量设置

Hadoop核心项目:HDFS(Hadoop Distributed File System分布式文件系统),MapReduce(并行计算框架) HDFS架构的主从结构:主节点,只有一个namenod...

通过execve在两个进程间传递环境变量

进程1:execve  进程2:hello execve.h 的代码如下: #include #include #include /* #include exec...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)