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框架学习(二)的更多相关文章
- Hadoop Streaming框架学习2
Hadoop Streaming框架学习(二) 1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop ...
- Hadoop Streaming框架学习(一)
Hadoop Streaming框架学习(一) Hadoop Streaming框架学习(一) 2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏, 编辑 1.Had ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Hadoop Streaming框架使用(二)
上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/te ...
- Hadoop Streaming框架使用(一)
Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...
- Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...
PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框... AndBase中AbActivity封 ...
- WebGL------osg框架学习二
今天我们继续来学习osg.js框架.上一篇我们介绍了DrawActor对象绘制操作类和Drawable可绘制对象类,我们大致知道了osg对Drawable可绘制对象的绘制流程管理.今天我们要继续介绍S ...
- Hibernate框架学习(二)——api详解
一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. //1.创建,调用空参构造(还没有读配置文件) Configuration conf=new Configur ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
随机推荐
- gdal以GA_Update方式打开jpg文件的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 gdal库是不支持以GA_Update方式打开jpg文件的,原因在于gdal_1_10_1\frmts\jpeg文件夹 ...
- 毕设一:python 爬取苏宁的商品评论
毕设需要大量的商品评论,网上找的数据比较旧了,自己动手 代理池用的proxypool,github:https://github.com/jhao104/proxy_pool ua:fake_user ...
- 使用RpcLite构建SOA/Web服务(Full .Net Framework)
使用RpcLite构建SOA/Web服务(Full .Net Framework) SOA框架系列 1. 使用RpcLite构建SOA/Web服务 2. 使用RpcLite构建SOA/Web服务(Fu ...
- java基本数据类型练习
package javafirst;//包名 public class JavaFirstDay { //基本数据类型的练习 public static void main(String[] args ...
- 复杂json解析(json里面嵌套json)
调用第三方接口,返回一堆json,我只想取得里面的某一个属性,但是返回的比较复杂,无法直接拿到属性,格式类似于这样: {"video":{"id":" ...
- 已解决!Fatal error compiling: 无效的标记(maven启动失败)
问题描述 Fatal error compiling: 无效的标记 maven启动错误..版本号不对 <plugin> <artifactId>maven-compiler-p ...
- Mobile Push Notification
In one embodiment, a method includes sending to a mobile client computing device a first notificatio ...
- 【干货】Chrome插件(扩展)开发全攻略(转)
写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...
- [STM32] IAP不能跳转到APP
用w5500做网页iap升级, 文件上传正确, 对比内部flash内容也正确, 就是不跳转. 查资料, 怀疑是中断的影响. 在跳转前关闭中断, 问题解决! // IAP程序使用了中断, 跳转前关闭 _ ...
- python 垃圾回收装置
转载: https://www.cnblogs.com/pinganzi/p/6646742.html 简要描述Python的垃圾回收机制(garbage collection). 答案 这里能说的很 ...