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. 嵌Ruby 2 《捆绑》

    本章主要介绍 Ruby Object 与C++对象绑定 //====================================================================== ...

  2. 如何从 0 开始学 Ruby on Rails

    如何从 0 开始学 Ruby on Rails (漫步版)Ruby 是一门编程语言,Ruby on Rails 是 Ruby 的一个 web 框架,简称 Rails. 有很多人对 Rails 感兴趣, ...

  3. Windows Phone 8.1 多媒体(2):视频

    原文:Windows Phone 8.1 多媒体(2):视频 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...

  4. Hack 语言学习/参考---1.Hack 语言

    Table of Contents What is Hack? Hack Background Summary Hack is a language for HHVM that interopates ...

  5. PHP 使用用户自定义的比较函数对数组中的值进行排序

    原文:PHP 使用用户自定义的比较函数对数组中的值进行排序 usort (PHP 4, PHP 5) usort —      使用用户自定义的比较函数对数组中的值进行排序 说明       bool ...

  6. 设计模式学习--Factory Method

    What Factory Method:定义一个创建对象的接口,让子类来决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. Why Factory Method是一个比較基 ...

  7. 常用Jquery插件整理大全

    做项目的时候总是少不了要用到Jquery插件,但是Jquery插件有太多,每次都要花费一些时间,因此本人就抽时间整理了一些Jquery插件,每个插件都有Demo或者是使用文档供大家下载.整理了一晚上才 ...

  8. CSS知识点:选择符

    一.选择符的种类 1)通配选择符 它用来给页面所有的元素设置样式 *{margin:0;padding:0;}.但是实际当中不建议这么用,页面中用到了哪些样式,就统一设置样式,因为*影响性能.也可以给 ...

  9. .net图片压缩

    1.png很难进行压缩,一般压缩时间较长. 2.jpg图片压缩方法: #region 图片压缩[之压缩jpg] public static void JpgImgZip(Image img,strin ...

  10. DataGridView的使用和批量修改

    DataGridView的属性:AllowUserToAddRows:如果为true允许用户添加行,false不允许用户添加行ReadOnly:true表示只读.不能修改单元格中的值,false可以对 ...