Hadoop的三大核心组件之HDFS和YARN

Hadoop集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。

(1)HDFS集群:负责海量数据的存储,集群中的角色(看jps)主要有 NameNode / DataNode/SecondaryNameNode。

(2)YARN集群:负责海量数据运算时的资源调度,集群中的角色(看jps)主要有 ResourceManager /NodeManager

(3)MapReduce:它其实是一个应用程序开发包。

一、HDFS

HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。架构如下图:

A、NameNode

NameNode管理着文件系统的命名空间,维护着文件系统树,它不存储真实数据,存储元数据(MetaData)[元数据(FileName、副本数、每一个副本所在的位置...)],NameNode保存在内存中。

元数据信息通过以下文件和过程持久化到磁盘中。

a、fsimage--对元数据定期进行镜像

b、edits--存放一定时间内对HDFS的操作记录

c、checkpoint---检查点

Namenode在内存中保存着整个文件系统的名字空间和文件数据块映射(Blockmap)的映像。这个关键的元数据结构设计得很紧凑,因而一个有4G内存的Namenode足够支撑大量的文件和目录。当Namenode启动时,它从硬盘中读取Editlog和FsImage,将所有Editlog中的事务作用在内存中的FsImage上,并将这个新版本的FsImage从内存中保存到本地磁盘上,然后删除旧的Editlog,因为这个旧的Editlog的事务都已经作用在FsImage上了。这个过程称为一个检查点(checkpoint)。在当前实现中,检查点只发生在Namenode启动时,在不久的将来将实现支持周期性的检查点。

B、DataNode---存储节点,真正存放数据的节点,用于保存数据,保存在磁盘上(在HDFS上保存的数据副本数默认是3个,这个副本数量是可以设置的)。基本单位是块(block),默认128M。

Block块的概念

先不看HDFS的Block,每台机器都有磁盘,机器上的所有持久化数据都是存储在磁盘上的。磁盘是通过块来管理数据的,一个块的数据是该磁盘一次能够读写的最小单位,一般是512个字节,而建立在磁盘之上的文件系统也有块的概念,通常是磁盘块的整数倍,例如几kb。

HDFS作为文件系统,一样有块的概念,对于分布式文件系统,使用文件块将会带来这些好处:

1.一个文件的大小不限制于集群中任意机器的磁盘大小

2.因为块的大小是固定的,相对比不确定大小的文件,块更容易进行管理和计算

3.块同样方便进行备份操作,以提高数据容错性和系统的可靠性

为什么HDFS的块大小会比文件系统的块大那么多呢?

操作数据时,需要先从磁盘上找到指定的数据块然后进行传输,而这就包含两个动作:

1)数据块寻址:找到该数据块的起始位置

2)数据传输:读取数据

也就是说,操作数据所花费的时间是由以上两个步骤一起决定的,步骤1所花费的时间一般比步骤2要少很多,那么当操作的数据块越多,寻址所花费的时间在总时间中就越小的可以忽略不计。所以块设置的大,可以最小化磁盘的寻址开销。但是HDFS的Block块也不能设置的太大,会影响到map任务的启动数,并行度降低,任务的执行数据将会变慢。

★名词扩展:心跳机制、宕机、安全模式(zzy至理名言--“自己看网上都有”)

Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。

C、SecondaryNameNode---辅助节点,用于同步元数据信息。辅助NameNode对fsimage和edits进行合并(冷备份),下面用SNN代替

NameNode 的元数据信息先往 edits 文件中写,当 edits 文件达到一定的阈值(3600 秒或大小到 64M)的时候,会开启合并的流程。合并流程如下:

①当开始合并的时候,SNN 会把 edits 和 fsimage 拷贝到自己服务器所在内存中,开始合并,合并生成一个名为 fsimage.ckpt 的文件。

②将 fsimage.ckpt 文件拷贝到 NameNode 上,成功后,再删除原有的 fsimage,并将 fsimage.ckpt文件重命名为 fsimage。

③当 SNN 将 edits 和 fsimage 拷贝走之后,NameNode 会立刻生成一个 edits.new 文件,用于记录新来的元数据,当合并完成之后,原有的 edits 文件才会被删除,并将 edits.new 文件重命名为 edits 文件,开启下一轮流程。

二、YARN

A、ResourceManager

B、NodeManager

◆MapReduce 在 YARN 上的执行流程:

①client 提交 job,首先找 ResourceManager(ApplicationsManager)分配资源,同时将 jar 包默认拷贝10 份到 hdfs。

②ResourceManager 指 定 一 个 NodeManager 开 启 一 个 container , 在 Container 中 运 行 一 个ApplicationMaster 来管理这个应用程序。

③ApplicationMaster 会计算此个应用所需资源,向 ResourceManager(ResourceScheduler)申请资源。

④ResourceManager 会分配资源,在 NodeManager上开启不同的 container,在container中来运行 map任务或者 reduce 任务

⑤当所有的 task 都执行完了,ApplicationMaster会将结果反馈给客户端,所有工作执行完成之后,ApplicationMaster 就会自行关闭。

⑥如果某个 map 任务或者 reduce 任务失败,ApplicationMaster会重新申请新的 container 来执行这个task。

hadoop的三大核心组件之HDFS和YARN相关推荐

  1. Hadoop的三大核心组件

    Hadoop的三大核心组件分别是: HDFS(Hadoop Distribute File System):hadoop的数据存储工具. YARN(Yet Another Resource Negot ...

  2. Hadoop 使用自动化脚本启动hdfs和yarn

  3. Hadoop核心组件详解—HDFS、YARN、MapReduce

    Hadoop 是一个开源的分布式计算和存储框架,它的作用非常简单,就是在多计算机集群环境中营造一个统一而稳定的存储和计算环境,并能为其他分布式应用服务提供平台支持,相当于在某种程度上将多台计算机组织成 ...

  4. Hadoop三大核心组件及需求催生大数据技术的背景

    Spark是基于内存处理的,所以比基于磁盘处理的Hadoop要快.Hadoop是离线处理的,也就是 先要将数据收集过来,然后基于数据进行处理.Flume是数据采集,可以理解成是一个爬虫框架,把数据比如 ...

  5. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

  6. 【快速入门大数据】hadoop和它的hdfs、yarn、mapreduce

    文章目录 导学 大数据概述 初识Hadoop 概述 核心组件 HDFS分布式文件系统 资源调度系统YARN MapReduce 优势 发展史 生态系统 发行版本选择 企业应用案例 第3章 分布式文件系 ...

  7. 【大数据】Hadoop—— 三大核心组件理论入门 | 完全分布式集群搭建 | 入门项目实战

    文章目录 前言 大数据概述 时代背景 4V特点 大数据思维 核心技术 储存 计算 相关技术 云计算 物联网 Hadoop简介 简介 版本之分 项目生态结构 安装和部署 HDFS 简介 集群结构 实现目 ...

  8. Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn

    文章目录 大数据时代 Hadoop Hadoop概述 Hadoop特性优点 Hadoop国内外应用 Hadoop发行版本 Hadoop集群整体概述 HDFS分布式文件系统 传统常见的文件系统 数据和元 ...

  9. Hadoop、分布式文件系统HDFS、YARN、MAPREDUCE

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 1.1 什么是Hadoop Hadoop名字的由来 作者:Do ...

最新文章

  1. Elasticsearch2.2.0配置文件说明
  2. [ImportNew]Java中的Timer类和TimerTask类
  3. Sublime Text 3 配置浏览器预览路径 localhost
  4. Java初阶知识总结
  5. web.xml里filter-mapping中的dispatcher作用
  6. 前端开发必须要了解的CSS原理
  7. 第35次Scrum会议(11/23)【欢迎来怼】
  8. python实现模拟浏览器登录_Python使用win32com实现的模拟浏览器功能示例
  9. 物以稀为贵-网管狂妄的原因
  10. 打造专业化FTTD布线产品解决方案
  11. 使用中值滤波器对图像降噪
  12. 微信小程序 java家庭个人收支理财记账本springboot
  13. Polymorphism in Overloaded and Overridden Method
  14. 让你的Win10桌面比macOS还简洁漂亮高大上
  15. java 解析uri_Uri详解之——Uri结构与代码提取
  16. 【申博攻略】一.北交计算机学院学术型博士“申请-考核”攻略(招生简章篇)
  17. 穿越鸿蒙电视剧,2020“必追”的5部穿越剧,每一部都有高颜值,剧荒的别错过!...
  18. 上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
  19. 虚拟主机能建立mysql数据库吗_虚拟主机如何创建数据库
  20. 线上频繁GC怎么处理

热门文章

  1. 动态库在线更新导致coredump的问题
  2. thread.Join(); 让主线程等待自己完成
  3. Java 字符串操作的总结1(转载)
  4. ios 使用UINavagationController时,push,pop方法执行的一些方法
  5. 虚拟主机的实现方式,真是简单啊!
  6. JS----JavaScript数组方法及总结
  7. uniapp h5 页面在移动端 遮罩层禁止滚动 --安卓和ios端完美适配(只是测试了部分机型)
  8. x86已安装该产品 剑灵vcredist_MySQL Server v5.7正式版(附安装和配置数据库教程)
  9. 同级子目录下重新设置属性失效
  10. linux区分个系统脚本