其他分享
首页 > 其他分享> > 大数据--hadoop生态--HDFS学习总结

大数据--hadoop生态--HDFS学习总结

作者:互联网

目录

一:HDFS主要组件及其功能

二:SecondaryNameNode工作情况

三:HDFS的数据存储原理

3.1 冗余数据保存

3.2 数据存取策略

四:HDFS数据读写过程

4.1 HDFS读数据过程(重点)

4.2 HDFS写数据的过程

五:HDFS的HA(高可用)原理

5.1 HDFS HA来源

5.2 HDFS HA采用的方法

5.3 HDFS 待命名称节点工作原理

六:HDFS常用命令


一:HDFS主要组件及其功能

        包括NameNode, SecondaryNmaeNode , DataNode.

其中,名称节点(NameNode)负责管理分布式文件系统的命名空间,保存了两个核心的数据结构,FsImage和EditLog

FsImage:用于维护文件系统树以及文件树中的所有的文件和文件夹的元数据。

操作系统日志EditLog: 记录了所有针对文件的创建,删除,重命名等操作。

名称节点记录了各个块所在的数据节点的位置信息

FsImage文件包含文件系统中

的所有目录和文件inode的序列化形式。每个inode是一个文件或者目录的元数据的内部访问。

二:SecondaryNameNode工作情况

     1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件上来。

     2)SecondaryNameNode通过http get方式从NameNode上获取FsImage和EditLog文件,并下载到本地的相应目录下。

     3)SecondaryNameNode将下载下 来的FsImage载入到内存,然后一条一条地 执行EditLog文件中的各项更新操作,使得 内存中的FsImage保持最新;这个过程就是 EditLog和FsImage文件合并

     4)SecondaryNameNode执行完(3 )操作之后,会通过post方式将新的 FsImage文件发送到NameNode节点上

     5)NameNode将从SecondaryNameNode接受到新的FsImage替换旧的EditLog文件,这个过程EditLog就变小了。

    secondaryNameNode作用:

    名称节点保存了所有的元数据信息,其中最核心的两大数据结构是FsImage和EditLog.如果这两个文件发生损坏,那么整个HDFS实例将失效。因此HDFS设置了备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上。当名称节点出错时候,就可以根据备份服务器SecondaryNameNode上的FsImage和EditLog数据进行恢复

     专门用于FsImage和Edits的合并

三:HDFS的数据存储原理

3.1 冗余数据保存

     HDFS作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上

    这种多副本保存方式优点:

3.2 数据存取策略

数据存放:

数据读取:

    HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID。

     当客户端读取数据时候,从名称节点获得得数据块不同副本得存放位置列表,列表中包含了副本所在得数据节点,可以调用API来确定客户端和这些数据节点所属得机架ID。当发现某个数据块副本对应得机架ID和客户端对应机架ID相同时候,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据。

数据错误与恢复:

    HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看作一种常态,而不是异常,设计了相应的机制检测数据错误和进行自动恢复,主要包括:名称节点出错,数据节点出错和数据出错。

四:HDFS数据读写过程

4.1 HDFS读数据过程(重点)

首先介绍几个相关概念:

读数据过程:

4.2 HDFS写数据的过程

写数据过程:

五:HDFS的HA(高可用)原理

     相对于HDFS1.0 , HDFS2.0增加了HDFS HA和HDFS 联邦等新特性。

5.1 HDFS HA来源

     为了解决单点故障问题。单点故障问题:在HDFS1.0中,只存在一个名称节点,一旦这个唯一的名称节点发生故障,就会导致整个集群变得不可用。即使hdfs1.0中有secondaryNameNode,可以周期型从名称节点获取命名空间镜像文件(FsImage)和修改日志(EditLog),进行合并后发送给名称节点,替换原来的FsImage,以防止EditLog过大,导致名称节点失败恢复时需要消耗过长时间。合并后的命名镜像文件FsImage在第二名称节点中也会保存一份,当名称节点失效时,可以使用第二名称节点中的FsImage进行恢复。但是第二名称节点无法提供“热备份”功能,即在名称节点发生故障的时候,系统无法实时切换到第二名称节点立即对外提供服务,依然需要进行停机恢复

5.2 HDFS HA采用的方法

    HDFS 2.0采用高可用(HA)架构,在一个典型的HA集群中,一般设置两个名称节点,其中一个名称节点处于“活跃”状态,另外一个处于“待命”状态。也就是说处于待命状态的名称节点提供了“热备份”,一旦活跃节点出现故障,就可以立即切换到待命名称节点。不会影响系统的对外服务。

5.3 HDFS 待命名称节点工作原理

    活跃名称节点的状态信息必须实时同步到待命名称节点。状态同步借助于一个共享存储系统例如zookeeper.活跃名称节点将更新数据写入共享存储系统,待命名称节点会一直监听该系统,一旦发现有新的写入,就立即从公共存储系统读取这些数据加载自己内存中,从而保证与活跃节点状态完全同步。注意:zookeeper可以保证任意时刻只有一个名称节点提供对外服务。

六:HDFS常用命令

hdfs dfs -ls / 查看hdfs根目录

put命令

hdfs dfs -put file1.txt  /user/hive/warehouse  (首先在Linux系统上进入file1.txt所对应的目录下面,然后执行该命令)

get命令

hdfs dfs -put /user/hive/warehouse/test.db (此时hdfs上面的文件会导出到当前目录下面)
 

 

 

 

 

 

标签:HDFS,--,hadoop,FsImage,名称,数据,节点,客户端
来源: https://blog.csdn.net/yezonghui/article/details/117436747