Hadoop Streaming

什么是Hadoop Streaming

?
?

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

?
?

比如shell中的cat作为mapper,wc作为reducer

?
?


$HADOOP_HOME/bin/hadoop jar

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

-input myInputDirs

-output myOutputDir

-mapper cat

-reducer wc


找到Hadoop Streaming所在的包

定义输入输出路径

定义mapper和reducer

?
?

Hadoop Streaming编程原理

?
?

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

?
?

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

?
?

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

?
?

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

?
?

如果没有tab,整行作为key,value为空

?
?

用法

?
?

Hadoop jar + Hadoop Streaming jar + option

?
?

option有:

?
?

-input

-output

-mapper

-reducer

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

-partitioner

-combiner

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

?
?

mapred.map.tasks:map task的数目

mapred.reduce.tasks

stream.map.input.field.separator/stream.map.output.field.separator:map输入输出的分隔符,默认为\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 Streaming的Python版实现和shell版实现

时间: 2024-08-06 09:23:47

Hadoop Streaming的相关文章

Hadoop Streaming 编程

1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer) $HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/contrib/streaming/hadoop-*-streaming.jar \ -input myInputDirs \ -outpu

用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控

写在前面 前文:用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 为了方便,这篇文章里的例子均为伪分布式运行,一般来说只要集群配置得当,在伪分布式下能够运行的程序,在真实集群上也不会有什么问题. 为了更好地模拟集群环境,我们可以在mapred-site.xml中增设reducer和mapper的最大数目(默认为2,实际可用数目大约是CPU核数-1). 假设你为Hadoop安装路径添加的环境变量叫$HADOOP_HOME(如果是$HAD

Hadoop Streaming 使用及参数设置

1. MapReduce 与 HDFS 简介 什么是 Hadoop ? Google 为自己的业务需要提出了编程模型 MapReduce 和分布式文件系统 Google File System,并发布了相关论文(可在 Google Research 的网站上获得:GFS.MapReduce).Doug Cutting 和 Mike Cafarella 在开发搜索引擎 Nutch 时对这两篇论文进行了自己的实现,即同名的 MapReduce 和 HDFS,合起来就是 Hadoop. MapRedu

hadoop streaming anaconda python 计算平均值

原始Liunx 的python版本不带numpy ,安装了anaconda 之后,使用hadoop streaming 时无法调用anaconda python  , 后来发现是参数没设置好... 进入正题: 环境: 4台服务器:master slave1  slave2  slave3. 全部安装anaconda2与anaconda3, 主环境py2 .anaconda2与anaconda3共存见:Ubuntu16.04 Liunx下同时安装Anaconda2与Anaconda3 安装目录:/

hadoop Java API、 hadoop Streaming 、hadoop Pipes 三者比较学习

1.hadoop  Java  API Hadoop的主要编程语言是Java,因而,Java API是最基本的对外编程接口. 2. hadoop    Streaming             1.概述 它是为方便非java用户编写Mapreduce程序而设计的工具包. Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer, 例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作

自制 python hadoop streaming 数据分析工具

https://github.com/zhuyi10/hadoop_data_analysis跟大家交流一下我写的数据分析工具用hadoop streaming执行python写的mapper, reducer目前只实现了一些简单的分析功能希望大家多提意见

hadoop streaming编程小demo(python版)

都到了年根底下了,业务线黄了,成了惨兮兮的茶几.不说了. 换到了新的业务线,搞大数据质量评估.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有odc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python编写MR的例子吧. 抄一句话:Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer. 1.首先,先介绍一下背景,我们的数据是存放在hive里的.h

《Hadoop权威指南》笔记 第二章 Hadoop Streaming

什么是Hadoop Streaming ? ? Hadoop提供的一个编程工具,允许用户使用任何可执行文件或脚本作为mapper和Reducer ? ? 一个例子(shell简洁版本) ? ? $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-*-streaming.jar -input myInputDirs -output myOutputDir -mapper cat -reducer wc ? ? 解析:

Hadoop Streaming例子(python)

以前总是用java写一些MapReduce程序现举一个例子使用Python通过Hadoop Streaming来实现Mapreduce. 任务描述: HDFS上有两个目录/a和/b,里面数据均有3列,第一列都是id,第二列是各自的业务类型(这里假设/a对应a,/b对应b),第三列是一个json串.各举一例: /a的一行:1234567 a {"name":"jiufeng","age":"27","sex"