hadoopstreaming
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相关推荐
- 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce
场景:将Python程序通过hadoop-streaming提交到Hadoop集群执行. 参考:http://www.michael-noll.com/tutorials/writing-an-had ...
- hadoop调用python算法_使用Python实现Hadoop MapReduce程序
根据上面两篇文章,下面是我在自己的ubuntu上的运行过程.文字基本采用博文使用Python实现Hadoop MapReduce程序, 打字很浪费时间滴. 在这个实例中,我将会向大家介绍如何使用Py ...
- hadoopStreaming---使用Python编写MapReduce
文章目录 hadoop streaming 简介 工作原理 MR 编写示例 执行 MR 脚本 本地测试 分布式系统上执行 关于 hadoop streaming 配置的一些参考学习文章 要使用其他语言 ...
- Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式
MapReduce数据处理模型非常简单:map和reduce函数的输入和输出是键/值对(key/value pair) 1.MapReduce的类型 Hadoop的MapReduce一般遵循如下常规格 ...
- Hadoop3.0基础平台搭建(三节点),以及案例运行并使用python生成词云
一.设备配置列表,软件包 二.主机名映射 三.生成密钥 四.将密钥发送到各个节点 五.注意事项及验证 六.关闭防火墙和SeLinux安全模块(所有主机均需操作 七.解压JDK.hadoop包,设置Ja ...
- mapreduce编程实例python-使用Python语言写Hadoop MapReduce程序
原标题:使用Python语言写Hadoop MapReduce程序 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 在本教程中,我将描述如何使用Pytho ...
- mapreduce编程实例python-使用Python实现Hadoop MapReduce程序
在这个实例中,我将会向大家介绍如何使用Python 为Hadoop编写一个简单的MapReduce 程序. 尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C++.Python等语言来 ...
- mapreduce v1.0学习笔记
它是什么? 一个用于处理大数据开源的分布式计算框架,它由java实现,原生提供java编程交互接口,其它语言通过hadoop streaming方式和mapreduce框架交互. 可以做什么? 利用框 ...
- Hadoop Streaming 编程
1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为ma ...
最新文章
- c# 字典按ascii 排序_利用工作表函数,对字典键进行排序并给出对应重复个数
- [Leetcode] Simplify Path
- SpringBoot中使用log4j进行日志管理
- 【无码专区6】球与盒子(数学线性筛)
- 想了解 spring-cloud-kubernetes,那就先来实战一把官方demo
- 【Elasticsearch】分片未分配 (UNASSIGNED) failed to obtain in-memory shard lock
- 《南溪的目标检测学习笔记》——特征归一化(meadstd)
- RN 0.26 引用方式中哪些属于React,哪些属于React Native
- 挑战程序设计竞赛学习笔记2
- 区间最值操作与历史最值问题(二)
- 【coq】函数语言设计 笔记 05 -tactics
- fast无线路由器设置服务器,迅捷(FAST)路由器静态ip上网设置方法
- 计算机导论 宋斌,宋斌(计算机科学与技术学院)老师 - 南京理工大学 - 院校大全...
- mysql 存储过程
- Power BI——柱形图
- Windows与Linux的MYSQL UDF提权分析
- 阅读文献--常用方法总结
- 线性代数物理意义学习(从几何角度出发,不同于数值解析解)
- 保研笔记一 软件工程与计算卷二(1-7章)
- MATLAB实现k近邻学习(Iris数据集)
热门文章
- Python使用wordcloud+pillow基于给定图像制作词云
- python并行线程倒计时_[python 并行2]线程
- pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】
- 聚簇索引和非聚簇索引的区别_学习索引的一些总结
- 教师编计算机知识大全,高效老师必要知道的电脑常用知识技巧整理大全
- java trim all,[JAVA中各种去除空格][java string.trim()][str.replaceAll去空格]
- php 5.4.5,PHP 5.4.5 和 5.3.15 发布
- windows server2008服务器文件上传受限制怎么办,windows server 2008 服务器上传限制
- 隐藏与显现_原神:芭芭拉的隐藏彩蛋你知道吗?对着游戏npc用技能就可显现
- 防窥屏的膜能真的防止别人偷看吗,其原理是什么?