hadoop的三大核心组件之HDFS和YARN
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相关推荐
- Hadoop的三大核心组件
Hadoop的三大核心组件分别是: HDFS(Hadoop Distribute File System):hadoop的数据存储工具. YARN(Yet Another Resource Negot ...
- Hadoop 使用自动化脚本启动hdfs和yarn
- Hadoop核心组件详解—HDFS、YARN、MapReduce
Hadoop 是一个开源的分布式计算和存储框架,它的作用非常简单,就是在多计算机集群环境中营造一个统一而稳定的存储和计算环境,并能为其他分布式应用服务提供平台支持,相当于在某种程度上将多台计算机组织成 ...
- Hadoop三大核心组件及需求催生大数据技术的背景
Spark是基于内存处理的,所以比基于磁盘处理的Hadoop要快.Hadoop是离线处理的,也就是 先要将数据收集过来,然后基于数据进行处理.Flume是数据采集,可以理解成是一个爬虫框架,把数据比如 ...
- 2021年大数据Hadoop(二十六):YARN三大组件介绍
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...
- 【快速入门大数据】hadoop和它的hdfs、yarn、mapreduce
文章目录 导学 大数据概述 初识Hadoop 概述 核心组件 HDFS分布式文件系统 资源调度系统YARN MapReduce 优势 发展史 生态系统 发行版本选择 企业应用案例 第3章 分布式文件系 ...
- 【大数据】Hadoop—— 三大核心组件理论入门 | 完全分布式集群搭建 | 入门项目实战
文章目录 前言 大数据概述 时代背景 4V特点 大数据思维 核心技术 储存 计算 相关技术 云计算 物联网 Hadoop简介 简介 版本之分 项目生态结构 安装和部署 HDFS 简介 集群结构 实现目 ...
- Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
文章目录 大数据时代 Hadoop Hadoop概述 Hadoop特性优点 Hadoop国内外应用 Hadoop发行版本 Hadoop集群整体概述 HDFS分布式文件系统 传统常见的文件系统 数据和元 ...
- Hadoop、分布式文件系统HDFS、YARN、MAPREDUCE
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 1.1 什么是Hadoop Hadoop名字的由来 作者:Do ...
最新文章
- Elasticsearch2.2.0配置文件说明
- [ImportNew]Java中的Timer类和TimerTask类
- Sublime Text 3 配置浏览器预览路径 localhost
- Java初阶知识总结
- web.xml里filter-mapping中的dispatcher作用
- 前端开发必须要了解的CSS原理
- 第35次Scrum会议(11/23)【欢迎来怼】
- python实现模拟浏览器登录_Python使用win32com实现的模拟浏览器功能示例
- 物以稀为贵-网管狂妄的原因
- 打造专业化FTTD布线产品解决方案
- 使用中值滤波器对图像降噪
- 微信小程序 java家庭个人收支理财记账本springboot
- Polymorphism in Overloaded and Overridden Method
- 让你的Win10桌面比macOS还简洁漂亮高大上
- java 解析uri_Uri详解之——Uri结构与代码提取
- 【申博攻略】一.北交计算机学院学术型博士“申请-考核”攻略(招生简章篇)
- 穿越鸿蒙电视剧,2020“必追”的5部穿越剧,每一部都有高颜值,剧荒的别错过!...
- 上海亚商投顾:沪指失守3300点 卫星导航概念全天强势
- 虚拟主机能建立mysql数据库吗_虚拟主机如何创建数据库
- 线上频繁GC怎么处理
热门文章
- 动态库在线更新导致coredump的问题
- thread.Join(); 让主线程等待自己完成
- Java 字符串操作的总结1(转载)
- ios 使用UINavagationController时,push,pop方法执行的一些方法
- 虚拟主机的实现方式,真是简单啊!
- JS----JavaScript数组方法及总结
- uniapp h5 页面在移动端 遮罩层禁止滚动 --安卓和ios端完美适配(只是测试了部分机型)
- x86已安装该产品 剑灵vcredist_MySQL Server v5.7正式版(附安装和配置数据库教程)
- 同级子目录下重新设置属性失效
- linux区分个系统脚本