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. CocoaPods 建立私有仓库

    CocoaPods是iOS,Mac下优秀的第三方包管理工具,类似于java的maven,给我们项目管理带来了极大的方便. [个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像 ...

  2. linux c ping 实现

    用c语言实现的linux中的ping命令 #include <stdio.h> #include <signal.h> #include <arpa/inet.h> ...

  3. VS2015前端工具:NPM和Web Essentials

    VS2015前端工具:NPM和Web Essentials 1.写作背景 想在5月份前换个工作环境了,“检讨”一下自己混饭的技术水平和处世的人脉关系,觉得很不给力!为人方面,人各有志也就不纠结了,但本 ...

  4. Cassandra C++/NodeJs开发环境

    工作的需要,开始更多地倾向于去中心化的结构,目前看来Cassandra算是去中心化DB中性能/管理最热门的选择,崇尚其P2P的理念. 自身原因对JAVA不擅长(周围写C的好少),还是更热衷于C++/J ...

  5. NotePad++ for PHP

    原文:NotePad++ for PHP 一.安装设置 1.首先根据你的系统下载相应的安装文件.http://notepad-plus-plus.org/ Notepad++插件:http://sou ...

  6. 《python源代码剖析》笔记 python虚拟机中的函数机制

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.Python虚拟机在运行函数调用时会动态地创建新的 PyFrameObject对象, 这 ...

  7. [Unity3D]Unity3D连衣裙实现游戏开发系统

    大家好,我是秦培.欢迎关注我的博客,我的博客地址">blog.csdn.net/qinyuanpei. 不知从什么时候開始,国产RPG单机游戏開始出现换装,仙剑系列中第一部实现了换装的 ...

  8. Ronco创投原则 - 硅谷创业教父Paul Graham文摘

    (天地会珠海分舵注:虽然已经尽力翻译,还是担心会和大师的原意有偏差,所以这里保留英文原文给大家作参考) Ronco创投原则 No one, VC or angel, has invested in m ...

  9. JS中通过call方法实现继承

    原文:JS中通过call方法实现继承 讲解都写在注释里面了,有不对的地方请拍砖,谢谢! <html xmlns="http://www.w3.org/1999/xhtml"& ...

  10. 区域、模板页与WebAPI初步

    区域.模板页与WebAPI初步 一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域( ...