一.shell脚本中的相关配置

 HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar" INPUT_FILE_PATH="/input.txt"
OUTPUT_PATH="/output" $HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH $HADOOP_CMD jar $STREAM_JAR_PATH
    -input $INPUT_FILE_PATH \
    -output $OUTPUT_PATH \
    -mapper "python map.py" \
    -reducer "python red.py" \
    -file map.py \
    -file red.py \
    -jobfonf mapred.job.name="xxx"

-input : 指定作业的输入文件的HDFS路径, 支持使用*通配符, 支持指定多个文件或目录, 可多次使用

-output : 指定作业的输出文件的HDFS路径, 输出目录不能存在, 执行作业的用户必须有创建该目录的权限, 只能使用一次

-mapper : 自己写的map程序

-reducer : 自己写的reduce程序

-file : 分发文件到计算节点中, 包括map和reduce的执行文件, 以及map和reduce要用的输入文件, 如配置文件. 类似的配置还有-cacheFile,-cacheArchive分别用于向计算节点分发HDFS文件和HDFS压缩文件.(注意: 当输入文件比较大的时候需要先放到HDFS中, 不能用-file分发方式)

-jobconf : 提交作业的一些配置属性.

  常见配置:

  (1)mapred.map.tasks : map task数目

  (2)mapred.reduce.tasks : reduce task数目

  (3)stream.num.map.output.key.fileds : 指定map task输出记录中key所占的域数目(也就是用几个字段做为key)

  (4)num.key.fields.for.partition : 指定对key分出来的前几个部分做partition而不是整个key, 以下三个配置通常是搭配使用.

  其它配置:

  mapred.job.name                        作业名

  mapred.job.priority                   作业优先级

  mapred.job.map.capacity           最多同时运行map任务数

  mapred.job.reduce.capacity          最多同时运行reduce任务数

  mapred.task.timeout                     任务没有响应(输入输出)的最大时间

  mapred.compress.map.output           map的输出是否压缩

  mapred.map.output.compression.codec      map的输出压缩方式

  mapred.out.compress                                  reduce的输出是否压缩

  mapred.output.compression.codec            reduce的输出压缩方式

  stream.map.output.field.separator        map输出分隔符

 二.关于文件分发与打包

(1)如果文件(如字典文件)存放在HDFS中, 希望计算时在每个计算节点上将文件当做本地文件处理, 可以使用以下配置在计算节点缓存文件, Streaming程序通过./linkname访问文件.

-cacheFile "hdfs://host:port/path/to/file#linkname"          #此处linkname相当于别名

举个栗子:

 HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar" INPUT_FILE_PATH="/The_Man_of_Property.txt"
OUTPUT_PATH="/output_cachefile_broadcast" #$HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH # Step 1.
$HADOOP_CMD jar $STREAM_JAR_PATH \
-input $INPUT_FILE_PATH \
-output $OUTPUT_PATH \
-mapper "python map.py mapper_func WH" \
-reducer "python red.py reduer_func" \
-jobconf "mapred.reduce.tasks=2" \
-jobconf "mapred.job.name=cachefile_demo" \
-cacheFile "hdfs://master:9000/cachefile_dir/white_list.txt#WH" \
-file "./map.py" \
-file "./red.py"

(2)如果要分发的文件有目录结构, 可以先将整个目录打包, 然后上传到HDFS, 再用-cacheArchive来分发压缩包, 栗子如下:

HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar" INPUT_FILE_PATH="/The_Man_of_Property.txt"
OUTPUT_PATH="/output_cachearchive_broadcast" $HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH # Step 1.
$HADOOP_CMD jar $STREAM_JAR_PATH \
-input $INPUT_FILE_PATH \
-output $OUTPUT_PATH \
-mapper "python map.py mapper_func WH" \
-reducer "python red.py reduer_func" \
-jobconf "mapred.reduce.tasks=2" \
-jobconf "mapred.job.name=cacheArchive_demo" \
-cacheArchive "hdfs://master:9000/w.tar.gz#WH" \
-file "./map.py" \
-file "./red.py"

关于linux文件压缩和解压命令见如下链接:

http://www.cnblogs.com/CoolJayson/p/7469620.html

Hadoop Streaming开发要点的更多相关文章

  1. Hadoop Streaming框架使用(一)

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

  2. Hadoop应用开发实战(flume应用开发、搜索引擎算法、Pipes、集群、PageRank算法)

    Hadoop是2013年最热门的技术之一,通过北风网robby老师<深入浅出Hadoop实战开发>.<Hadoop应用开发实战>两套课程的学习,普通Java开发人员可以在最快的 ...

  3. 升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)

          Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系 ...

  4. Hadoop Streaming框架学习(一)

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

  5. hadoop应用开发技术详解

    <大 数据技术丛书:Hadoop应用开发技术详解>共12章.第1-2章详细地介绍了Hadoop的生态系统.关键技术以及安装和配置:第3章是 MapReduce的使用入门,让读者了解整个开发 ...

  6. 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试

    相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 用python + hadoop streami ...

  7. 《Hadoop应用开发技术详解》

    <Hadoop应用开发技术详解> 基本信息 作者: 刘刚 丛书名: 大数据技术丛书 出版社:机械工业出版社 ISBN:9787111452447 上架时间:2014-1-10 出版日期:2 ...

  8. hadoop streaming 文档

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

  9. 基于Eclipse的Hadoop应用开发环境配置

    基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...

随机推荐

  1. (叉积,线段判交)HDU1086 You can Solve a Geometry Problem too

    You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3 ...

  2. Vue(基础七)_webpack(CommonsChunkPlug的使用)

    ---恢复内容开始--- 一.前言 1.多入口文件配置                               2.CommonsChunkPlugin的用法                   ...

  3. Java基础构造方法和this关键字整理

    构造方法 8.1构造方法介绍 构造方法的格式: 修饰符 构造方法名(参数列表) { } l  构造方法的体现: n  构造方法没有返回值类型.也不需要写返回值.因为它是为构建对象的,对象创建完,方法就 ...

  4. 用count sql做jmeter的while条件

    ${__groovy(vars.get("pboc_req_record_counter_1") == "Invalid"  || vars.get(" ...

  5. sql server开发工具

    查询分析器的使用 SQL语言包含四个部分: 1.数据定义语言(DDL) : 例如 create, drop, alter等语句 2.数据操作语言(DML) : 例如 insert,delete, up ...

  6. uva11916 Emoogle Grid (BSGS)

    https://uva.onlinejudge.org/external/119/p11916.pdf 令m表示不能染色的格子的最大行号 设>m行时可以染k种颜色的格子数有ck个,恰好有m行时可 ...

  7. Windows下 OpenSSL DES加密配置

    1.简介:OpenSSL项目是一个协作开发一个健壮的,商业级的,全功能的,并且开放源代码工具包,它实现了安全套接字层(SSL v2/v3)和传输层安全(TLS v1)协议以及全强大的通用加密库. 2. ...

  8. C++使用libcurl

    1.下载地址https://curl.haxx.se/download.html 2.选择zip压缩包下载 3.选择合适自己的vc版本 4.启动项目选择libcurl 5.因为暂时不需要ssh2,预处 ...

  9. ASP.NET MVC 5 笔记

    1.   MVC 的常用特性 1)   System.Web.Mvc.ActionNameAttribute Ø  该特性用于将当前 Action 名称,改为一个指定的 Action 名称,路由匹配时 ...

  10. hasnMap的基本操作 源码(三)

    一.初始化: hashMap有四种初始化方式: public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity ...