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 处理。

图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技术基本架构,码迷,mamicode.com

时间: 2024-12-06 18:09:02

hadoop技术基本架构的相关文章

2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出版 2.<Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理>蔡斌.陈湘萍 著  机械工业出版社2013年4月出版 百度网盘下载地址: http://pan.baidu.com/s/1sjNmkFj

Hadoop技术内幕:深入解析YARN架构设计与实现原理pdf

下载地址:网盘下载 <Hadoop技术内幕:深入解析MapReduce架构设计与实现原理>内容简介:"Hadoop技术内幕"共两册,分别从源代码的角度对"Common+HDFS"和"MapReduce的架构设计和实现原理"进行了极为详细的分析.<Hadoop技术内幕:深入解析MapReduce架构设计与实现原理>由Hadoop领域资深的实践者亲自执笔,首先介绍了MapReduce的设计理念和编程模型,然后从源代码的角度深入

通过京东技术演进和淘宝技术演进,探察未来技术和架构

通过京东技术演进和淘宝技术演进,探察未来技术和架构 我们从京东和淘宝技术架构演进,可以看出电商在发展过程中的必经之路:Mysql->Oracle->分布式计算和分布式存储->???未来 引用下<京东技术解密>书中的内容: 基于Hadoop,以Mapreduce作为计算引擎的的分布式数据仓库可以说是大数据处理的"标配",2012年8月,由40台机器搭建的第一版集群上线,相较于Oracle小型机,性能明显提升,让我们第一次体会到分布式的威力.2012年12月,

15种最佳方式帮你顺利掌握Hadoop技术

在探讨今天的主题--如何利用各类资源学习Hadoop知识--之前,让我们首先搞清楚另一个问题:大数据Hadoop到底是什么?简单来讲,Hadoop是一套用于实现大数据技术的框架方案.为了顺利掌握Hadoop,大家需要理解两项与文件存储以及数据处理紧密相关的基础知识.在Hadoop当中,我们甚至可以保存比可用存储空间更大的文件.Hadoop提供相关选项,允许大家将大型文件存储在节点之上.很明显,处理规模如此可观的文件绝非儿戏,不过Hadoop能够引入"MapReduce"机制让一切变得更

Hadoop技术内幕HDFS-笔记1

书籍学习——董西成<Hadoop技术内幕 深入解析HADOOP COMMON和HDFS架构设计与实现原理> HDFS 高容错,高伸缩性 Lucene是引擎开发包,提供了一个纯java的高性能全文检索,可方便的嵌入到各种应用中实现全文搜索/索引功能. Nutch是以Lucene为基础实现的搜索引擎应用,Lucene为Nutch提供了文本搜索和索引的Api,Nutch不光有搜索功能,还有数据抓取的功能,却无法支持拥有数亿网页的网络(在网络抓取和索引过程中产生的大量文件存储需求). Hadoop优势

基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)视频教程(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

Hadoop技术内幕HDFS-笔记2

任何一个复杂的软件系统,为了提高其适应性和扩展性,一般都会有一个配置模块或者配置系统,作完成其扩展.定制的手段和方式. 1.1.  Windows的配置文件 (第一次知道这事啊): 采用的是ini后缀的文本文件,可通过动态链接库提供方法进行处理. 初始化文件或profile概要文件 1.2.  Java配置文件: Properties文件 Xml文件 工具:Apache Commons Configuration 用于对配置文件进行常用的操作. Hadoop configuration Hado

hadoop技术内幕-序列化与压缩(一)

一.java内建序列化机制 java序列化机制将对象转换为连续的byte数据,这些数据可以在日后还原为原先的对象状态,还能自动处理不同操作系统上的差异,也不用担心字节排列次序. java的类实例可被序列化只要在类声明中加入implements Serializable即可.Serializable接口是一个标志,不具有任何成员函数. java的序列化会自动访问对象的父类,以保证对象内容的一致性.序列化的结果中包含了大量与类相关的信息(包括版本号.类描述信息.类的版本ID.父类等).在这个过程中序

Hadoop技术内幕——Hadoop配置信息处理

配置系统是复杂软件必不可少的一部分,org.apache.hadoop.conf.Configuration在Hadooop各个子项目中发挥着重要作用. windows系统广泛使用一种特殊批的ASCII文件.ini作为其主要配置文件标准,被称为(Initialization File)或概要文件(profile):java中JDK提供了java.util.Properties类处理简单的配置文件.而Hadoop采用自己独有的配置文件管理系统. Hadoop的配置文件的根元素是configurat