码迷,mamicode.com
首页 > 其他好文 > 详细

Hadoop Streaming

时间:2015-04-03 22:31:42      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

什么是Hadoop Streaming

? ?

Hadoop提供的一个编程工具,允许用户使用任何可执行文件或脚本作为mapperReducer

? ?

比如shell中的cat作为mapperwc作为reducer

? ?

$HADOOP_HOME/bin/hadoop jar

$HADOOP_HOME/contrib/streaming/hadoop-*-streaming.jar

-input myInputDirs

-output myOutputDir

-mapper cat

-reducer wc

找到Hadoop Streaming所在的包

定义输入输出路径

定义mapperreducer

? ?

Hadoop Streaming编程原理

? ?

mapperreducer会从标准输入中读取用户数据,一行一行处理后发送给标准输出,Streaming工具会创建MapReduce job,发送给各个taskTracker,同时监控整个job的执行过程

? ?

如果一个文件(可执行文件或者脚本)作为mappermapper初始化时,每一个mapper任务会把文件作为一个单独的进程启动

? ?

mapper任务运行时,把输入切分成行,然后把每一行提供给可执行文件进程的标准输入。同时mapper收集可执行文件进程的标准输出内容,并把收到的每一行内容转化为key/value对作为mapper的输出。

? ?

默认情况下,一行的第一个tab之前的作为key,后面的作为value

? ?

如果没有tab,整行作为keyvalue为空

? ?

用法

? ?

Hadoop jar + Hadoop Streaming jar + option

? ?

option有:

? ?

-input

-output

-mapper

-reducer

-file:打包文件到提交的作业中,可以使mapper或者reducer要用的输入文件,如配置文件,字典等

-partitioner

-combiner

-D:作业的一些属性,以前用的是-jobconf

? ?

mapred.map.tasksmap task的数目

mapred.reduce.tasks

stream.map.input.field.separator/stream.map.output.field.separatormap输入输出的分隔符,默认为\t

? ?

本地测试:

? ?

cat input.txt|python Mapper.py|sort|python Reducer.py

? ?

或者

? ?

cat input.txt|./Mapper|sort|./Reducer

? ?

摘自

? ?

http://dongxicheng.org/mapreduce/hadoop-streaming-programming/

? ?

里面还有wordcount Hadoop StreamingPython版实现和shell版实现

Hadoop Streaming

标签:

原文地址:http://www.cnblogs.com/keedor/p/4391026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!