hadoop-Streaming学习
来源:互联网 发布:python 2048图形界面 编辑:程序博客网 时间:2024/06/03 03:21
原帖地址:http://cp1985chenpeng.iteye.com/blog/1312976
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:指定输出详细信息,例如分发哪些文件,实际作业配置参数值等,可以用于调试
- Hadoop的Streaming学习
- hadoop-Streaming学习
- Hadoop&&Streaming框架学习
- Hadoop Streaming框架学习
- hadoop streaming 学习笔记
- hadoop学习;Streaming,aggregate;combiner
- hadoop的streaming学习小结
- 【hadoop】Hadoop学习笔记(四):Hadoop中的streaming
- hadoop的Streaming学习(续)
- Hadoop-2.4.1学习之Streaming编程
- Hadoop Streaming框架学习(一)
- Hadoop Streaming框架学习(二)
- Hadoop Streaming
- Hadoop Streaming
- Hadoop Streaming
- Hadoop Streaming
- hadoop streaming
- Hadoop Streaming
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- android 读取MCC MNC讲解
- SSLHandshakeException: *.ValidatorException: PKIX path building failed: *.SunCertPathBuilderExceptio
- JavaScript中showModalDialog (模态窗口)详细使用
- Velocity模板学习
- hadoop-Streaming学习
- yii2 redis 使用 unixSocket
- plsql连接
- nodejs 命令行参数辅助
- cocos2d-x3.2 在Windows下打包Android平台APK
- JDBC_通过JDBC获得的元数据
- 使用python2时会遇到一系列显示中文字符的问题
- oc知识总结三 NSDictionary、NSMutableDictionary
- 来自西弗吉利亚大学li xin整理的CV代码合集