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. jquery 重复事件

    采用jquery时刻.其他活动均达到. 相反1对1的. 例如:onclick="$(document).keypress(function (key) {  if (key.keyCode ...

  2. 【Unity 3D】学习笔记三十八:角色控制器

    角色控制器 在unity中,已经帮我们实现的上下左右跳等动作,并将他们封装成了角色控制器.角色控制器保存在unity标准资源包中,能够说是很的强大.能够模拟第一或者第三人称视角.不受刚体的限制,很适用 ...

  3. js拾遗:appendChild 添加移动节点

    原文:js拾遗:appendChild 添加移动节点 写js一年多了,一直以为自己很牛逼,开始写各种博文分享,昨天写了一篇<浅谈 IE下innerHTML导致的问题>在看了下面的评论,我才 ...

  4. HDU 4006 The kth great number AVL解

    提供动态更新数据.第实时QK大量的值什么? 使用AVL统计数据结构做,比较先进的数据结构的内容. 不知道给出的数据为准值是否有反复.下面的程序是因为我能够处理重复数据出现的情况下,. 了repeat的 ...

  5. .NET开源项目 TOP 25

    .NET开源项目 TOP 25 如果知道.NET项目在开源中国的git上所占的比重只有5%的话,为什么这个<2014年国人开发的最热门的开源软件TOP 100>榜中.NET项目那么少就是情 ...

  6. C语言连接Oracle

    原文:C语言连接Oracle 最近在搞C语言连接Oracle.DB2数据库,现把C连接Oracle的文章总结下: 用C语言连接ORACLE数据库.有两个思路和目的 思路一)本地环境:UBUNTU 7. ...

  7. OCP-1Z0-051-题目解析-第5题

    5. Which SQL statements would display the value 1890.55 as $1,890.55? (Choose three .) A. SELECT TO_ ...

  8. JSON解析之Json-lib

    1.Json-lib介绍 Json-lib是一个java类库,它用于把beans, maps, collections, java arrays and XML 传递给一个Json,或者返回来把Jso ...

  9. 老调重弹--面向对象设计原则--GRASP设计原则

    GRASP概述 GRASP,全称General Responsibility Assignment Software Patterns,译为”通用职责分配软件原则“,包含以下原则和模式 控制器(Con ...

  10. Mysql高级之权限检查原理

    原文:Mysql高级之权限检查原理 用户进行数据库操作分为两步: 1 是否有权限连接,根据host,name,password: 2 是否有权限进行CURD: 图示解说: 关于用户权限在哪里进行存放? ...