什么是Hadoop?

Hadoop是Apache的一款开源框架,使用java语言编写,可以通过编写简单的程序来实现大规模数据集合的分布式计算。工作在Hadoop框架上的应用可以工作在分布式存储和计算机集群计算的环境上面。Hadoop具有高扩展性,其集群能够从单台机器扩展到数千台机器。
Hadoop 采用的是Apache v2协议,Hadoop基于Google发布的MapReduce论文实现,并且应用了函数式编程的思想。

Hadoop 架构

Hadoop框架包括下述三个个模块

HDFS, MapReduce, YARN

HDFS

Hadoop Distributed File System (HDFS) 是Hadoop集群中最根本的文件系统,它提供了高扩展,高容错,机架感知数据存储等特性,可以非常方便的部署在机器上面。HDFS除过分布式文件系统所通有的特点之外,还有些仅属自己的特点:

  • 对硬件故障的考虑设计
  • 更大的数据单元,默认的块大小为128M
  • 对序列操作的优化
  • 机架感知
  • 支持异构集群和跨平台

Hadoop集群中的数据被划分成更小的单元(通常被称为),并且将其分布式存储在集群中,每个块有两个副本,这个两个副本被存储在集群的的一个机架上。这样数据包含自身便有三个副本,具有极高的可用性和容错性,如果一个副本丢失,HDFS将会自动的重新复制一份,以确保集群中一共包含三个数据副本(包含自身)。

HDFS也可以有多种形式,这个取决于Hadoop版本及所需功能。

  • Vanilla HDFS
  • High-availability HDFS

HDFS是Leader/Follower架构实现的,每个集群都必须包含一个NameNode节点,和一个可选的SecondaryName节点,以及任意数量的DataNodes。

除了管理文件系统命名空间和管理元数据之外,NameNode对clients而言,还扮演着master和brokers的角色(虽然clients是直接与DataNode进行通信的)。NameNode完全存在于内存中,但它仍然会将自身状态写入磁盘。

HDFS 的替代文件系统

HDFS是Hadoop中经典的文件系统,但是Hadoop并不仅仅支持HDFS,它还支持其他的文件系统,比如Local file system, FTP, AWS S3, Azure’s file system, 和OpenStack’s Swift,这些文件系统可以在使用时根据不同URI进行区分。比如:

file: for the local file system
s3: for data stored on Amazon S3

MapReduce

MapReduce是为能够在集群上分布式处理海量数据而量身订做的框架,MapReduce job可以分为三次连续过程。

  • Map 将输入数据划分为key-value集合
  • Shuffle 将Map产生的结果传输给Reduce
  • Reduce 则对接收到的key-value进一步处理

MapReduce的最大工作单元便是job,每个job又会被分割成map task或reduce task。最经典的MapReduce job便是统计文档中单词出现的频率,这个过程可以使用下图来描述

YARN

YARN (Yet Another Resource Negotiator) 是为应用执行分配计算资源的一个框架。YARN主要包含下面三个核心组件

  • ResourceManager(一个集群只有一个)
  • ApplicationMaster(每个应用都有一个)
  • NodeManagers (每个节点都有一个)

Note:

YARN 使用了一些容易让人误解的名词作为术语,因此应该特别注意。比如在Hadoop ecosystem中,Container这个概念,平常我们听到Container时,我们都认为是与Docker相关。但是这里却是指Resource Container (RC),即表示物理资源的集合。通常被抽象的表示,将资源分配给到目标和可分配单元。
Application也是一个熟词僻义的用法,在YARN中,一个Application指的是被一并执行的task的集合,YARN中的Application的概念大概类似于MapReduce中的job这个概念。

ResourceManager

ResourceManager在YARN中是一个rack-aware master节点,它主要负责管理所有可用资源的集合和运行一些至关重要的服务,其中最重要的便是Scheduler

Scheduler组件是YARN Resourcemanager中向运行时应用分配资源的一个重要组件,它仅仅完成资源调度的功能,并不完成监控应用状态和进度的功能,因此即使应用执行失败,它也不会去重启失败的应用。

但是在Hadoop 2.7.2开始,YARN开始支持少数调度策略CapacityScheduler,FairScheduler,FIFO Scheduler。默认情况下由Hadoop来负责决定使用哪种调度策略,无论使用那种调度策略,Scheduler都会通过Continer来向请求的ApplicationMaster分配资源。

ApplicationMaster

每个运行在Hadoop上面的应用都会有自己专用的ApplicationMaster实例。每个实例进会存在于集群中每个节点仅属于自己的单独Container。每个Application的ApplicationMaster都会周期性的向ResourceManager发送心跳消息,如果有需要的话,还会去向ResourceManger请求额外的资源,ResourceManager便会为额外的资源划分租期(表明该资源已被某NodeManager所持有)

ApplicationMaster会监控每个application的整个生命周期,从向ResourceManager请求额外的资源到向NodeManager提交请求。

NodeManagers

NodeManager可以认为是监控每个节点的Container的代理,会监控每个Container的整个生命周期,包括Continer的资源使用情况,与ResourceManager的周期性通信。

从概念上来说,NodeManager更像是Hadoop早期版本的TaskTrackers,当时Taskrackers主要被用来解决调度map和reduce slots问题,NodeManager有一个动态创建的,任意大小的Resouce Containers(RCs),并不像MR1中的那种slots,RCs可以被用在map tasks中,reduce tasks中,或者是其他框架的tasks

为了更好的描述YARN,这里给出一个YARN application的执行过程。如下图所示:

  1. client向ResourceManager提交一个MapReduce应用,和启动指定应用的ApplicationMaster所需要的信息。
  2. ResourceManager 会为ApplicationMaster分派一个Container,并且启动Application
  3. ApplicationMaster启动,接着向ResourceManager注册自己,允许调用client直接与ApplicationMaster交互
  4. ApplicatoinMaster为客户端应用分配资源
  5. ApplicationMaster为application启动Container
  6. 在执行期间,clients向Applicationaster提交application状态和进度
  7. apllication执行完成,ApplicationMaster向ResouceManager撤销掉自己的注册信息,然后关机,将自己所持有的Container归还给资源池。

Reference

Hadoop architectural overview

Hadoop 基本架构相关推荐

  1. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...

  2. Spark精华问答 | Spark和Hadoop的架构区别解读

    总的来说,Spark采用更先进的架构,使得灵活性.易用性.性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高.我总结,具体表现在如下几个方面. 1 Q:Spark和 ...

  3. R语言和Hadoop系统架构在大数据分析中的应用

    也许正在喝着咖啡的你,看着阳光从玻璃窗蹦进来,回忆近日的美好,惬意的享受这个"温暖"的暑假.而SupStat已经为你准备了一份暑期数据盛宴. R是什么?               ...

  4. Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

          纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解. 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.H ...

  5. Hadoop的架构模型

    文章目录 Hadoop 1.Hadoop的介绍 2.Hadoop的历史版本和发行版公司 2.1 Hadoop历史版本 2.2 Hadoop三大发行版公司 3.hadoop的架构模型 1.x的版本架构模 ...

  6. Hadoop基本架构

    Hadoop基本架构 什么是Hadoop? Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.有高容错性的特点,并且设计用来部署在低廉 ...

  7. Hadoop系统架构

    一.Hadoop系统架构图 Hadoop1.0与hadoop2.0架构对比图 YARN架构: ResourceManager –处理客户端请求 –启动/监控ApplicationMaster –监控N ...

  8. hadoop lambda_Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm

    hadoop lambda 最近,一群人要求我详细介绍我为我们的书<分布式实时计算的风暴蓝图>撰写的Druid / Storm集成. 德鲁伊很棒. 风暴很棒. 两者一起解决了实时维查询/聚 ...

  9. Hadoop核心架构(1)

    在大数据的发展过程中,出现了一批专门应用与大数据的处理分析工具,如Hadoop,Hbase,Hive,Spark等,我们先从最基础的Hadoop开始进行介绍 Hadoop是apache基金会下所开发的 ...

  10. Hadoop YARN架构设计要点

    YARN是开源项目Hadoop的一个资源管理系统,最初设计是为了解决Hadoop中MapReduce计算框架中的资源管理问题,但是现在它已经是一个更加通用的资源管理系统,可以把MapReduce计算框 ...

最新文章

  1. 马化腾与中国知名科学家联手发起“科学探索奖”
  2. swift_037(Swift之Swift和OC混编)
  3. 数据库系统概论:第六章 关系数据库理论
  4. lixuxmint系统定制与配置(4)-应用安装
  5. python爬虫实践 —— 一、入门篇
  6. Taro+react开发(17)--注意编译
  7. Linux Shell脚本专栏_查看网卡的实时流量_06
  8. python 取日期_python取出所有的日期
  9. Ubuntu 多版本Cuda(8.0,9.0)以及CuDnn安装
  10. Redis高效的数据结构及特殊性
  11. android标题栏添加按钮_几行代码实现Android通用标题栏(轻松向左右两侧添加Menu)...
  12. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化...
  13. 基于python的税额计算器
  14. 测回角值计算用计算机,土木工程测量6-计算题库及参考答案
  15. Office之word如何把尾注的上标加括号,尾注里的上标改为普通数字
  16. ECNU || 梵高先生
  17. sqlite3安全性研究
  18. 数据结构考研复习 | Fibonacci数列的递归、数组、迭代(循环)实现及其时间复杂度
  19. 88skins 国内CSGO开箱网站已合并至88steam
  20. solr直接对pdf、word等建索引

热门文章

  1. 当程序员一天天老去.哪些人晚景凄凉
  2. C#+Access+asp.net+HTML等教学计划管理系统
  3. 欧鹏浏览器html5用不了,javascript在火狐浏览器起作用而在欧朋浏览器下不起作用...
  4. python绘制概率密度曲线_python添加概率密度曲线-女性时尚流行美容健康娱乐mv-ida网...
  5. 单臂路由实现VLAN间通信(不同VLAN,不同网段互访)
  6. python文本挖掘与分析:热剧《延禧攻略》用户评论分析
  7. Python Numpy库教程(超详细)
  8. 利用颜色线性渐变实现-透明玻璃效果按钮
  9. scratch少儿编程节假日主题课:父亲节的贺卡
  10. ipmitool命令总结