栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop之HDFS

Hadoop之HDFS

Hadoop—HDFS HDFS架构及简介

​ HDFS (hadoop Distributed file System) 是hadoop 项目的核心子项目,主要负责集群数据的存储与读取,HDFS是一个主从(master/slave)体系结构的分布式文件系统,HDFS支持传统的层次型文件组织结构,用户或者应用可以创建目录,然后将文件保存在这些目录中。文件系统的名字空间层次结构和大多数现有的文件系统类似,可以通过文件路径对文件执行创建、读取、更新、和删除操作

hdfs的架构如下


1)NameNode (nn):就是Master,它是一个管理者。

​ (1)管理HDFS的名称空间

​ (2)配置副本策略

​ (3)管理数据块(block)映射信息

​ (4)处理客户端读写请求

2)DataNode:就是Slave。NameNode下达命令,DataNode执行实际操作

​ (1)存储实际的数据块

​ (2)执行数据块的读/写操作

3)client:就是客户端。

​ (1)文件切分。文件上传HDFS的时候,client将文件且分为一个一个的block,然后进行上传。

​ (2)与namenode 交互,获取文件的位置信息

​ (3)与DataNode交互,读取或者写入数据

​ (4)Client 提供了一些命令类管理HDFS,比如NameNde格式化

​ (5)client 可以通过一些命令来访问HDFS,比如HDFS增删查改操作

4)SecondaryNameNode:并非NameNode 的热备,当namenode挂掉的时候,它并不能马上替换namenode并提供服务。

​ (1)辅助namenode,分担其工作量,定期合并fsimage和edits,并推送给namenode

​ (2)在紧急情况下,可辅助namenode

HDFS文件块大小

​ HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocsize)来规定,默认大小在hadoop2.x版本中是128M,老版本是64M

为什么块的大小不能设置太小,也不能设置太大?

​ (1)HDFS的块设置太小,会增加寻址时间,程序一直再找块的开始位置

​ (2)如果块的设置太大,从磁盘传输数据的时间会明显大于定位这个块开始的位置所需时间。会导致程序在处理这块数据时,会非常慢。

​ 总结:HDFS块的大小设置主要取决于磁盘传输速率

HDFS的数据流 HDFS写数据流程


​ (1)客户端通过Distributed FileSystem 模块向NameNode请求上传文件,namenode检查目标文件是否存在

​ (2)namenode返回是否可以上传

​ (3)客户端请求第一个block上传到那几个DataNode服务器上

​ (4)namenode返回三个节点,分别为n1,n2,n3

​ (5)客户端通过FSDataOutPutStream 模块请求dn1,上传数据,dn1收到请求会继续访问dn2,然后dn2调用dn3,将这个通道建立完成。

​ (6)dn1,dn2,dn3逐级应答客户端

​ (7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,dn1收到一个packet就会传递给nd2,nd2会传递给dn3;dn1每传一个packet都会放入一个应答队列等待应答

​ (8)当一个Block传输完成之后,客户端再次请求namenode上传第二个block的服务器(重复3-7步)

网络拓扑—节点距离计算

​ 在HDFS写数据的过程中,Namenode 会选择距离待上传数据的最近距离的datanode接收数据,如何计算这个最近距离???

​ 总结:节点距离:两个节点到达最近的共同祖先的距离总和

机架感知(副本存储节点选择)官方连接

​ http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication

HDFS读数据流程


​ (1)客户端通过DistributeFileSystem 向namenode请求下载文件,Namenode 通过检查元数据,找到文件所在的DataNode地址

​ (2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据

​ (3)datanode开始传输数据给客户端(从磁盘里读取数据输入流,以packet为单位来做校验)

​ (4)客户端以packet为单位接收,现在本地缓存,然后再写入目标文件

NameNode 和 SecondaryNameNode

​ NN 和 2NN工作机制

​ 思考:namenode 中的元数据是存储在哪的??

​ HDFS命名空间由Namenode存储。NameNode使用称为EditLog的事务日志来存储持久化记录文件系统元数据发生的每次更改,例如:在HDFS中创建一个新文件会导致Namenode将一条记录插入到EditLog中来表名这一点。更改文件的复制因子(副本数)也会导致新的记录插入到EditLog中,namenode使用本地主机操作系统文件中的文件来存储editlog。整个文件系统命名空间,包括块的映射和文件系统的属性,都会储存在一个名为FsImage的文件中,Fs也作为文件存储在namenode的本地文件系统中。

​ 此处引入一个概念:检查点

​ NameNode 在内存中保存了整个文件系统命名空间和文件 Blockmap 的图像。当 NameNode 启动,或者一个检查点被一个可配置的阈值触发时,它从磁盘读取 FsImage 和 EditLog,将 EditLog 中的所有事务应用到 FsImage 的内存表示中,并将这个新版本刷新到一个磁盘上的新 FsImage。然后它可以截断旧的 EditLog,因为它的事务已应用于持久 FsImage。这个过程称为检查点。检查点的目的是通过获取文件系统元数据的快照并将其保存到 FsImage 来确保 HDFS 具有文件系统元数据的一致视图

​ 思考:什么是2NN 及2NN的作用是什么:

​ namenode节点一旦重启,就需要通过合并FsImage 和 Edits的合并,合成元数据,但是长时间的对元数据进行操作,每条操作都会追加一条记录到Edits文件,会导致该文件数据过大,效率低,恢复元数据时间较长。需要定期合并Fsimage 和 Edits文件,此时如果使用namenode 节点进行合并,又会导致效率低下的问题。此时便引入了一个新的节点SecondaryNameNode,专门用于FsImage 和Edits的合并。

NameNode 的工作机制


1)第一阶段:NameNode启动

​ (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志文件和镜像文件到内存中

​ (2)客户端对元数据进行增删改的请求

​ (3)NameNode记录操作日志,更新滚动日志

​ (4)NameNode在内存中对元数据进行增删改

2)第二阶段:secondaryNameNode工作

​ (1)SNN询问NameNode是否需要Checkpoint(检查点)。直接带回NameNode是否检查结果

​ (2)SNN请求执行checkpoint

​ (3)namenode滚动正在写的Edits日志

​ (4)将滚动前的编辑日志和镜像文件拷贝到SNN

​ (5)SNN 加载编辑日志和镜像文件到内存中,并合并

​ (6)生成新的镜像文件fsimage.chkpoint

​ (7)拷贝fsimage.chkpoint到namenode

​ (8)namenode将fsimage.chkpoint重命名为fsimage

DataNode工作机制


​ (1)一个数据块在DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳

​ (2)DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。

​ (3)心跳是每3秒一次,心跳返回结果带有namenode给该节点DataNode的命令如复制块到另一台机器上,或删除某个数据块,如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。

​ (4)集群运行中可以安全加入和退出一些机器

数据完整性

​ datanode节点上的数据发生损坏时,如何检测?

​ 保证datanode的节点数据完整性的方法

​ (1)当datanode读取block的时候,他会计算CheckSum.

​ (2)如果计算后的checkSum,与block创建是的值不一样,说明block与损坏

​ (3)client 读取其他datanode上的block

​ (4)常见的校验算法crc(32),md5(128),shal(160)

​ (5)datanode在器文件创建后周期验证checksum

掉线时限参数设置:

感谢X硅谷的教学视频

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号