hdfs各个节点的工作机制以及hdfs的总结2020-08-17

hdfs详解

hdfs的写流程

在这里插入图片描述
1、向namenode请求上传文件

2、namenode会去检查元数据(目录、权限、文件),并返回给客户端一个响应。客户端可以上传文件

3、客户端向namenode请求上传第一个块

4、namenode查询元数据,根据负载均衡策略来决定块的存储节点。返回给客户端(dn1、dn2、dn3)

​ 块的副本机制(副本选择策略):近远远

​ 1、第一个块,如果客户端就是集群的节点,则本机就作为第一个块的存储节点,如果不是,则选择一个与客户端近的节点作为块的存储节点。

​ 2、第二个块考虑跨机架挑选一个节点,增加副本的可靠性

​ 3、第三个块考虑与第二个块同机架的不同datanode

​ 2.7之前的策略:近远近

​ 3、第三个块考虑的是与第一个块同机架的不同机器

5、请求建立块的上传通道(client-dn1-dn2-dn3)

6、返回成功应答

7、上传块

8、循环以上步骤,从第3步开始

9、向namenode返回上传成功的消息,namenode更新元数据

问题思考:

1、传输blk1的过程中,dn3如果挂了,怎么处理???不做任何处理。如果dn3又重新启动了,怎么处理???

2、客户端建立连接时,dn3连不上怎么办???向namenode重新要3个节点

3、传输过程中,如果packet传输出错,怎么处理???包重新传输,最多重新传输4次

4、如果blk1、blk2上传成功了,但是blk3上传失败了,怎么处理???上传blk3的时候,dn1挂了,怎么处理???

整个文件被标记为无效,下次datanode上报块报告时,检查出那些节点上存在该文件的块,通知这些datanode删除块。

5、上传blk3的过程中,如果客户端挂了怎么处理??? 超时机制

hdfs的读流程

在这里插入图片描述
在这里插入图片描述

各个节点的工作机制

namenode的工作机制

namemode是什么?好处?作用

概念

NameNode为一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。
NameNode 管理文件系统的命名空间,它维护着文件系统树以及整棵树内所有的文件和目录.

作用

这些信息存储在两个文件中,一个是 fsimage,一个是 editlog。同时记录着每个文件中各个块所在的数据节点信息,不永久保存块位置信息,只有启动时由数据节点上报.

fsimage :保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。

对于文件来说包括了“副本级别”、修改时间、访问时间、访问许可、块大小、组成一个文件的块等;

对于目录来说包括修改时间、访问许可和额配元数据等信息;

简单的说,Fsimage就是在某一时刻,整个hdfs 的快照,就是这个时刻hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,各自的副本个数等。

editlog :主要是在NameNode已经启动情况下对HDFS进行的各种写操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。

namenode的职责:

1、管理元数据
2、响应客户端的IO请求
3、管理datanode

元数据管理的三种形态

1、内存元数据
2、fsimage(安全性考虑,定期将元数据存入磁盘)
3、操作日志edits

namenode 的启动过程:

namenode启动之后:
1、加载fsimage()
2、加载edits
3、保存fisimage
4、namenode会直接进入安全模式
5、等待datanode启动并报告块的信息
6、datanode启动并发送块报告
7、namenode统计块信息,检查配置项,当超过0.999f时,等待15秒,退出安全模式

在这里插入图片描述

secondarynamenode的职责:

Secondary NameNode:它究竟有什么作用?
在Hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一。从它的名字上看,它给人的感觉就像是NameNode的备份。但它实际上却不是。很多Hadoop的初学者都很疑惑,Secondary NameNode究竟是做什么的,而且它为什么会出现在HDFS中。因此,在这篇文章中,我想要解释下Secondary NameNode在HDFS中所扮演的角色。

从它的名字来看,你可能认为它跟NameNode有点关系。没错,你猜对了。因此在我们深入了解Secondary NameNode之前,我们先来看看NameNode是做什么的。

NameNode
NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列
只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。在这种情况下就会出现下面一些问题:

edit logs文件会变的很大,怎么去管理这个文件是一个挑战。
NameNode的重启会花费很长时间,因为有很多改动[笔者注:在edit logs中]要合并到fsimage文件上。
如果NameNode挂掉了,那我们就丢失了很多改动因为此时的fsimage文件非常旧。[笔者注: 笔者认为在这个情况下丢失的改动不会很多, 因为丢失的改动应该是还在内存中但是没有写到edit logs的这部分。]
因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。这跟Windows的恢复点是非常像的,Windows的恢复点机制允许我们对OS进行快照,这样当系统发生问题时,我们能够回滚到最新的一次恢复点上。

现在我们明白了NameNode的功能和所面临的挑战 - 保持文件系统最新的元数据。那么,这些跟Secondary NameNode又有什么关系呢?

Secondary NameNode
SecondaryNameNode就是来帮助解决上述问题的,它的职责是合并NameNode的edit logs到fsimage文件中。

上面的图片展示了Secondary NameNode是怎么工作的。

首先,它定时到NameNode去获取edit logs,并更新到fsimage上。[笔者注:Secondary NameNode自己的fsimage]
一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。
Secondary NameNode的整个目的是在HDFS中提供一个检查点。它只是NameNode的一个助手节点。这也是它在社区内被认为是检查点节点的原因。

现在,我们明白了Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。所以从现在起,让我们养成一个习惯,称呼它为检查点节点吧。

后记
这篇文章基本上已经清楚的介绍了Secondary NameNode的工作以及为什么要这么做。最后补充一点细节,是关于NameNode是什么时候将改动写到edit logs中的?这个操作实际上是由DataNode的写操作触发的,当我们往DataNode写文件时,DataNode会跟NameNode通信,告诉NameNode什么文件的第几个block放在它那里,NameNode这个时候会将这些元数据信息写到edit logs文件中。
辅助namenode来进行日志的合并—— checkpoint

snn的工作机制,即checkpoint的工作过程

1、snn检查是否可以做checkpoint,并通知namenode
2、namenode立即回滚edits(将之前的操作日志重新命名并且创建一个新的日志文件,以便snn进行存储)
3、namenode上传日志和镜像到snn
4、内存合并元数据,先加载fsimage,后执行edits(将fsimage和edits加载到内存中并进)
5、将内存中合并后的数据溢写到磁盘
6、将f磁盘文件(fsimage。checkpoint)上传到namenode
7、namenode将上传的文件(合并后的数据)校验
8、将checkpoint文件改名
在这里插入图片描述

日志和镜像文件的查看

日志的查看:

hdfs oev
在这里插入图片描述
在这里插入图片描述

镜像文件的查看

在这里插入图片描述

思考

在这里插入图片描述
元数据备份多份
在这里插入图片描述

datenode工作机制

datanode的职责:
1、管理用户提交的数据
2、块报告机制(报告机器的使用情况(块的存储情况、机器负载情况))
3、心跳机制(只报告是否正常工作)
在这里插入图片描述

网络拓扑

在这里插入图片描述

机架感知

在这里插入图片描述

hdfs总结

1、hdfs的特点
高扩展性、高容错、移动计算而不是移动数据
不适合小文件、不适合低延迟的需求

2、hdfs的安装步骤
先决条件:
1.创建一个条件
2.jdk
3.关闭防火墙
4.静态ip
5.hostname
6.hosts
7.ssh免密
安装步骤:
1 解压安装包
2 配置环境变量
3 配置高级hadoop环境
hadoop的运行环境hadoop-env.sh
hadoop的核心配置 core-site.xml
hadoopde的核心配置hdfs-site.xml
yarn的核心配置yarn-site.xml
mapreduce的核心配置mapred-site.xml
slaves小弟节点
hdfs和集群可否分开???
可以,启动的时候,分别在namenode和resourcemanager上执行start-命令

分发安装包
scp 命令
namenode的初始化——>实际上就是生成了一个新的fsimage文件

重新初始化——>要删除所有节点上的dfs目录

启动集群
在这里插入图片描述
hadoop的端口号:
8020/9000:对客户端暴露的端口号
50070/50090:web ui 的监控端口
50010:datanode对客户端暴露的端口

803x:yarn相关的端口号
8032 :
8088:yarn web ui 的监控端口

100020/19888:jobhistoryserver相关的端口号

hdfs shell
hdfs dfs -
hadoop fs -
hdfs dfsadmin -
oev
oiv
fsck

读写流程、原理、具体实现(重点)

工作机制:
namenode的职责
hdfs的启动过程
namenode的工作机制
secondarynamenode的工作机制 checkpoint的过程
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值