HDFS

2019-10-09  本文已影响0人  wcp嘤嘤嘤

定位

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 升级成为主服务器

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

冗余备份

失效转移

降级&限流

上一篇下一篇

猜你喜欢

热点阅读