了解hadoop,首先就需要先了解hadoop的数据流,就像了解servlet的生命周期似的。hadoop是一个分布式存储(hdfs)和分布式计算框架(mapreduce),但是hadoop也有一个很重要的特性:hadoop会将mapreduce计算移动到存储有部分数据的各台机器上

术语

 
        MapReduce 作业(job)是客户端需要执行的一个工作单元:它包括输入数据、mapreduce程序和配置信息。hadoop将作业分成若干个小任务(task)来执行,其中包括两类任务:map任务和reduce任务

有两类节点控制着作业执行过程:一个jobtracker及一系列tasktracker
jobtracker通过调度tasktracker上运行的任务,来协调所有运行在系统上的作业。tasktracker在运行任务的同时将运行进度报
告发送给jobtracker,jobtracker由此记录每项作业任务的整体进度情况。如果其中一个任务失败,jobtracker可以在另外一个
tasktracker节点上重新调度该任务。

 

输入

 
        hadoop将mapreduce的输入数据划分成等长的小数据块,称为输入分片(input split)或简称分片hadoop为每个分片构建一个map任务,并由该任务来运行用户自定义的map函数从而处理分片中的每条记录。
       对于大多数作业来说,一个合理的分片大小趋向于HDFS的一个块的大小,默认是64M,不过可以针对集群调整这个默认值。分片的大小一定要根据运行的任务来定,如果分片过小,那么管理分片的总时间和构建map任务的总时间将决定着作业的整个执行时间。

hadoop在存储有输入数据的节点上运行map任务,可以获得最佳性能,这就是所谓的数据本地化优化
因为块是hdfs存储数据的最小单元,每个块可以在多个节点上同时存在(备份),一个文件被分成的各个块被随机分部在多个节点上,因此如果一个map任务
的输入分片跨越多个数据块,那么基本上没有一个节点能够恰好同时存在这几个连续的数据块,那么map任务就需要首先通过网络将不存在于此节点上的数据块远
程复制到本节点上再运行map函数,那么这种任务显然效率非常低。

 
 

输出

       map任务将其输出写入到本地磁盘,而非HDFS。这是因为map的输出是中间结果:该中间结果有reduce任务处理后才产生最终结果(保存在hdfs中)。而一旦作业完成,map的输出结果可以被删除。
    reduce任务并不具备数据本地化优势:单个reduce任务的输入通常来自于所有的mapper任务的输出。reduce任务的输出通常存储于HDFS中以实现可靠存储。
 
 

数据流

 
        作业根据设置的reduce任务的个数不同,数据流也不同,但大同小异。reduce任务的数量并非由输入数据的大小决定的,而是可以通过手动配置指定的。
 

单个reduce任务

 
 

多个reduce任务

 
         如果是多个reduce任务的话,则每个map任务都会对其输出进行分区(partition),即为每个reduce任务创建一个分区。分区有用户定义的分区函数控制,默认的分区器(partitioner) 通过哈希函数来分区。
         map任务和reduce任务之间的数据流称为shuffle(混洗)
 
 

没有reduce任务

       当然也可能出现不需要执行reduce任务的情况,即数据可以完全的并行。
 
 
 

combiner(合并函数)

 
     
顺便在这说下combiner吧,hadoop运行用户针对map任务的输出指定一个合并函数,合并函数的输出作为reduce函数的输入。其实合并函数
就是一个优化方案,说白了就是在map任务执行后在本机先执行合并函数(通常就是reduce函数的拷贝),减少网络传输量。

大数据时代之hadoop(三):hadoop数据流(生命周期)的更多相关文章

  1. 大数据时代快速SQL引擎-Impala

    背景 随着大数据时代的到来,Hadoop在过去几年以接近统治性的方式包揽的ETL和数据分析查询的工作,大家也无意间的想往大数据方向靠拢,即使每天数据也就几十.几百M也要放到Hadoop上作分析,只会适 ...

  2. 转:大数据时代快速SQL引擎-Impala

    本文来自:http://blog.csdn.net/yu616568/article/details/52431835 如有侵权 可立即删除 背景 随着大数据时代的到来,Hadoop在过去几年以接近统 ...

  3. 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)

    大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四): ...

  4. 大数据时代,我们为什么使用hadoop

    大数据时代,我们为什么使用hadoop 我们先来看看大数据时代, 什么叫大数据,“大”,说的并不仅是数据的“多”!不能用数据到了多少TB ,多少PB 来说. 对于大数据,可以用四个词来表示:大量,多样 ...

  5. 【Hadoop】大数据时代,我们为什么使用hadoop

    博客已转移,请借一步说话.http://www.daniubiji.cn/archives/538 我们先来看看大数据时代, 什么叫大数据,“大”,说的并不仅是数据的“多”!不能用数据到了多少TB , ...

  6. 【大数据】Summingbird(Storm + Hadoop)的demo运行

    一.前言 为了运行summingbird demo,笔者走了很多的弯路,并且在国内基本上是查阅不到任何的资料,耗时很久才搞定了demo的运行.真的是一把辛酸泪,有兴趣想要研究summingbird的园 ...

  7. 大数据框架:Spark vs Hadoop vs Storm

    大数据时代,TB级甚至PB级数据已经超过单机尺度的数据处理,分布式处理系统应运而生. 知识预热 「专治不明觉厉」之“大数据”: 大数据生态圈及其技术栈: 关于大数据的四大特征(4V) 海量的数据规模( ...

  8. 大数据项目实践:基于hadoop+spark+mongodb+mysql+c#开发医院临床知识库系统

    一.前言 从20世纪90年代数字化医院概念提出到至今的20多年时间,数字化医院(Digital Hospital)在国内各大医院飞速的普及推广发展,并取得骄人成绩.不但有数字化医院管理信息系统(HIS ...

  9. 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了

    一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了 转载: 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它 ...

  10. 大数据系列(4)——Hadoop集群VSFTP和SecureCRT安装配置

    前言 经过前三篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,当然,我相信安装的过程肯定遇到或多或少的问题,这些都需要自己解决,解决的过程就是学习的过程,本篇的来介绍几个Hadoop环 ...

随机推荐

  1. 曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑

    今天使用SQLCMD导入到SQL SERVER数据库中,看着数据文件都成功执行,但是意外发现有一个文件数据没有成功导入,但执行不报错,很容易导致问题被忽略. 使用存在问题的文件做下测试,从界面上看几行 ...

  2. JS 用角度换东南西北

    最近因为业务,正好需要用设备回传的角度值转成用户读得懂的文字形式 function toDirStr(num){ var num=parseInt(num) var N='北'; var E='东'; ...

  3. 手工场景--controller--场景设计、场景监控、运行场景

    场景设置: 1.设置界面 2.全局设置. A:初始化: B:启动用户: C:

  4. Intellij Idea + Maven + Git + Struts2 HelloWorld

    1.在intellij Idea上新建Maven项目,输入相应的groupId,artifactId,项目名称: 2.在项目的pom文件中,引入struts2的核心依赖struts2-core: &l ...

  5. OSI模型第四层传输层--TCP协议

    1.传输层2个协议tcp和udp 2.tcp的可靠性(挂号信). 面向链接的:类似寄挂号信,对方收到了并且能够确认.所以也是可靠的传输. 最大报文传输:两端可以协商传输报文大小.(协商一个报文的大小) ...

  6. 约瑟夫问题-Josephus--及实例说明

    //---我保证所有的代码都已经通过测试---// 类似约瑟夫的问题又称为约瑟夫环.又称“丢手绢问题”. 这个问题来自于这样的一个关于著名犹太历史学家 Josephus传说: 在罗马人占领乔塔帕特后, ...

  7. tomcat配置https方法

    利用tomcat服务器配置https双向认证 步骤 1.为服务器生成证书进入控制台,切换到%JAVA_HOME%/bin目录,具体操作略. 使用keytool为Tomcat生成证书,假定目标机器的域名 ...

  8. 常用的html标签大全

    html标签大全 一.文字 1.标题文字 <h#>..........</h#> #=1~6:h1为最大字,h6为最小字 2.字体变化 <font>........ ...

  9. 【AndroidStudio】关于SVN的相关配置简介

    AndroidStudio 的SVN 安装和使用方法与我以前用的其他IDE 都有很大差别,感觉特麻烦,网上相关资料很少,貌似现在 Git 比较流行,之前有用过 github 但是他只能是开源项目免费, ...

  10. C#基础--属性

    定义一个Book类: namespace ConsoleTest { public class Book { private string _bookIsbn; private string _boo ...