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和持久化数 ...
随机推荐
- PHP_零基础学php_2变量、预定义变量、预定义常量、表达式、运算符、程序控制流程
1.变量 PHP中使用$后跟变量名表示一个变量,变量名区分大小写. 变量的数据类型 整数类型 浮点类型 字符串类型 布尔类型 数组类型 对象 <html> <head> < ...
- AngularJS之使用控制器封装业务逻辑
AngularJS之使用控制器封装业务逻辑 控制器的作用 我们知道,在AngularJS中,实现数据绑定的核心是scope对象.那么控制器又有什么用呢? 简单地说,没有控制器/controller,我 ...
- PHP 做 RSA 签名 生成订单(支付宝例子)
/组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16 ...
- jQuery 表格
jQuery 表格插件汇总 本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向和竖向排序,设置固定表头,对表格进行搜索,对大表格进行分 ...
- MySQL的C语言编程(一)
原文:MySQL的C语言编程(一) 初学MySQL,记录一下MySQL用c语言编程时遇到的问题. 这是我的源程序: int main(void) { MYSQL *mysql=NULL; if((my ...
- Visual Studio 单元测试之五---数据库测试
原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visu ...
- 一个可以直接使用的MsgBox基于form居中API
可直接复制DialogBox项目(文件夹)到需要的项目中然后直接引用和using CodeProject.Dialog 已修正原作者代码错误的地方,可直接使用,VS2010测试成功 具体可以参考案例T ...
- leetcode第16题--3Sum Closest
Problem:Given an array S of n integers, find three integers in S such that the sum is closest to a g ...
- 探秘ReSharper8.1版本中Architecture(架构工具)的改进
在ReSharper 8.0新版本中,有一个叫做Architecture(结构工具)的新功能,此功能被定义为项目依赖关系分析.其目的是让用户可视化操作解决方案的结构.接下来,小编将在ReSharper ...
- uml系列(四)——类图
类图是uml的核心.学习类图,总共须要掌握三个部分:类:类之间的关系:类图怎么画. 首先,类.老规矩,先来张图. 类是什么:举个简单的样例:猫.狗.猪三个都是动物.这里面的"动物" ...