壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 986|回复: 0

[其他数据库知识] hadoop-Streaming学习

[复制链接]
发表于 2013/3/22 10:58:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x

1.概述

Hadoop Streaming是 Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或脚本文件作为Mapper和 Reducer,例如:

       $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \

       -input /user/test/input \

       -output /user/test/output \

       -mapper “myMapper.sh” \

       -reducer “myReducer.sh”

               -input等都为该命令的参数。


2. 原理

mapper 和 reducer 会从标准输入中读取用户数据,一行一行处理后发送给标准输出。 Streaming 工具会创建MapReduce 作业,发送给各个 tasktracker ,同时监控整个作业的执行过程。

如果一个可执行文件或者脚本作为 mapper , mapper 初始化时,每一个 mapper 任务会把该文件作为一个单独进程启动, mapper 任 务运行时,它把输入切分成行并把每一行提供给可执行文件进程的标准输入。 同时,mapper 收集可执行文件进程标准输出的内容,并把收到的每一行内容转化成 key/value 对,作为 mapper 的输出。 默认情况下,一行中第一个 tab 之前的部分作为 key ,之后的(不包括 tab )作为 value 。 如果没有 tab ,整行作为 key 值, value 值为 null 。

对于 reducer,类似。

3.Streaming 命令说明

3.1Streaming 命令

使用下面的命令运行 Streaming MapReduce程序:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-stream.jar [args]

其中 args是 streaming参数,下面是参数列表

-input <path>        :map输入数据的 hdfs路径; path可以是文件或者目录,可以使用 *通配符, -input选项可以使用多次指定多个文件或目录作为输入。

-output <path> :reduce输出结果的 hdfs路径; path必须不存在,而且执行作业的用户必须有创建该目录的权限, -output只能使用一次。

-mapper <filename> : mapper可执行文件或脚本;必须指定且唯一。

-reducer <filename> : reducer 可执行文件或脚本;必须指定且唯一。

-file <file> : 分发本地文件,先上传到 hdfs,然后再分发 到各个节点;

-cacheFIle <file>: 将 hdfs上的文件分发到各个节点;

-cachArchive <file> : 将 hdfs上的压缩文件分发到各个节点;

-numReduceTasks <num> : 系统中 reduce任务个数; 如果设置 -numReduceTasks 0或者 -reducer NONE则没有 reducer程序, mapper的输出直接作为整个 job的输出。

-D name=value : 配置系统参数;

1) mapred.map.tasks: map task数目

2) mapred.reduce.tasks: reduce task数目

3) stream.map.input.field.separator/stream.map.output.field.separator: map task输入 /输出数据的分隔符,默认均为 \t。

4)stream.num.map.output.key.fields:指定 map task输出记录中 key所占的域数目

5)stream.reduce.input.field.separator/stream.reduce.output.field.separator: reduce task输入 /输出数据的分隔符,默认均为 \t。

6) stream.num.reduce.output.key.fields:指定 reduce task输出记录中 key所占的域数目 -combiner<javaClass> : Combiner java类;对应的 Java类文件打包成 jar文件后用 -file分发。

-partitioner <javaClass> : Partitioner java类;

-inputformat <java class> : InputFormat java 类;用于读取输入数据,要实现 InputFormat接口。如果不指定,默认使用 TextInputFormat。

         -outputformat <javaClass> : OutputFormat java 类;用于写入输出数据,要实现 OutputFormat接口。如果不指定,默认使用 TextOutputFormat。

         -cmdenv NAME=VALUE:给 mapper和 reducer程序传递额外的环境变量, NAME是变量名, VALUE是变量值。

         -verbose :指定输出详细信息,例如分发哪些文件,实际作业配置参数值等,可以用于调试




您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 02:25 , Processed in 0.018108 second(s), 18 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表