hadoop及NameNode和SecondaryNameNode工作机制
hadoop及NameNode和SecondaryNameNode工作机制
1.hadoop组成
Common
MapReduce
Yarn
HDFS
(1)HDFS
namenode:存放目录,最重要的(主机)
datanode:存放数据。(从机)
2namenode:“助手”
(2)YARN
ResourceManager
NodeManager
ApplicationMaster
Container
NameNode和SecondaryNameNode工作机制
思考:NameNode中的元数据是存储在哪里的?
首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。那么我们就需要把内存中的数据写到磁盘上。
那么问题来了,如何写呢?如果一次性写入磁盘的话,粗略算一下,如果128G内存的namenode,如果把内存中的数据一次性全部写入磁盘的话大概需要3分钟的时间,那么意味着这三分钟之内,集群不能再接收任何的数据,只能完成写磁盘操作后才能执行其他功能,这无疑不可取。
所以HDFS选择了一种持久化措施,类似于Redis的AOF持久化过程。
工作过程:
每进行一次写磁盘操作,将这个操作追加到edits文件中,然后将内存作为一个状态(内存镜像)保存在硬盘中,然后2nn根据edits中记录的写操作,逐条执行,把edits中的写操作和磁盘中保存的内存镜像FsImage进行合并然后保存下来。
具体过程为:
首先namenode启动,启动的同时,首先将之前的edits.log和FsImage合并加载到内存中,至此namenode启动完毕。如果此时从客户端发来一个增删改请求,首先namenode会记录操作日志、更新滚动日志,先在磁盘中edits文件中追加这条增删改的请求,然后在到内存中进行数据的增删改。
然后2nn定时向namenode请求是否需要CheckPoint,(2nn帮忙完成edits合并成FsImage,CheckPoint类似于“存档”。)
CheckPoint的触发条件:
(1)定时时间到;
(2)Edits中的数据达到一定数量。
如果namenode需要CheckPoint(触发了CheckPoint),那么,2nn向nn请求执行CheckPoint,NameNode收到CheckPoint请求之后,将日志edits重命名,并且建立一个新的正在写的Edits文件,将重命名之后的edits文件拿给2nn去进行合并操作,建立的新的Edits文件用来记录当前客户端发来的写请求。
2nn将之前namenode重命名之后的edits文件和FsImage拷贝到自己的节点上,先将FsImage(内存状态)加载到内存中,然后将edits加载到内存中,进行合并。此时内存恢复的状态就恢复到了当时namenode重命名的日志edits日志结束时候的位置,然后2nn将内存中的数据全部写到磁盘上生成新的FsImage,这里我们称其为FsImage.chkpoint,然后将FsImage.chkpoint拷贝发送到nn节点。这是第一次合并,从第二次开始,2nn就不会加载FsImage了,只需要加载edits就够了。
hadoop及NameNode和SecondaryNameNode工作机制的更多相关文章
- NameNode和SecondaryNameNode工作原理剖析
NameNode和SecondaryNameNode工作原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode中的元数据是存储在那里的? 1>.首先,我 ...
- Hadoop(五)—— HDFS NameNode、DataNode工作机制
一.NN与2NN工作机制 NameNode(NN) 1.当HDFS启动时,会加载日志(edits)和镜像文件(fsImage)到内存中. 2-4.当元数据的增删改查请求进来时,NameNode会先将操 ...
- 【Hadoop】namenode与secondarynamenode的checkpoint合并元数据
Checkpoint Node(检查点节点) NameNode persists its namespace using two files: fsimage, which is the latest ...
- HDFS中NameNode工作机制
引言 NameNode: 存储元数据 管理整个HDFS集群 DataNode: 存储数据的block SecondaryNameNode: 辅助HDFS完成一些事情 NameNode和Secondar ...
- Hadoop系列009-NameNode工作机制
本人微信公众号,欢迎扫码关注! NameNode工作机制 1 NameNode & SecondaryNameNode工作机制 1.1 第一阶段:namenode启动 1)第一次启动namen ...
- 大数据学习之HDFS的工作机制07
1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...
- 图文详解 HDFS 的工作机制及其原理
大家好,我是大D. 今天开始给大家分享关于大数据入门技术栈--Hadoop的学习内容. 初识 Hadoop 为了解决大数据中海量数据的存储与计算问题,Hadoop 提供了一套分布式系统基础架构,核心内 ...
- NameNode 与 SecondaryNameNode 的工作机制
一.NameNode.Fsimage .Edits 和 SecondaryNameNode 概述 NameNode:在内存中储存 HDFS 文件的元数据信息(目录) 如果节点故障或断电,存在内存中的数 ...
- Hadoop的namenode的管理机制,工作机制和datanode的工作原理
HDFS前言: 1) 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: 2)在大数据系统中作用: 为各类分布式运算框架(如:mapr ...
随机推荐
- php + redis 实现关注功能
产品价值 1: 关注功能 2: 功能分析之"关注"功能 3: 平平无奇的「关注」功能,背后有4点重大价值 应用场景 在做PC或者APP端时,掺杂点社交概念就有关注和粉丝功能; 数据 ...
- oracle 19c dataguard silent install (oracle 19c dataguard 静默安装)
环境说明 1.关闭透明大页 RHEL 6: # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled [oracle@rhel 6 ~]$ c ...
- CommandLineRunner和ApplicationRunner
使用场景 我们在开发过程中会有这样的场景:需要在容器启动的时候执行一些内容,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,在Spring框架下是通过ApplicationListen ...
- sql 中 foreach 中传入多个不同的参数问题
<!--查找某用户绑定的药物不良反应报告列表--> <select id="selectSurveyListByUserProId" resultType=&qu ...
- mysql存储过程定义者
1. 执行update mysql.proc set DEFINER='root@%' WHERE NAME='p_update_rim_batch_log' AND db='otherdataonl ...
- rocketmq 架构设计
1 消息存储 消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构.PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面 ...
- 对于home主页的切换处理
经过测试,发现,在home首页的时候,滑动到某一个位置的时候,如果再点击tabbar中的"购物车"."分类"或者"我的"的时候,再点击到首页 ...
- Node.js gulp安装与使用出现问题与解决
此前使用了最新的4.0之后的gulp版本,出现了一系列的问题. 于是想换回3.9版本 (一)本地与全局都需要安装gulp ①首先卸载原来版本 npm uninstall gulp ②本地与全局分别安装 ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- 【JDBC核心】实现 CRUD 操作
实现 CRUD 操作 操作和访问数据库 数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果.其实一个数据库连接就是一个 Socket 连接. java.sql 包中有 ...