Hadoop Streaming框架学习(一)
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框架学习(一)的更多相关文章
- Hadoop Streaming框架学习2
Hadoop Streaming框架学习(二) 1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop ...
- Hadoop Streaming框架学习(二)
1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop/hadoop streaming args 其 ...
- Hadoop Streaming框架使用(一)
Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...
- Hadoop Streaming框架使用(二)
上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/te ...
- Hadoop Streaming详解
一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...
- hadoop streaming怎么设置key
充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为valu ...
- hadoop streaming 文档
Hadoop Streaming框架使用(一) Streaming简介 Streaming框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植.因 ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- Hadoop 权威指南学习1 (主要框架)
1. Hadoop 最出名的是 MapReduce和 HDFS,不过也有很多其他有用的子项目. 技术栈如下: Core 一系列分布式文件系统和通用I/O的组件和接口(序列化.Java RPC和持久化数 ...
随机推荐
- C--运算符,表达式和语句实例
//第五章 运算符,表达式和语句 #include<stdio.h> //引入头文件 #include<math.h> #define ADJUST 7.64 //定义常量 # ...
- NPOI mvc easyui 根据Excel模板 生成Excel
1.首先下载 NPOI https://npoi.codeplex.com/releases 只要dll 就好 示例代码库太难懂了. NPOI 是一个开源 免费的 东西.而且不依赖 office ...
- 使用Jenkins来构建Docker容器
使用Jenkins来构建Docker容器(Ubuntu 14.04) 当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,dua ...
- 怎样将IPhone应用程序软件公布到应用程序商店?
转自:http://www.shtion.com/667.html 怎样将IPhone应用程序软件公布到应用程序商店? 2009年10月19日公布 分类: App store, iphone, 手机应 ...
- mvc拦截器
在ASP.NET MVC中,有三种拦截器:Action拦截器.Result拦截器和Exception拦截器.这里说的是第一种和第三种.其实所谓的ASP.NET MVC拦截器,也没什么神秘的,就是一个普 ...
- IntelliJ IDEA 发布13版本——创造java奇迹
IntelliJ IDEA被公认为业界最好的Java开发平台.此次发布的了13版本,更是集合了与Java EE.Android.Spring.Scala和Gradle最新合作与支持. Java EE ...
- WPF随手小记之二 ——改变DataGrid样式
大部分时候我们并不需要手动改变DataGrid的样式,因为用默认的其实也看得过去,而且在DataGrid中的数据也远比外观重要. 但总有时候,我们需要做点必要的UI修改来使DataGrid更美观. 一 ...
- C# 语言的两个html解析器
基于C# 语言的两个html解析器 基于C# 语言的两个html解析器 1)Html Agility Pack http://nsoup.codeplex.com/ 代码段示例: HtmlDocu ...
- /bin/bash^M: bad interpreter: No such file or directory
<今天遇到的问题, 网上有非常多类似的文章, 个人记录下来, 加深记忆, 已经明确的就绕路吧.> 运行一个脚本full_build.sh 时, 一直是提示我: -bash: ./f ...
- IE6浏览器不支持固定定位(position:fixed)解决方案
代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...