HDFS(NameNode)联盟的搭建及原理的浅析

一、搭建HDFS联盟

1、为什么引入HDFS(NameNode)联盟?

引入Federation的最主要原因是简单,其简单性是与真正的分布式Namenode相比而言的。Federation能够快速的解决了大部分单Namenode HDFS的问题。

Federation是简单鲁棒的设计,由于联盟中各个Namenode之间是相互独立的。Federation整个核心设计实现大概用了3.5个月。大部分改变是在Datanode、Config和Tools,而Namenode本身的改动非常少,这样Namenode原先的鲁棒性不会受到影响。比分布式的Namenode简单,虽然这种实现的扩展性比起真正的分布式的Namenode要小些,但是可以迅速满足需求。另外一个原因是Federation良好的向后兼容性,已有的单Namenode的部署配置不需要任何改变就可以继续工作。

 

2、什么是HDFS联盟

HDFS Federation使用了多个独立的Namenode/namespace来使得HDFS的命名服务能够水平扩展。在HDFS Federation中的Namenode之间是联盟关系,他们之间相互独立且不需要相互协调。HDFS Federation中的Namenode提供了提供了命名空间和块管理功能。HDFS Federation中的datanode被所有的Namenode用作公共存储块的地方。每一个datanode都会向所在集群中所有的Namenode注册,并且会周期性的发送心跳和块信息报告,同时处理来自Namenode的指令。

 

作用:(1)实现Load Balance:根据路由规则

           (2)缓存更多的元信息(默认情况是存储1000M,可以修改配置文件增加),引入联盟可以存储无穷大的元信息。

 

  

3、搭建HDFS的联盟

(*)规划

      NameNode: bigdata12   bigdata13

  DataNode:   bigdata14   bigdata15

  

(*)准备工作:清除之前的环境

(*)在bigdata12上进行配置

     hadoop-env.sh JAVA_HOME /root/training/jdk1.8.0_144

 core-site.xml

<property>

  <name>hadoop.tmp.dir</name>

  <value>/root/training/hadoop-2.7.3/tmp</value>

</property>

 

mapred-site.xml

<property>

  <name>mapreduce.framework.name</name>

  <value>yarn</value>

</property>

 

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>

 

slaves

bigdata14

bigdata15

 

hdfs-site.xml

<property>

  <name>dfs.nameservices</name>

  <value>ns1,ns2</value>

</property>

 

<property>

  <name>dfs.namenode.rpc-address.ns1</name>

  <value>192.168.100.12:9000</value>

</property>

 

<property>

  <name>dfs.namenode.http-address.ns1</name>

  <value>192.168.100.12:50070</value>

</property>

 

<property>

  <name>dfs.namenode.secondaryhttp-address.ns1</name>

  <value>192.168.100.12:50090</value>

</property>

 

<property>

  <name>dfs.namenode.rpc-address.ns2</name>

  <value>192.168.100.13:9000</value>

</property>

 

<property>

  <name>dfs.namenode.http-address.ns2</name>

  <value>192.168.100.13:50070</value>

</property>

 

<property>

  <name>dfs.namenode.secondaryhttp-address.ns2</name>

  <value>192.168.100.13:50090</value>

</property>

 

<property>

  <name>dfs.replication</name>

  <value>2</value>

</property>

 

<property>

  <name>dfs.permissions</name>

  <value>false</value>

</property>

 

增加路由规则-----> core-site.xml中

<property>

<name>fs.viewfs.mounttable.abc.homedir</name>

<value>/home</value>

</property>

 

<property>

<name>fs.viewfs.mounttable.abc.link./hahaha</name>

<value>hdfs://192.168.100.12:9000/hahaha</value>

</property>

 

<property>

<name>fs.viewfs.mounttable.abc.link./logs</name>

<value>hdfs://192.168.100.13:9000/logs</value>

</property>

 

<property>

<name>fs.default.name</name>

<value>viewfs://abc</value>

</property>

 

注意:如果路由规则太多了,不方便维护 ----> 单独创建一个xml文件(mountTable.xml)

 参考官方的文档:http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-hdfs/Federation.html

                 http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-hdfs/ViewFs.html

 

复制到其他节点

  scp -r /root/training/hadoop-2.7.3/ root@bigdata13:/root/training

  scp -r /root/training/hadoop-2.7.3/ root@bigdata14:/root/training

  scp -r /root/training/hadoop-2.7.3/ root@bigdata15:/root/training

  

对每个NameNode(bigdata12  bigdata13)进行格式化

     注意ID号

     hdfs namenode -format -clusterId abc

 

在启动Hadoop之前,应该在对应的NameNode上,创建好目录。

hadoop fs -mkdir hdfs://192.168.100.12:9000/hahaha

hadoop fs -mkdir hdfs://192.168.100.13:9000/logs

 

一定要注意

[root@bigdata12 training]# hdfs dfs -ls /  查看到的是路由规则,不是目录

4、通过网页验证是否搭建成功

 

猜你喜欢

转载自blog.csdn.net/liuzhuang2017/article/details/81630116
今日推荐