http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html#%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9A%84%E6%96%B9%E6%B3%95%E5%88%87%E5%88%86%E8%A1%8C%E6%9D%A5%E5%BD%A2%E6%88%90Key%2FValue%E5%AF%B9

简介

hadoopstreaming input参数下的文件一行一行给mapper程序,然后再由reducer一行一行输出。其中mapper参数和reducer参数都是进程,比如在python中按sys.stdin的标准输入,再按print输出。在读入的过程中,默认以TAB作为分隔符,将输入的内容分割成key/value的形式。reducer也是一样。

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \-input myInputDirs \
    -output myOutputDir \
    -mapper /bin/cat \
    -reducer /bin/wc

hadoopstreaming参数

参数 描述 描述 描述
-input DFS input file(s) for the Map step. DFS输入的文件
-output DFS output directory for the Reduce step. DFS输出的文件
-mapper JavaClassName> Optional. Command to be run as mapper.
-combiner JavaClassName> Optional. Command to be run as combiner.
-reducer JavaClassName> Optional. Command to be run as reducer.
-file Optional. File/dir to be shipped in the Job jar file.Deprecated. Use generic option “-files” instead. 需要的文件数据
-inputformat SequenceFileAsTextInputFormat JavaClassName>Optional.
-outputformat JavaClassName>,Optional. The output format class.
-partitioner Optional. The partitioner class. partitioner类
-numReduceTasks Optional. Number of reduce tasks. reducer的数量
-inputreader Optional. Input recordreader spec. ??
-cmdenv = Optional. Pass env.var to streaming commands. 程序运行的环境变量
-mapdebug Optional. To run this script when a map task fails.
-reducedebug Optional. To run this script when a reduce task fails.
-io Optional. Format to use for input to and output from mapper/reducer commands
-lazyOutput Optional. Lazily create Output.
-background Optional. Submit the job and don’t wait till it completes.
-verbose Optional. Print verbose output.
-info Optional. Print detailed usage.
-help Optional. Print help message.
通用参数
-conf specify an application configuration file 指定一个配置文件
-D use value for given property
-fs namenode:port> specify a namenode
-jt resourcemanager:port> specify a ResourceManager
-files specify comma separated files to be copied to the map reduce cluster 指定用逗号分隔的文件复制到reduce集群
-libjars specify comma separated jar files to include in the classpath. 制定用逗号分隔的jar包到classpath
-archives specify comma separated archives to be unarchived on the compute machines.

-file,-cacheFile与-cacheArchive

file是本地的文件
-file选项用来提交-mapper和-reducer执行文件,以及他们所需依赖的文件。这些文件将会放置在每个节点的”./”根目录下。

cache文件是在hdfs之上的文件
-cacheFile hdfs://host:port/path/file#linkname
这样mapper和reducer就可以直接在本地通过./linkname调用file文件了

-cacheArchive hdfs://host:port/path/archivefile#linkname

比如将mapper.py,reducer.py,/data/df.csv打包成app.tar.gz,这个压缩包就是archiefile
当执行的时候,在./linkname/mapper.py执行mapper,在./linkname/reducer.py执行reducer,
mapper,reducer会在./data/df.csv读取临时数据

三种文件分发方式的区别:-file将客户端本地文件打成jar包上传到HDFS然后分发到计算节点,-cacheFile将HDFS文件分发到计算节点,-cacheArchive将HDFS压缩文件分发到计算节点并解压。

-partitioner,-combiner

字段的选取

-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner

-reduce aggregate

-jobconf

设置maptask和reducetask的个数

-jobconf mapred.map.tasks=10
-jobconf mapred.reduce.tasks=10 # 当reducetask被设置成0时,将不会执行reduce

设置key-value的分隔符和二次排序

当Map/Reduce框架从mapper的标准输入读取一行时,它把这一行切分为key/value对。 在默认情况下,每行第一个tab符之前的部分作为key,之后的部分作为value(不包括tab符)。

通过partitionerorg.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 选项 ,可以设置二次排序

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \-input InputDirs \-output OutputDir \-mapper python mapper.py \-reducer python reducer.py \-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \#载入二次排序类-jobconf stream.map.output.field.separator=. \# 指定分隔符-jobconf stream.num.map.output.key.fields=4 \#指定第4个分隔符作为key/value的分割点,默认为1,如果大于分隔符,则value的值为空字符串-jobconf map.output.key.field.separator=. \切分key使用的分隔符-jobconf num.key.fields.for.partition=2 \切分key的位置,保证前分割点前面的字段分配到一个桶里面

参考文献:
http://blog.csdn.net/azhao_dn/article/details/7290762
http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html
http://dongxicheng.org/mapreduce/hadoop-streaming-programming/
http://www.cnblogs.com/luchen927/archive/2012/01/16/2324189.html

hadoopstreaming相关推荐

  1. 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce

    场景:将Python程序通过hadoop-streaming提交到Hadoop集群执行. 参考:http://www.michael-noll.com/tutorials/writing-an-had ...

  2. hadoop调用python算法_使用Python实现Hadoop MapReduce程序

    根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序,  打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...

  3. hadoopStreaming---使用Python编写MapReduce

    文章目录 hadoop streaming 简介 工作原理 MR 编写示例 执行 MR 脚本 本地测试 分布式系统上执行 关于 hadoop streaming 配置的一些参考学习文章 要使用其他语言 ...

  4. Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式

    MapReduce数据处理模型非常简单:map和reduce函数的输入和输出是键/值对(key/value pair) 1.MapReduce的类型 Hadoop的MapReduce一般遵循如下常规格 ...

  5. Hadoop3.0基础平台搭建(三节点),以及案例运行并使用python生成词云

    一.设备配置列表,软件包 二.主机名映射 三.生成密钥 四.将密钥发送到各个节点 五.注意事项及验证 六.关闭防火墙和SeLinux安全模块(所有主机均需操作 七.解压JDK.hadoop包,设置Ja ...

  6. mapreduce编程实例python-使用Python语言写Hadoop MapReduce程序

    原标题:使用Python语言写Hadoop MapReduce程序 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在本教程中,我将描述如何使用Pytho ...

  7. mapreduce编程实例python-使用Python实现Hadoop MapReduce程序

    在这个实例中,我将会向大家介绍如何使用Python 为Hadoop编写一个简单的MapReduce 程序. 尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C++.Python等语言来 ...

  8. mapreduce v1.0学习笔记

    它是什么? 一个用于处理大数据开源的分布式计算框架,它由java实现,原生提供java编程交互接口,其它语言通过hadoop streaming方式和mapreduce框架交互. 可以做什么? 利用框 ...

  9. Hadoop Streaming 编程

    1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为ma ...

最新文章

  1. c# 字典按ascii 排序_利用工作表函数,对字典键进行排序并给出对应重复个数
  2. [Leetcode] Simplify Path
  3. SpringBoot中使用log4j进行日志管理
  4. 【无码专区6】球与盒子(数学线性筛)
  5. 想了解 spring-cloud-kubernetes,那就先来实战一把官方demo
  6. 【Elasticsearch】分片未分配 (UNASSIGNED) failed to obtain in-memory shard lock
  7. 《南溪的目标检测学习笔记》——特征归一化(meadstd)
  8. RN 0.26 引用方式中哪些属于React,哪些属于React Native
  9. 挑战程序设计竞赛学习笔记2
  10. 区间最值操作与历史最值问题(二)
  11. 【coq】函数语言设计 笔记 05 -tactics
  12. fast无线路由器设置服务器,迅捷(FAST)路由器静态ip上网设置方法
  13. 计算机导论 宋斌,宋斌(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...
  14. mysql 存储过程
  15. Power BI——柱形图
  16. Windows与Linux的MYSQL UDF提权分析
  17. 阅读文献--常用方法总结
  18. 线性代数物理意义学习(从几何角度出发,不同于数值解析解)
  19. 保研笔记一 软件工程与计算卷二(1-7章)
  20. MATLAB实现k近邻学习(Iris数据集)

热门文章

  1. Python使用wordcloud+pillow基于给定图像制作词云
  2. python并行线程倒计时_[python 并行2]线程
  3. pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】
  4. 聚簇索引和非聚簇索引的区别_学习索引的一些总结
  5. 教师编计算机知识大全,高效老师必要知道的电脑常用知识技巧整理大全
  6. java trim all,[JAVA中各种去除空格][java string.trim()][str.replaceAll去空格]
  7. php 5.4.5,PHP 5.4.5 和 5.3.15 发布
  8. windows server2008服务器文件上传受限制怎么办,windows server 2008 服务器上传限制
  9. 隐藏与显现_原神:芭芭拉的隐藏彩蛋你知道吗?对着游戏npc用技能就可显现
  10. 防窥屏的膜能真的防止别人偷看吗,其原理是什么?