Hadoop Streaming框架学习2
Hadoop Streaming框架学习(二)
1.常用Streaming命令介绍
使用下面的命令运行Streaming MapReduce程序:
1: $HADOOP_HOME/bin/hadoop/hadoop streaming args
其中args是streaming参数,下面是参数列表:
|
-input <path> |
输入数据路径 |
|
-output <path> |
输出数据路径 |
|
-mapper <cmd|JavaClassName> |
mapper可执行程序或Java类 |
|
-reducer <cmd|JavaClassName> |
reducer可执行程序或Java类 |
|
-file <file> Optional |
分发本地文件 |
|
-cacheFile <file>Optional |
分发HDFS文件 |
|
-cacheArchive <file>Optional |
分发HDFS压缩文件 |
|
-numReduceTasks<num> Optional |
reduce任务个数 |
|
-jobconf | -D NAME=VALUE Optional |
作业配置参数 |
|
-combiner<JavaClassName>Optional |
Combiner Java类 |
|
-partitioner<JavaClassName>Optional |
Partitioner Java类 |
|
-inputformat<JavaClassName>Optional |
InputFormat Java类 |
|
-outputformat<JavaClassName>Optional |
OutputFormat Java类 |
|
-inputreader <spec>Optional |
InputReader配置 |
|
-cmdenv <n>=<v>Optional |
传给mapper和reducer的环境变量 |
|
-mapdebug <path>Optional |
mapper失败时运行的debug程序 |
|
-reducedebug <path>Optional |
reducer失败时运行的debug程序 |
|
-verbose Optional |
详细输出模式 |
2.命令参数详解
下面是对各个参数的详细说明:
l -input <path>:指定作业输入,path可以是文件或者目录,可以使用*通配符,-input选项可以使用多次指定多个文件或目录作为输入。
l -output <path>:指定作业输出目录,path必须不存在,而且执行作业的用户必须有创建该目录的权限,-output只能使用一次。
l -mapper:指定mapper可执行程序或Java类,必须指定且唯一。
l -reducer:指定reducer可执行程序或Java类,必须指定且唯一。
l -file, -cacheFile, -cacheArchive:分别用于向计算节点分发本地文件、HDFS文件和HDFS压缩文件,具体使用方法参考文件分发与打包。
l -numReduceTasks:指定reducer的个数,如果设置-numReduceTasks 0或者-reducer NONE则没有reducer程序,mapper的输出直接作为整个作业的输出。
l -jobconf | -D NAME=VALUE:指定作业参数,NAME是参数名,VALUE是参数值,可以指定的参数参考hadoop-default.xml。特别建议用-jobconf mapred.job.name='My Job Name'设置作业名,使用-jobconf mapred.job.priority=VERY_HIGH | HIGH | NORMAL | LOW | VERY_LOW设置作业优先级,使用-jobconf mapred.job.map.capacity=M设置同时最多运行M个map任务,使用-jobconf mapred.job.reduce.capacity=N设置同时最多运行N个reduce任务。常见的作业配置参数如下表所示:
|
mapred.job.name |
作业名 |
|
mapred.job.priority |
作业优先级 |
|
mapred.job.map.capacity |
最多同时运行map任务数 |
|
mapred.job.reduce.capacity |
最多同时运行reduce任务数 |
|
hadoop.job.ugi |
作业执行权限 |
|
mapred.map.tasks |
map任务个数 |
|
mapred.reduce.tasks |
reduce任务个数 |
|
mapred.job.groups |
作业可运行的计算节点分组 |
|
mapred.task.timeout |
任务没有响应(输入输出)的最大时间 |
|
mapred.compress.map.output |
map的输出是否压缩 |
|
mapred.map.output.compression.codec |
map的输出压缩方式 |
|
mapred.output.compress |
reduce的输出是否压缩 |
|
mapred.output.compression.codec |
reduce的输出压缩方式 |
|
stream.map.output.field.separator |
map输出分隔符 |
l -combiner:指定combiner Java类,对应的Java类文件打包成jar文件后用-file分发。
l -partitioner:指定partitioner Java类,Streaming提供了一些实用的partitioner实现,参考KeyBasedFiledPartitoner和IntHashPartitioner。
l -inputformat, -outputformat:指定inputformat和outputformat Java类,用于读取输入数据和写入输出数据,分别要实现InputFormat和OutputFormat接口。如果不指定,默认使用TextInputFormat和TextOutputFormat。
l -cmdenv NAME=VALUE:给mapper和reducer程序传递额外的环境变量,NAME是变量名,VALUE是变量值。
l -mapdebug, -reducedebug:分别指定mapper和reducer程序失败时运行的debug程序。
l -verbose:指定输出详细信息,例如分发哪些文件,实际作业配置参数值等,可以用于调试。
3.Streaming使用示例
1: # 删除原目录 由于streaming必须确保输出路径不存在
2: $hadoop fs -rmr "$outpath"
3:
4: # 执行统计
5: $hadoop streaming \
6: -input "$inpath" \ # 文件输入路径
7: -output "$outpath" \ # 结果输出路径
8: -mapper "$map" \ # map阶段所用脚步
9: -reducer "$reduce" \ # reduce阶段所用脚本
10: -file "$map" \ # 将客户端本地分拣分发到计算节点
11: -file "$reduce" \
12: -jobconf mapred.job.name="test_task" \ # 任务名称
13: -jobconf stream.num.map.output.key.fields=1 \
14: -jobconf mapred.job.priority=HIGH \ # 作业优先级
15: -jobconf mapred.job.map.capacity=100 \ # 同时运行的map数
16: -jobconf mapred.job.reduce.capacity=10 \ # 同时运行的reduce数
17: -jobconf mapred.map.tasks=2000 \ # map的个数
18: -jobconf mapred.reduce.tasks=10 # reduce的格式
19:
20: exit $?
Hadoop Streaming框架学习2的更多相关文章
- Hadoop Streaming框架学习(一)
Hadoop Streaming框架学习(一) Hadoop Streaming框架学习(一) 2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏, 编辑 1.Had ...
- Hadoop Streaming框架学习(二)
1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop/hadoop streaming args 其 ...
- Hadoop Streaming框架使用(一)
Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...
- Hadoop Streaming框架使用(二)
上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/te ...
- Hadoop Streaming详解
一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...
- hadoop streaming怎么设置key
充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...
- hadoop streaming 文档
Hadoop Streaming框架使用(一) Streaming简介 Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植.因 ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- Hadoop 权威指南学习1 (主要框架)
1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目. 技术栈如下: Core 一系列分布式文件系统和通用I/O的组件和接口(序列化.Java RPC和持久化数 ...
随机推荐
- linux_Ubuntu 12.04 安装jdk
1.下载jdk6jdk6下载地址为:http://download.java.net/jdk6/,根据操作系统的选择对应的安装包,我的是ubuntu 12.04 32bit的,所以下载的文件是jdk- ...
- C和指针 (pointers on C)——第一章:高速启动
大多数人并不认为有几类人猿学校计划非常赞同C学习好,然后看多本书. 仅仅作为读书笔记写.有时还包括一些题目和答案. 这样的公开栏,这两种玉引砖敲,对于自勉,鼓励王! 第一章:手 我每次都是复习的来写. ...
- jQuery插件编写及链式编程模型
jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...
- 去除a标签链接触摸时产生边框
排除误解 网络资料说这个属性只用于iOS(iPhone和iPad),其实是错误的,android手机大部分也是支持的,只是显示效果不一样,移动开发并不成熟,更多的还需要大家去实践来辨别真伪- - -w ...
- Codeforces Round #FF 446A DZY Loves Sequences
预处理出每一个数字能够向后延伸多少,然后尝试将两段拼起来. C. DZY Loves Sequences time limit per test 1 second memory limit per t ...
- Node.js日志框架选型比較:Winston
日志对于问题定位.调试,系统性能调优至关重要,尤其是系统复杂以及在线执行的情况下. 好的开发框架都会有一个可开启关闭/可配置记录级别的日志系统.我们从下面几个方面来做选型: 1. 每行日志都须要有准确 ...
- Mvc 下载文件
你如何将文件传送给用户取决于你最开始如何存储它,如果你将文件存入数据库,你会用流的方式将文件返还给用户,如果你将文件存在硬盘中,你只需要提供一个超链接即可,或者也可以以流的方式.每当你需要以流的方式将 ...
- 使用UDL文件来测试SQL Server数据库连接
原文 来自http://www.2cto.com/database/201308/234427.html 使用UDL测试SQL Server连接问题 做数据库经常会遇到SQL Server连接的问 ...
- lucene简介 创建索引和搜索初步
lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...
- JSFIDDLE 动力 Threejs
功能探秘
JSFIDDLE 助力 WebGL 功能探秘 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协 ...