解决内存受限问题:
- HDFS Federation
- 水平扩展,支持多个NameNode
- 所有的NameNode 共享所有的DataNode存储资源
- 每一个NameNode 分管一部分目录(block pool)
解决单点故障问题:
- HDFS HA: 通过NameNode 解决
- 如果 NameNode 发生故障,就切换到备用NameNode
联邦
联邦 HDFS 是 namenode 水平扩展方案。联邦 HDFS 允许每个 namenode之间的命名空间相互独立。数据块池不再切分,所以每个DataNode 需要注册到每个 namenode。
HDFS 的底层存储是可以水平拓展的(底层存储指的是 datanode,当集群存储 空间不够时,可简单的添加机器以进行水平拓展),但 namespace 不可以。 当前的 namespace 只能存放在单个 namenode 上,而 namenode 在内存中存储了整个分布式文件系统中的元数据信息,这限制了集群中数据块,文件和目录的数目。
- 多个 NN 共用一个集群 DN 的存储资源,每个 NN 都可以单独对外提供服 务。
- 每个 NN 都会定义一个存储池,有单独的 id,每个 DN 都为所有存储池提供存储。
- DN 会按照存储池 id 向其对应的 NN 汇报块信息,同时,DN 会向所有 NN汇报本地存储可用资源情况。
- 如果需要在客户端方便的访问若干个 NN 上的资源,可以使用客户端挂载表,把不同的目录映射到不同的 NN,但 NN 上必须存在相应的目录。</