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实现,参考KeyBasedFiledPartitonerIntHashPartitioner

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的更多相关文章

  1. Hadoop Streaming框架学习(一)

    Hadoop Streaming框架学习(一) Hadoop Streaming框架学习(一) 2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏, 编辑 1.Had ...

  2. Hadoop Streaming框架学习(二)

    1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop/hadoop streaming args 其 ...

  3. Hadoop Streaming框架使用(一)

      Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...

  4. Hadoop Streaming框架使用(二)

    上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/te ...

  5. Hadoop Streaming详解

    一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...

  6. hadoop streaming怎么设置key

    充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...

  7. hadoop streaming 文档

    Hadoop Streaming框架使用(一) Streaming简介 Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植.因 ...

  8. Hadoop学习笔记—18.Sqoop框架学习

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  9. Hadoop 权威指南学习1 (主要框架)

    1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目. 技术栈如下: Core 一系列分布式文件系统和通用I/O的组件和接口(序列化.Java RPC和持久化数 ...

随机推荐

  1. CSS hack 如何区分所有IE浏览器和非IE浏览器

    网上方法很多,例如,测试后得出以下结论,多余的话不说了,直入主题: 1.所有的推理IE浏览器 正解:此写法仅仅被lE浏览器识别,非IE浏览器不识别. <!--[if IE]> <st ...

  2. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

  3. 多线程学习之一独木桥模式Single Threaded Execution Pattern

    Single Threaded Execution Pattern[独木桥模式] 一:single threaded execution pattern的参与者--->SharedResourc ...

  4. 多线程学习之BlockingQueue

    前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列 类,为我们快速搭建高质量的多线程程序带来极大的 ...

  5. java设计模式之七装饰器模式(Decorator)

    顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下: Source类是被装饰类,Decorator类是一个 ...

  6. CSS3可按进度变色的进度条

    原文:CSS3可按进度变色的进度条 今天是周末,看到一款利用CSS3实现的进度条应用,觉得非常棒,就将它分享给大家,并且将这款CSS3进度条的实现过程大致整理了一下,实现的关键是根据当前的进度需要能改 ...

  7. SQL点滴18—SqlServer中的merge操作,相当地风骚

    原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在tec ...

  8. 专业MySQL数据库管理专家SQL Manager for MySQL发布5.4版本

    SQL Manager for MySQL是一款针对MySQL数据库服务器系统的管理工具.深受数据库管理员的喜欢,其富有艺术感的图形用户界面,即使新手也可以不会为如何使用而感到困扰.近日EMSSoft ...

  9. Linux Shell脚本入门--Uniq命令

    uniq uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用.也就是说,为了使uniq起作用,所有的重复行必须是相邻的. uniq语法 [root@www ~]# uniq [ ...

  10. 通过SqlClr制作Sql自动化批量执行脚本

    原文:通过SqlClr制作Sql自动化批量执行脚本 通过SqlClr制作Sql自动化批量执行脚本 在与同事一起做项目时,看到同事用sqlclr做批量执行脚本,感觉挺新奇的就上网搜集资料自己模仿跟做了个 ...