HDFS(NameNode)的联盟:Federation

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS(NameNode)的联盟:Federation相关的知识,希望对你有一定的参考价值。

HDFS(NameNode)的联盟:Federation,配置HDFS联盟,多个NameNode节点同时存活,根据代理配置的路由规则处理客户端不同的请求,实现负载均衡,同时也可以缓存更多的元信息,它与HA的区别在于,联盟是多个NameNode都是active,可以存储更多的元信息。

一、联盟与HA的联系和区别

1、也有多个NameNode
2、跟HA的区别:这些NameNode都是active状态
3、作用:
(1)缓存更多的元信息
(2)实现负载均衡

二、搭建HDFS的联盟

(1)规划
NameNode:bigdata112 bigdata113
DataNode:bigdata114 bigdata115
(2)在bigdata112上配置安装hadoop
(2.1)解压
(2.2)配置hadoop-env.sh中的java环境
export JAVA_HOME=/training/jdk1.8.0_144
(2.3)配置core-site.xml

            <!-- 指定hadoop临时目录 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/training/hadoop-2.7.3/tmp</value>
            </property>

(2.4)配置mapred-site.xml

    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>

(2.5)配置yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata12</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

(2.6)配置slaves

        bigdata14
        bigdata15

(2.7)配置hdfs-site.xml

 <!--指定hdfs的nameservice,联盟是ns1,ns2-->
                <property>
                        <name>dfs.nameservices</name>
                        <value>ns1,ns2</value>
                </property>

    <!-- ns1的RPC通信地址 -->
                <property>
                        <name>dfs.namenode.rpc-address.ns1</name>
                        <value>bigdata112:9000</value>
                </property>
                <!-- ns1的http通信地址 -->
                <property>
                        <name>dfs.namenode.http-address.ns1</name>
                        <value>bigdata112:50070</value>
                </property>
          <property>
                        <name>dfs.namenode.secondaryhttp-address.ns1</name>
                        <value>bigdata112:50090</value>
                </property>

                <!-- ns2的RPC通信地址 -->
                <property>
                        <name>dfs.namenode.rpc-address.ns2</name>
                        <value>bigdata113:9000</value>
                </property>
                <!-- ns2的http通信地址 -->
                <property>
                        <name>dfs.namenode.http-address.ns2</name>
                        <value>bigdata113:50070</value>
                </property>
          <property>
                        <name>dfs.namenode.secondaryhttp-address.ns2</name>
                        <value>bigdata113:50090</value>
                </property>
    <!--副本-->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

    <!--权限-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>

(2.8)配置core-site.xml,增加路由规则

       <property>
            <name>fs.viewfs.mounttable.xdl1.homedir</name>
            <value>/home</value>
        </property>

        <property>
            <name>fs.viewfs.mounttable.xdl1.link./movies</name>
            <value>hdfs://bigdata114:9000/movies</value>
        </property>

        <property>
            <name>fs.viewfs.mounttable.xdl1.link./mp3</name>
            <value>hdfs://bigdata115:9000/mp3</value>
        </property>

        <property>
            <name>fs.default.name</name>
            <value>viewfs://xdl1</value>
        </property>

注意:如果路由规则太多,可以单独创建一个xml文件(mounTable.xml)
(3)将112上的hadoop拷贝到113、114、115上

(4)对NameNode进行格式化

在112和113两个namenode节点上格式化
hdfs namenode -format -clusterId xdl1

(5)启动
在112上启动Hadoop
start-all.sh
(6)在DataNode节点上创建响应的目录

以上是关于HDFS(NameNode)的联盟:Federation的主要内容,如果未能解决你的问题,请参考以下文章

HDFS原理

hdfs 查看 datanode 属于 哪个namenode

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.

HDFS的NameNode堆内存估算

HDFS NameNode重启优化

如何配置hdfs namenode的内存大小