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 ...
随机推荐
- 免费的 C/C++ 编译&解释 器列表
摘自<C++编程网>,详细介绍请参考http://www.cpp-prog.com/2009/0520/118.html MicrosoftVisual C++ 2008 Express ...
- Browser security standards via access control
A computing system is operable to contain a security module within an operating system. This securit ...
- WIN内核线程池函数
线程池 (本章节中样例都是用 VS2010 编译调试的) 线程池编写必须在 Windows Vista 操作系统(以及以上版本号的操作系统)下,且 C++ 编译器版本号至少是 VS2008 线程池的功 ...
- 一个2013届毕业生(踏上IT行业)的迷茫(5)
很快就到了该找工作的时间了,听说这一年是历史上找工作的人对多的一年,我也不知道是怎么统计的,可信不可信.跑了大概快一个月了,终于有offer了,就这样在这里实习了3个月,一直工作到现在. 回忆了整个学 ...
- Indexing Sensor Data
In particular embodiments, a method includes, from an indexer in a sensor network, accessing a set o ...
- 数学概念 —— 奇异性(Singularity,Vertical tangent)
0. 基本定义 Singularity (mathematics) 数学上的奇异性一般是指,函数在该点未定义(not defined,比如取值为无穷),或者不可微(fails to be well-b ...
- Modbus 通信协议详解
一.Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了 ...
- windown下linux子系统的安装和卸载
原文:windown下linux子系统的安装和卸载 安装 第一步 打开开发人员模式 第二步 勾选适用linux的window子系统 第三步 打开powershell 第四步 在PowerShe ...
- Linux内核源代码情景分析-fork()
父进程fork子进程: child = fork() fork经过系统调用.来到了sys_fork.具体过程请參考Linux内核源码情景分析-系统调用. asmlinkage int sys_fork ...
- MinGW —— Minimalist GNU for Windows、Cygwin —— Windows 下的类 unix 系统
0. 楔子 Windows 下显然是没有 gcc 编译器的.对于一些软件或者工具如果想要在 Windows 平台下运行,而又需要依赖 gcc 编译其中的一些基于 C/C++ 实现的代码. 此时就借助 ...