hadoop技术基本架构
一、Hadoop概述
hadoop由两部分组成。各自是分布式文件系统和分布式计算框架MapReduce。当中。分布式文件系统主要用于大规模数据的分布式存储。而MapReduce 则构建在分布式文件系
统之上,对存储在分布式文件系统中的数据进行分布式计算。
2、在Hadoop 中,MapReduce 底层的分布式文件系统是独立模块,用户可依照约定的一套接口实现自己的分布式文件系统,然后经过简单的配置后。存储在该文件系统上的数据便
能够被MapReduce处理。
Hadoop 默认使用的分布式文件系统是HFDS(Hadoop Distributed File System 。Hadoop 分布式文件系统),它与MapReduce 框架紧密结合。
二、Hadoop HDFS 架构
H D F S 是一个具有高度容错性的分布式文件系统,适合部署在便宜的机器上。H D F S 能提供高吞吐量的数据訪问,很适合大规模数据集上的应用。HDFS 的架构例如以下图1所看到的,整体上採用了master/slave 架构,主要由以下几个组件组成:Client 、NameNode 、Secondary 和DataNode 。
以下分别对这几个组件进行介绍。
图1 hadoop HDFS 架构图
(1 )Client
C l i e n t (代表用户)通过与NameNode和DataNode交互訪问H D F S 中的文件。Clien提供了一个类似POSIX 的文件系统接口供用户调用。
(2 )NameNode
整个H a d o o p 集群中仅仅有一个NameNode。
它是整个系统的“总管”,负责管理H D F S的文件夹树和相关的文件元数据信息。
这些信息是以“fsimage”(H D F S 元数据镜像文件)和 “editlog ”(H D F S 文件修改日志)两个文件形式存放在本地磁盘,当H D F S 重新启动时又一次构造出来的。此外。NameNode 还负责监控各个DataNode 的健康状态,一旦发现某个DataNode 宕掉,则将该DataNode
移出H D F S 并又一次备份其上面的数据。
(3 )Secondary
NameNodeSecondary NameNode 最重要的任务并非为NameNode 元数据进行热备份,而是定期合并f s i m a g e 和e d i t s 日志。并传输给NameNode 。这里须要注意的是,为了减小N a m e N o d e压力,NameNode 自己并不会合并fsimage 和edits ,并将文件存储到磁盘上,而是交由Secondary NameNode 完毕。
(4 )DataNode
一般而言,每一个S l a v e 节点上安装一个DataNode ,它负责实际的数据存储。并将数据
息定期汇报给NameNode 。DataNode 以固定大小的b l o c k 为基本单位组织文件内容。默认情况下b l o c k 大小为6 4 M B 。当用户上传一个大的文件到H D F S 上时。该文件会被切分成
若干个b l o c k ,分别存储到不同的DataNode ;同一时候,为了保证数据可靠。会将同一个b l o c k以流水线方式写到若干个(默认是3 。该參数可配置)不同的DataNode 上。这样的文件分割后存储的过程是对用户透明的。
三、Hadoop MapReduce 架构
1、同H D F S 一样,Hadoop MapReduce 也採用了Master / Slave (M /S )架构。详细例如以下图2所看到的。它主要由以下几个组件组成:Client 、JobTracker 、 TaskTracker 和Task 。以下分别对这几个组件进行介绍。
图2 H a d o o p MapReduce 架构图
(1 )Client
用户编写的MapReduce 程序通过Client 提交到JobTracker 端;同一时候,用户可通过Client 提供的一些接口查看作业执行状态。在Hadoop 内部用“作业”(Job)表示MapReduce 程序。一个MapReduce 程序可相应若干个作业。而每一个作业会被分解成若干个Map/Reduce 任务(Task)。
(2 )JobTracker
JobTracker 主要负责资源监控和作业调度。
JobTracker 监控全部TaskTracker 与作业的健康状况。一旦发现失败情况后,其会将对应的任务转移到其它节点;同一时候,JobTracker 会跟踪任务的运行进度、资源使用量等信息,并将这些信息告诉任务调度器。而调度器会在资源出现空暇时,选择合适的任务使用这些资源。在H a d o o p 中,任务调度器是一个可插拔的模块。用户能够依据自己的须要设计对应的调度器。
(3 )TaskTracker
TaskTracker 会周期性地通过Heartbeat 将本节点上资源的使用情况和任务的执行进度汇报给JobTracker,同一时候接收JobTracker 发送过来的命令并执行对应的操作(如启动新任务、杀死任务等)。
TaskTracker 使用“slot”等量划分本节点上的资源量。
“slot”代表计算资源(CPU、内存等)。一个Task 获取到一个slot 后才有机会执行。而Hadoop 调度器的作用就是将各个TaskTracker 上的空暇slot
分配给Task 使用。slot 分为Map slot 和Reduce slot 两种,分别供Map Task 和Reduce Task 使用。TaskTracker 通过slot 数目(可配置參数)限定Task 的并发度。
(4 )Task
Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。从上一小节中我们知道,HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言。其处理单位是split。
split 与block 的相应关系例如以下图3所看到的。split 是一个逻辑概念。它仅仅包括一些元数据信息,比方数据起始位置、数据长度、数据所在节点等。它的划分方法全然由用户自己决定。但须要注意
的是,split 的多少决定了Map Task 的数目。由于每一个split 会交由一个Map Task 处理。
图3 split 与block 的相应关系
PS:
1、Map Task 运行过程如图4所看到的。
由该图可知,Map Task 先将相应的s p l i t 迭代解析成一个个key / value 对。依次调用用户自己定义的map ( ) 函数进行处理,终于将暂时结果存放到本地磁盘上,当中暂时数据被分成若干个partition ,每一个partition 将被一个Reduce Task 处理。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTA2NzM2MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
图4 M a p Ta s k 运行流程
2、Reduce Task 运行过程如图5所看到的。
该过程分为三个阶段
①从远程节点上读取Map Task 中间结果(称为“Shuffle 阶段”);
②依照key 对key / value 对进行排序(称为“Sort 阶段”);
③依次读取< key, value list > ,调用用户自己定义的reduce ( ) 函数处理,并将终于结果存到HDFS 上(称为“Reduce 阶段”)。
图5 R e d u c e Ta s k 运行过程
PS
1、Hadoop MapReduce 直接诞生于搜索领域,以易于编程、良好的扩展性和高容错性为设计目标。它主要由两部分组成:编程模型和执行时环境。
当中。编程模型为用户提供了5个可编程组件,各自是InputFormat 、Mapper 、Partitioner 、Reducer、OutputFormat ;执行时环境则将用户的MapReduce 程序部署到集群的各个节点上,并通过各种机制保证其成功执行。
2、Hadoop MapReduce 处理的数据一般位于底层分布式文件系统中。
该系统往往将用户的文件切分成若干个固定大小的block 存储到不同节点上。默认情况下,MapReduce 的每一个Ta s k 处理一个block。 MapReduce 主要由四个组件构成。各自是Client 、Job Tracker 、TaskTracker 和Task 。它们共同保障一个作业的成功执行。
一个MapReduce 作业的执行周期是,先在Client 端被提交到JobTracker 上,然后由JobTr acker
将作业分解成若干个Ta s k ,并对这些Ta s k 进行调度和监控,以保障这些程序执行成功,而TaskTracker 则启动JobTracker 发来的Ta s k ,并向Job Tracker 汇报这些Task 的执行状态和本节点上资源的使用情况。
hadoop技术基本架构的更多相关文章
- 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理
这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著 机械工业出版社2013年5月出 ...
- 重学hadoop技术
最近因为做了些和hadoop相关的项目(虽然主要是运维),但是这段经历让我对hadoop的实际运用有了更加深入的理解. 相比以前自学hadoop,因为没有实战场景以及良好的大数据学习氛围,现在回顾下的 ...
- Hadoop工程包架构解析
Hadoop源码解析 1 --- Hadoop工程包架构解析 1 Hadoop中各工程包依赖简述 Google的核心竞争技术是它的计算平台.Google的大牛们用了下面5篇文章,介绍了它们的计算 ...
- Hadoop技术之Hadoop HA 机制学习
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...
- 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析
转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...
- Hadoop(分布式系统基础架构)---Hive与HBase区别
对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用. Hive是什么? Apache Hive是 ...
- Hadoop的分布式架构改进与应用
1. 背景介绍 谈到分布式系统,就不得不提到Google的三驾马车:GFS[1],MapReduce[2]和BigTable[3]. 虽然Google没有开源这三个技术的实现源码,但是基于这三篇开源 ...
- Amazon EMR(Elastic MapReduce):亚马逊Hadoop托管服务运行架构&Hadoop云服务之战:微软vs.亚马逊
http://s3tools.org/s3cmd Amazon Elastic MapReduce (Amazon EMR)简介 Amazon Elastic MapReduce (Amazon EM ...
- Hadoop1-认识Hadoop大数据处理架构
一.简介概述 1.什么是Hadoop Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构 Hadoop是基于java语言开发,具有很好的跨平 ...
随机推荐
- Cidr计算
项目上有个需求,要求计算cidr,网上perl和php,python很多,java的很少,呵呵,虽说懂点那个,毕竟还是会这个. 所以查了一下: https://foo.cs.ucsb.edu/cs56 ...
- 以前用Delphi写的CSDN免积分下载器
用了AlphaControl皮肤组件,原理很简单,就是CSDN的一个漏洞.我主要是使用WinInet来获取相关信息,然后从里面分析出真实的下载URL,同时我也是用了AES加密.function Get ...
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...
- uvalive 6657 GCD XOR
//感觉太长时间没做题 好多基本的能力都丧失了(>_<) 首先大概是这样的,因为gcd(a,b)=c,所以a,b都是c的倍数,所以我们依次枚举a的值为2c 3c 4c......,a xo ...
- Aix 文件名补齐及aix6.1 bash安装
Aix历史查询快捷键=>按ESC+k 设置KSH的自动补全(仅仅是文件名补全,没有命令补全)和历史命令功能 方法一: set -o vi 历史命令功能(esc -,esc +)自动补全文件名(e ...
- python 如何判断对象是否为类(class)
if type(att).__name__ == 'classobj': pass else: pass
- StarTeam SDK 13 下载安装
SDK 13据称兼容 StarTeam 11. 下载地址是:ftp://us.ftp.microfocus.com/Starteam/st-sdk-13.0-readme.htm Java用户可以选在 ...
- Linux学习之十五、基础正规表示法\延伸正规表示法
原文地址: http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php 基础正规表示法 既然正规表示法是处理字串的一种表示方式,那么对字节排 ...
- D. DZY Loves Modification
D. DZY Loves Modification time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- C#.NET学习笔记7--11---算术运算符,变量赋值,变量的交换,布尔表达式1,布尔表达式2
C#.NET学习笔记7---算术运算符 2013/9/6 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com 1.Consol ...