035 HDFS的联盟Federation

一:概述

1.单个namenode的局限性

  namespace的限制

    单个namenode所能存储的对象受到JVM中的heap size的限制

  namenode的扩张性

    不可以水平扩张

  隔离性

    单个namenode难以提供隔离性,各自管理自己的数据,只是共享一个存储领域。

  截图:

  

2.好处(可以与HA兼容)

  各自管理各自的数据

  共享数据空间

  

二:配置hdfs-site.xml

1.配置

  配置三台namenode,但是这里只有第一台的配置,将下面的配置再拷贝两份,修改成对应的namenode的机器。

  8022,可以减缓端口号的压力。

  

2.分发

3.格式化namenodes 

$HADOOP_PREFIX_HOME/bin/hdfs namenode -format [-clusterId <cluster_id>]

  需要格式化三台namenode。

  需要有相同的集群名,就是上面的<cluster_id>,就是说namenode所在的机器的格式化语句都是相同的。

  

4.启动集群

  三台机器都可以启动namenode与datanode。

  会发现三台机器都是active。

三:观察效果

  证明,各个namenode互不影响

1.测试一

  

2.在第一台虚拟机上新建目录

  会在第一台上看见这个目录,但是在第二台虚拟机上看不到这个目录。

  

3.然后,修改core

  

4.在第一台虚拟机上新建目录

  但是因为配置文件改成第二台虚拟机,所以,第二台上可以看见被修改了。

  

5.结论

  说名上面的操作结论。

  现在只是修改第一台机器的core,以及操作第一台机器。

  但是在页面上的结果变化需要到core文件中修改的对应的机器上观看datanode的文件变化情况。

  说明,第一台机器可以随意操作集群中想要操作的那个datanode。

  同理,第二台上可以通过配置core中的namenode所在主机,进行修改对应的datanode。

  所以,这样就完成了想要的结果。

  每个namenode都可以操作不同的datanode。

四:结论

  不管操作的是哪台虚拟机,core中的namenode定义的哪台虚拟机,新建的HDFS就属于哪个namenode管理。

  

原文地址:https://www.cnblogs.com/juncaoit/p/6018543.html