HDFS

作者: wcp嘤嘤嘤 | 来源:发表于2019-10-09 17:10 被阅读0次

    定位

    Hadoop 的分布式文件系统;对应Google的 大数据“三驾马车”的第一驾GFS(Google 文件系统)

    将数以千计的服务器、数以万计的磁盘当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

    手段

    在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储

    架构图

    DataNode

    负责文件数据的存储和读写操作

    将文件数据分割成若干数据块(Block),每个 DataNode 存储一部分数据块

    应用程序客户端并行访问这些数据块

    实践中:HDFS集群有几百到几千台,每台有8台以上磁盘

    一般一个文件块会存三份;一份被保存在写入数据的那台机器上;另一份被保存在本机架内的另一台机器上;最后一份保存在另一个机架的任意一台机器上。

    NameNode

    负责整个分布式文件系统的元数据(MetaData)管理;包括文件路径名、数据块的 ID 以及存储位置等信息

    负责除了 “实际数据块” 以外的所有数据的管理工作

    高可用设计

    数据存储故障容错:存储时计算校验和;读出时,重新计算数据的校验和,不正确就去读备份数据

    磁盘故障容错:DataNode检测到后,将对应的所有BlockID报告给NameNode,NameNode检查在哪有备份;通知对应服务器将对应的Block复制到其他服务器;以保证数据块的备份数满足要求

    DataNode故障容错:DataNode和NameNode通过心跳通信,如果一个DataNode宕机,NameNode就去找对应的Block有哪些,通知有备份的服务器,复制给其他服务器;以保证数据块的备份数满足要求

    NameNode故障容错(单独整理)

    NameNode是HDFS的核心,管理着整个分布式文件系统的元数据(MetaData);所以一旦故障,整个集群所有DataNode数据存着也没用;因为存储是分布式存储的,每个DataNode只是存着一部分数据,根本不完整,没有NameNode,谁也不知道完整的文件是啥样

    主从热备架构图

    主服务器提供服务;从服务器进行热备;通过ZooKeeper进行选举,争夺znode锁资源,决定谁是主服务器

    DataNode会向两个NameNode都发送心跳数据,但是只有主 NameNode 才能向 DataNode 返回控制信息。

    主从 NameNode 之间通过一个共享存储系统shared edits 来同步文件系统的元数据信息

    主 NameNode 服务器宕机,从NameNode 通过 ZooKeeper 升级成为主服务器

    工程上系统高可用的一般策略

    冗余备份

    失效转移

    降级&限流

    相关文章

      网友评论

          本文标题:HDFS

          本文链接:https://www.haomeiwen.com/subject/yybgpctx.html