hadoopstreaming
来源:互联网 发布:君何以知燕王翻译 编辑:程序博客网 时间:2024/06/18 03:45
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参数
-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
- 利用hadoopstreaming&python导入数据库数据
- 使用hadoopstreaming计算航空平均迟到时间
- 在Hadoop上调试HadoopStreaming程序的方法详解 by 道凡
- android获取控件宽度
- g20在ubuntu16.04中编译ORBSLAM2的问题解决
- String的format用法及MessageFormat的format的用法
- sublime Text 3实现对java编译执行
- js class继承
- hadoopstreaming
- 使用ajax提交form表单,包括ajax文件上传,转载
- 每天一个linux命令(3):pwd命令
- PHP
- CyclicBarrier使用
- jsp获取session对象的ID
- React 脚手架 && 相关demo
- Mybatis的注解应用之关系映射
- Python Ubuntu虚拟机深度学习入门