一.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. apache thrift分析

    thrift是一个用来实现跨语言的远程调用(RPC Remote Procedure Call)的软件框架.根据接口定义语言(IDL Interface definition lanuage) 并借助 ...

  2. Linux中rpm的使用

    1.安装 rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rpm 包: rpm -iv example.rpm 安装 example.rpm ...

  3. webpack打包进内联html

    用到一个新插件:html-webpack-inline-source-plugin(依赖于html-webpack-plugin) 1.安装 npm i -D html-webpack-inline- ...

  4. ARM三级流水线

    title: ARM三级流水线 tags: ARM date: 2018-10-14 16:57:10 --- 参考: ARM指令集E004armproc.chm ARM Architecture R ...

  5. 如何用MTR诊断网络问题

    MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告.MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合.本 ...

  6. HBase基础之常用过滤器hbase shell操作(转)

    创建表 create 'test1', 'lf', 'sf' lf: column family of LONG values (binary value)-- sf: column family o ...

  7. Linux记录-shell获取hdfs表查询mysql

    #!/bin/sh hdfs dfs -ls /user/hive/warehouse | awk '{print $8}' | awk -F "/" '{print $5}' & ...

  8. java assert的用法简介【转】

    assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...

  9. idea 快捷键ctrl+shift+f失效的解决方案

    我是使用微软自带的拼音输入法,右下角图标--右键--设置--按键,拉到最下面 ---快捷键(简体繁体切换),取消勾选 即可

  10. IO流--字符流与字节流--File类常用功能

    IO流的常用方法: 1: 文件的读取和写入图解: 2:字节流: 读写文件的方法: 一般效率读取: 读取文件:        FileInputStream(); 写数据:            Fil ...