首页 > BigData > 【hadoop】hdfs知识小结

【hadoop】hdfs知识小结

2018年3月5日

大数据生态圈,hadoop是整个生态的基础,而hdfs是其分布式文件系统,是学习大数据的起点。

 

1.概况

 

Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商品硬件上运行。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的差异很大。HDFS具有高度容错能力,旨在部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。HDFS放宽了一些POSIX要求来启用对文件系统数据的流式访问。

 

2.NameNode和DataNodes

 

HDFS具有主/从架构。NameNode是存储源数据和访问控制的主节点,datanode是用来存储数据的自己点。HDFS文件被分成一个或多个块,这些块存储在一组DataNode中。NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。它还确定块到DataNode的映射。DataNode负责提供来自文件系统客户端的读取和写入请求。DataNode还执行块创建,删除,并根据来自NameNode的指令进行复制。

集群中单个NameNode的存在极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁者和存储库。客户端数据永远不会流经NameNode。

 

3.文件系统命名空间

 

hdfs使用的是传统的分层文件系统组织。使用方式也类似,客户端可以创建、修改、删除目录或者文件。这个系统的名称空间由namenode维护。

 

4.数据复制

 

  • hdfs通过数据复制的方式实现容错,主要通过负责因子和块大小配置。负责因子负责控制数据的备份数量,块大小控制hdfs分割文件成若干块时候块的大小。
  • namenode通过心跳监控datanode的存活,通过块报告监控整个系统所有块的情况。
  • namenode通过datanode的机架标识,通过把副本放置到不同机架的策略保证数据安全。
  • 由于NameNode不允许DataNode具有同一个块的多个副本,因此创建的最大副本数是当时的DataNode总数。
  • 为了最大利用宽带,HDFS会尝试为读取的客户端提供最近的副本。

 

5.文件系统元数据的持久性

 

HDFS名称空间由NameNode存储。NameNode使用名为EditLog的事务日志来持久记录文件系统元数据发生的所有更改。例如,在HDFS中创建一个新文件会导致NameNode向EditLog中插入一条记录,指出这一点。同样,更改文件的复制因子会导致将新记录插入到EditLog中。NameNode使用其本地主机OS文件系统中的文件来存储EditLog。整个文件系统名称空间(包括块到文件和文件系统属性的映射)存储在名为FsImage的文件中。FsImage也作为文件存储在NameNode的本地文件系统中。

namenode被启动或者通过配置的检查点触发时候,它从磁盘读取FsImage和EditLog,将EditLog中的所有事务应用到FsImage的中,并将此新版本FsImage刷新到磁盘上。它可以截断旧的EditLog,因为它的事务已经被应用到持久的FsImage。

 

6.稳健性

 

  • 数据磁盘故障:当某个datanode因为故障无法服务后,namenode标记其死亡,并为因此复制因子降低的数据启动复制。
  • 重新平衡:可以通过重新平衡,来重新调整datanode的数据库分布。
  • 数据的完整性:通过校验和来去确定数据库的完整性,错误的数据可以再次从其他副本读取。
  • 元数据磁盘失败:FsImage和EditLog是HDFS的中心数据结构,可以通过维护多套副本或者启用namenode的高可用解决。
  • 快照:快照功能的一种用法可能是将损坏的HDFS实例回滚到先前已知的良好时间点。

 

 

分类: BigData 标签:
本文的评论功能被关闭了.