Hadoop Streaming框架学习(一)

Hadoop Streaming框架学习(一)

2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏编辑

1.Hadoop&Streaming简介

1.1 Hadoop简介

Hadoop MapReduce是一个用于处理海量数据的分布式计算框架,这个框架解决了诸如数据分布式存储,作业调度,容错,机器间通信等复杂问题,可以让没有分布式处理经验的工程师非常简单的写出并行分布式程序。

MapReduce采用“分而治之”的思想,将计算任务抽象成Map和Reduce两个计算过程:

A.首先把输入分割成不相关的若干键值(key1/value1)集合,这些键值会有多个map任务来并行处理。

B.MapReduce会对map的输出(一些中间键值对key2/value2集合)按照key2进行排序,排序用memcmp的方式对key在内存中字节数组进行比较后进行排序。

C.将属于同一个key2的所有value2组合分至一个reduce作为输入

D.由reduce任务计算出最终结果并输入key3/value3

通常计算任务的输入和输出都是存放在HDFS(Hadoop Distributed File System)中,系统会尽量调度计算任务到数据所在的节点上运行,而不是将数据移动到计算节点,减少大量数据在网络中的传输,尽量节省带宽。

1.2 Streaming简介

Hadoop MR和HDFS有Java实现,默认提供Java编程接口,另外提供C++编程接口和Streaming框架,Streaming框架允许任何程序语言实现的程序在MR中使用,方便已有程序向Hadoop平台移植。

Streaming的原理是用Java实现一个包装用户程序的MR程序,该程序负责调用MR Java接口获取key/value对输入,创建一个新的进程启动包装过的用户程序,将数据通过管道传递给包装过的用户处理程序,然后调用MR Java接口将用户程序的输出切分成key/value对输入。

1.3 Demo示例

mapper为一个python程序,reduce直接为“cat”命令,不做其他处理:(文件为一个shell脚本)

   1:  $hadoop streaming \
   2:      -input "$input_path" \
   3:      -output "$output_path" \
   4:      -mapper "mapper.py" \
   5:      -reduce  "cat" \
   6:      -file "mapper.py" \
   7:      -jobconf mapred.job.name="Streaming_demo"

1.4 Streaming开发过程中需要注意的几个方面:

A.Mapper程序:对输入key/value数据进行处理;

B.Reducer程序:对mapper的输出进行归并处理;

C.Combiner:在本地对一个计算节点上的mapper输出进行归并

D.Partitioner:将mapper的输出分配到reducer

E.InputFormat/OutputFormat:对输入数据进行切分,保存输出数据

2.Streaming优缺点分析

2.1 Streaming优点

A. 一方面用其他语言(包括脚本语言)编写的程序可以方便地移植到Hadoop平台上,程序只需要按照一定的格式从标准输入读取数据、向标准输出写数据就可以在Hadoop平台上使用,原有的单机程序稍加改动就可以在Hadoop平台进行分布式处理;另一方面用于Streaming的程序可以在单机上用下面的方式运行,因此可以先用小规模数据在单机调试,使用本地的调试方法和调试工具,节省开发测试的时间。

      cat input | mapper | sort | reducer > output

B.  可以使用性能更好的语言(C/C++)来编写程序。

C. Streaming框架汇总通过limit等方式可以灵活的先知应用程序使用的内存等资源

2.2 Streaming缺点

A. Hadoop Streaming默认只能处理文本数据,无法直接对二进制数据进行处理

B. Streaming中的mapper和reducer默认只能向标准输出写数据,不能方便地处理多路输出

给梦想一点时间
 

Hadoop Streaming框架学习(一)的更多相关文章

  1. Hadoop Streaming框架学习2

    Hadoop Streaming框架学习(二) 1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop ...

  2. Hadoop Streaming框架学习(二)

    1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop/hadoop streaming args 其 ...

  3. Hadoop Streaming框架使用(一)

      Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...

  4. Hadoop Streaming框架使用(二)

    上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/te ...

  5. Hadoop Streaming详解

    一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...

  6. hadoop streaming怎么设置key

    充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...

  7. hadoop streaming 文档

    Hadoop Streaming框架使用(一) Streaming简介 Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植.因 ...

  8. Hadoop学习笔记—18.Sqoop框架学习

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  9. Hadoop 权威指南学习1 (主要框架)

    1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目. 技术栈如下: Core 一系列分布式文件系统和通用I/O的组件和接口(序列化.Java RPC和持久化数 ...

随机推荐

  1. Android 2.3.5源码 更新至android 4.4,能够下载,度娘网盘

    Android 4.4源代码下载(linux合并) ==============================切割线结束========================= 旧版本号的能够使用115, ...

  2. [使用]Git--命令行

    如何利用终端命令将文件上传到github远程服务器 (1) git status 命令查看下状态. (2) git pull 更新代码,确保代码是库上最新代码,防止覆盖其他人的提交. (3) git ...

  3. 针对不同手机系统的LBS地图定位解决方案

    原文:针对不同手机系统的LBS地图定位解决方案 摘要: 针对目前的三种手机系统:Android安卓.S60塞班.IOS苹果,做出的三种不同的手机地图应用解决方案. 查阅了多数地图API对手机的支持情况 ...

  4. jAVA 得到Map价值

    jAVA 获取Map中的值 Map<String, String> map=new HashMap<String, String>(); map.put("name& ...

  5. Spark入门级小玩

    ·背景 随着周边吐槽hadoop的声音渐渐多起来之后,spark也逐渐进入了大家的视野.之前,笔者有粗略的写过一篇spark的安装和性能比较[http://www.cnblogs.com/zacard ...

  6. C语言库函数大全及应用实例十一

    原文:C语言库函数大全及应用实例十一                                         [编程资料]C语言库函数大全及应用实例十一 函数名: setbkcolor 功 能 ...

  7. dom02

    事件对象:在触发DOM上的事件时dou都会产生一个对象,事件对象event DOM中的事件对象 1)type属性 用于获取事件类型 2)target属性 用于获取事件目标 3)stopPropagat ...

  8. Yii2中如何使用CodeCeption

    Yii2和CodeCeption CodeCeption是一个全栈的PHP测试框架,关于CodeCeption的介绍见:CodeCeption官方文档. Yii2官方增加了对CodeCeption的支 ...

  9. unity资源

    unity资源集中贴 1.unity经验之谈 http://jingyan.baidu.com/article/19192ad820f17be53e570715.html 2.百度网盘,分享了一点模型 ...

  10. 快速构建Windows 8风格应用32-构建辅助磁贴

    原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...