Hadoop基础-Hdfs各个组件的运行原理介绍

          Hadoop基础-Hdfs各个组件的运行原理介绍

                                 作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.NameNode工作原理(默认端口号:50070)

1>.什么是NameNode

  NameNode管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。NameNode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建。

2>.Name启动流程

 

 

NameNode职责:1>.负责客户端请求的响应2>.元数据的管理(查询,修改)NameNode对数据的管理采用了三种存储形式:1>.内存元数据(NameSystem)2>.磁盘元数据镜像文件3>.数据操作日志文件(可通过日志运算出元数据)元数据存储机制:1>.内存中有一份完整的元数据(内存meta data)2>.磁盘有一个“准完整”的元数据镜像(fsimage)文件(在namenode的工作目录中)3>.用于衔接内存metadata和持久化元数据镜像fsimage之间的操作日志(edits文件)NameNode启动流程概述:1>.第一次启动NameNode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。2>.客户端对元数据进行增删改的请求3>.NameNode记录操作日志,更新滚动日志。4>.namenode在内存中对数据进行增删改查在NameNode端的工作流程如下:1>.Namenode始终在内存中保存metedata,用于处理“读请求” 到有“写请求”到来时,namenode会首先写edits到磁盘,即向edits文件中写日志,当客户端操作成功后,相应的元数据会更新到内存matedata中,并且向客户端返回.2>.Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。查看namenode版本号1>.在/home/yinzhengjie/data/hadoop/hdfs/ha/dfs/name1/current这个目录下查看VERSION文件,[yinzhengjie@s101 ~]$ cat /home/yinzhengjie/data/hadoop/hdfs/ha/dfs/name1/current/VERSION #Mon Aug 13 14:45:15 EDT 2018namespaceID=1555352651clusterID=CID-58730c19-c019-4f4c-97f1-0eb80eab6071cTime=0storageType=NAME_NODEblockpoolID=BP-1140132172-172.30.1.101-1534178655035layoutVersion=-63[yinzhengjie@s101 ~]$ 2>.namenode版本号具体解释2.1>.namespaceID在HDFS上,会有多个Namenode,所以不同Namenode的namespaceID是不同的,分别管理一组blockpoolID。2.2>.clusterID集群id,全局唯一2.3>.cTime属性标记了namenode存储系统的创建时间,对于刚刚格式化的存储系统,这个属性为0;但是在文件系统升级之后,该值会更新到新的时间戳。2.4>.storageType属性说明该存储目录包含的是namenode的数据结构。2.5>.blockpoolID:一个block pool id标识一个block pool,并且是跨集群的全局唯一。当一个新的Namespace被创建的时候(format过程的一部分)会创建并持久化一个唯一ID。在创建过程构建全局唯一的BlockPoolID比人为的配置更可靠一些。NN将BlockPoolID持久化到磁盘中,在后续的启动过程中,会再次load并使用。2.6>.layoutVersion是一个负整数。通常只有HDFS增加新特性时才会更新这个版本号。namenode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。具体配置如下:[hdfs-site.xml]<property><name>dfs.namenode.name.dir</name><value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>                                        <--注意,这个值咱们也可以写绝对路径,我测试过好使!--></property>

3>.NameNode注意事项

  第一:如下图所示,第一次启动namenode格式化后,创建fsimage和edits文件

  第二:重启hdfs分布式文件系统时,默认会自动滚动编辑日志,如下图所示:

   第三:如果不是第一次启动,直接加载编辑日志和镜像文件到内存,如下图所示:

 

   想要了解更多关于镜像文件和编辑日志信息,可参考:https://www.cnblogs.com/yinzhengjie/p/9098092.html。

 

二.SecondaryNameNode工作原理(默认端口号:50090)

1>.什么是SecondaryNameNode

  它是辅助namenode的进程,Secondary NameNode,为主namenode内存中的文件系统元数据创建检查点,Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。

2>.SecondaryNameNode有两个作用

  2.1>.镜像备份,即备份fsimage(fsimage是元数据发送检查点时写入文件);
  2.2>.日志与镜像的定期合并。简单的说是将Namenode中edits日志和fsimage合并,防止如果Namenode节点故障,namenode下次启动的时候,会把fsimage加载到内存中,应用edits log,edits log往往很大,导致操作往往很耗时。(这也是namenode容错的一套机制)
  以上两个过程同时进行,称为checkpoint(检查点)。 

3>.NameNode+SecondaryNameNode的工作原理

第一阶段:NameNode启动1>.第一次启动NameNode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。2>.客户端对元数据进行增删改的请求3>.NameNode记录操作日志,更新滚动日志。4>.NameNode在内存中对数据进行增删改查第二阶段:Secondary NameNode工作1>.Secondary NameNode询问NameNode是否需要checkpoint。直接带回NameNode是否检查结果。2>.Secondary NameNode请求执行checkpoint。3>.NameNode滚动正在写的edits日志4>.将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode5>.Secondary NameNode加载编辑日志和镜像文件到内存,并合并。6>.生成新的镜像文件fsimage.chkpoint7>.拷贝fsimage.chkpoint到NameNode8>.NameNode将fsimage.chkpoint重新命名成fsimage

   检查点和编辑日志存放位置:

chkpoint检查时间参数设置1>.通常情况下,SecondaryNameNode每隔一小时执行一次。[hdfs-default.xml]<property><name>dfs.namenode.checkpoint.period</name><value>3600</value></property>2>.一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。<property><name>dfs.namenode.checkpoint.txns</name><value>1000000</value><description>操作动作次数</description></property><property><name>dfs.namenode.checkpoint.check.period</name><value>60</value><description> 1分钟检查一次操作次数</description></property>SecondaryNameNode目录结构Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。在/home/yinzhengjie/hadoop-2.7.3/data/hdfs/dfs/namesecondary/current这个目录中查看SecondaryNameNode目录结构。edits_0000000000000000001-0000000000000000002fsimage_0000000000000000002fsimage_0000000000000000002.md5VERSIONSecondaryNameNode的namesecondary/current目录和主namenode的current目录的布局相同。好处:在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。方法一:将SecondaryNameNode中数据拷贝到namenode存储数据的目录;方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode中数据拷贝到namenode目录中。

 

 

三.DataNode工作原理

1>.什么是DataNode

  用大白话来说,NameNode用来存储一些元数据信息的,而DataNode却是用来存放真实数据的。

2>.DataNode的工作机制

 

   如上图所示,DataNode和NameNode的通信机制如下:

    1>.一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
    2>.DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。
    3>.心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。
  集群运行中可以安全加入和退出一些机器。这种专业术语叫做集群的服役和退役。关于如何服役和退役详情请参考我之前分享的笔记:https://www.cnblogs.com/yinzhengjie/p/9101070.html

DataNode的校验和是为了保证数据的完整性:1>.当DataNode读取block的时候,它会计算checksum;2>.如果计算后的checksum,与block创建时值不一样,说明block已经损坏;3>.client此时会读取其他DataNode上的block;4>.datanode在其文件创建后周期验证checksum;5>.不论数据是否发生改变,DataNode都会定期(默认是一小时)上报数据;掉线时限参数设置datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout  = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval。而默认的dfs.namenode.heartbeat.recheck-interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。[hdfs-site.xml]<property><name>dfs.namenode.heartbeat.recheck-interval</name><value>300000</value></property><property><name> dfs.heartbeat.interval </name><value>3</value></property>datanode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本。具体配置如下:[hdfs-site.xml]<property><name>dfs.datanode.data.dir</name><value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value></property>

 

 

四.HDFS扫盲(跟你们小伙伴聊天别被他这些简单问题问到了)

1>.请列出正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?

 

1>.NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
2>.SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
3>.DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
4>.ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
5>.NodeManager(TaskTracker)执行任务。
6>.DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
7>.JournalNode 高可用情况下存放namenode的editlog文件。

2>.

 

3>.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JPA入门例子(采用JPA的hibernate实现版本)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 &#xff08;1&#xff09;、JPA介绍&#xff1a; JPA全称为Java Persistence API &#xff0c;Java持久化API是Sun公司在Java EE 5规范…

IDEA详细配置与使用

文章目录一、IntelliJ IDEA 介绍二、查看安装目录结构三、查看设置目录结构3.1 config目录3.2 system目录四、设置显示常见的视图1.工程界面展示2.如何删除模块3.查看项目配置五、常用配置1.Appearance & Behavior2. Editor - General3. Editor – Font4. Editor – Color …

M1905

11.09 11&#xff1a;00------102万                          11.09 14:00---103万 11.12 16:00------103万                          11.19 16:00---94万 11.20 16:00----94.9万          …

前端又要失失失失失失失失失业了!

1. 祸起 看到标题&#xff0c;切图仔们又是菊花一紧。前几天微软刚刚开源Sketch2Code&#xff0c;让UI草图转化成HTML代码。切图仔瑟瑟发抖。 还没等切图仔调整好心情&#xff0c;号称H5代码生成工具的H5DS也开源了最新的代码。 尼玛&#xff0c;H5代码都可以一键生成了&#x…

SpringBoot 之环境搭建

见: http://bbs.itmayiedu.com/article/1491835651684 1. 什么是**SpringBoot&#xff1f;** Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人…

vue项目中axios的封装

1.安装 1 npm install axios --save 2.新建http.js&#xff0c;封装拦截器以及多种请求方式 1 import axios from axios;2 import { Message } from element-ui;3 4 // 请求拦截器5 axios.interceptors.request.use( 6 config > {7 //发送请求前需要做什么&#xff0c…

【2022】Java基础面试真题

文章目录1. Java基础1.1 为什么Java代码可以实现一次编写、到处运行&#xff1f;1.2 一个Java文件里可以有多个类吗&#xff08;不含内部类&#xff09;&#xff1f;1.3 说一说你对Java访问权限的了解1.4 介绍一下Java的数据类型1.5 int类型的数据范围是多少&#xff1f;1.6 请…

IntelliJ IDEA 中 右键新建时,选项没有Java class的解决方法和具体解释

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我是在别人问我的时候&#xff0c;才发现还可以有这个问题&#xff0c;主要是他新项目直接打开&#xff0c;什么都没配置&#xff0c;就打…

设计模式大集锦 程序员面试全攻略

摘要&#xff1a;无论你是参与Java面试还是C#面试&#xff0c;设计模式和软件设计问题在程序员面试中是必不可少的一部分。编程和设计技两者相得益彰&#xff0c;一名出色的程序员也是一名出色的设计师&#xff0c;他们懂得如何利用代码来解决问题或者软件设计&#xff0c;但是…

【2022】多线程并发编程面试真题

文章目录4. 多线程4.1 创建线程有哪几种方式&#xff1f;4.2 说说Thread类的常用方法4.3 run()和start()有什么区别&#xff1f;4.4 线程是否可以重复启动&#xff0c;会有什么后果&#xff1f;4.5 介绍一下线程的生命周期4.6 如何实现线程同步&#xff1f;4.7 说一说Java多线程…

苹果面试8大难题及答案

摘要&#xff1a;苹果这样的公司通常会在面试过程中向求职者抛出一些逻辑的问题来考研面试者&#xff0c;所以&#xff0c;如果你对进入苹果感兴趣&#xff0c;或者向往类似的公司&#xff0c;又或者只是对逻辑问题感兴趣&#xff0c;这些面试难题值得你仔细研究。 导读&#x…

ROS系统玩转自主移动机器人(3)-- 开源机器人结构介绍

ROS系统玩转自主移动机器人&#xff08;3&#xff09;-- 开源机器人结构介绍 本机器人机械结构设计相关的所有设计文件下载地址为&#xff1a;传送门 其中包含&#xff1a;三维造型设计文件&#xff08;所有零件装配效果&#xff09;&#xff08;tips&#xff1a;基于Solidwork…

【2022】JVM常见面试真题详解

文章目录5. JVM5.1 JVM包含哪几部分&#xff1f;5.2 JVM是如何运行的&#xff1f;5.3 Java程序是怎么运行的&#xff1f;5.4 本地方法栈有什么用&#xff1f;5.5 没有程序计数器会怎么样&#xff1f;5.6 说一说Java的内存分布情况5.7 类存放在哪里&#xff1f;5.8 局部变量存放…

如何在面试时写出高质量的代码

摘要&#xff1a;有些程序员由于平时没有养成良好的编程习惯&#xff0c;在面试时写出的代码质量不高&#xff0c;最终遗憾地与心仪的公司和职位失之交臂。如何在面试时能写出高质量的代码&#xff0c;是很多程序员关心的问题。 程序员在职业生涯中难免要接受编程面试。有些程序…

IntelliJ IDEA添加jar包

见&#xff1a;http://blog.csdn.net/a153375250/article/details/50851049 以JDBC-MySQL驱动包为例 1、在IntelliJ IDEA中打开要添加jar包的Project 2、File – Project Structure如下图 3、选择Moudules – 再选择Dependencies如下图 4、选中Moudule source – 然后点击2处号…

Python3 与 C# 并发编程之~ 进程篇

上次说了很多Linux下进程相关知识&#xff0c;这边不再复述&#xff0c;下面来说说Python的并发编程&#xff0c;如有错误欢迎提出&#xff5e; 如果遇到听不懂的可以看上一次的文章&#xff1a;https://www.cnblogs.com/dotnetcrazy/p/9363810.html 官方文档&#xff1a;https…

Spring全家桶面试真题

文章目录1. Spring Boot1.1 说说你对Spring Boot的理解1.2 Spring Boot Starter有什么用&#xff1f;1.3 介绍Spring Boot的启动流程1.4 Spring Boot项目是如何导入包的&#xff1f;1.5 请描述Spring Boot自动装配的过程1.6 说说你对Spring Boot注解的了解2. Spring2.1 请你说说…

WSDL测试webservice接口记录

收到一个事情&#xff0c;需要对接第三方API&#xff0c;对方给了个service&#xff0c;看了一下&#xff0c;原来是webservices的。 上一次测试webervice的接口&#xff0c;还是至少八九年前的时候了&#xff0c;这种相对比较老旧的也好久不在使用。 于是&#xff0c;简单搞了…

idea窗口下方滚动条不明显设置

在使用idea时&#xff0c;下方的滚动条老是显示不明显&#xff0c;每次点击拖拽都很费劲&#xff0c;在网上找了很多相关设置&#xff0c;最后确定了一个最好的办法解决问题&#xff1a; Shift &#xff08;上档&#xff09; 鼠标滚动&#xff0c;这样就可以横向翻滚了&#…

把握本质规律——《数学之美》作者吴军

无论是互联网&#xff0c;还是手机、电视&#xff0c;现代通信都遵循信息论的规律&#xff0c;整个信息论的基础都是数学。搜索引擎、语音识别、机器翻译也都是我们生活中离不开的技术&#xff0c;数学也是解决这些问题的最好工具。在《浪潮之巅》出版后&#xff0c;吴军将蕴含…