hdfs中有几个高级特性:
(1)回收站
(2)快照
(3)配额:名称配额(N-1)和空间配额
(4)安全模式
(5)权限
(6)联盟
其中联盟是hdfs的一个很重要的一个高级特性,它的俩个重要的作用就是:
(一)扩展nameNode,增加元信息的缓冲
(二)实现负载均衡
但是还是存在单点故障的问题,因为不同的nameNode缓冲的是不同的元信息,所以它扩展了nameNode并不是为了高可用而是为了扩展内存用的
接下来就是搭建nameNode:
准备四台虚拟机bigdata112、bigdata113、bigdata114、bigdata115
配置四台虚拟机环境变量:同全分布环境变量一样
验证准备工作:安装JDK、同步时间、免密码登录、防火墙、主机名
防火墙只是在测试机上停用即可
我们只需在一个机器上安装部署好hadoop,其他的机器拷贝就可以了,所以我们只需在bigdata112上先配置好
在bigdata112上搭建
hadoop-env.sh
export JAVA_HOME=/root/training/jdk1.8.0_181
core-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-3.1.2/tmp</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<!--有两个NameNode-->
<property>
<name>dfs.nameservices</name>
<value>ns1,ns2</value>
</property>
<!--第一个NameNode-->
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.112.112:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.112.112:50070</value>
</property>
<property>
<name>dfs.namenode.secondaryhttp-address.ns1</name>
<value>192.168.112.112:50090</value>
</property>
<!--第二个NameNode-->
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>192.168.112.113:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>192.168.112.113:50070</value>
</property>
<property>
<name>dfs.namenode.secondaryhttp-address.ns2</name>
<value>192.168.112.113:50090</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>bigdata112</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
workers
bigdata114
bigdata115
修改core-site.xml文件,直接加入以下内容:
<property>
<name>fs.viewfs.mounttable.xdl1.homedir</name>
<value>/home</value>
</property>
<property>
<name>fs.viewfs.mounttable.xdl1.link./movie</name>
<value>hdfs://192.168.112.112:9000/movie</value>
</property>
<property>
<name>fs.viewfs.mounttable.xdl1.link./mp3</name>
<value>hdfs://192.168.112.113:9000/mp3</value>
</property>
<property>
<name>fs.default.name</name>
<value>viewfs://xdl1</value>
</property>
这里的注意一点就是xdl1可以任意指定,但是上边的配置和下面fs.default.name指定的值必须一样,下面的是用来格式化
nameNode用的
把112上的hadoop复制到其他节点
scp -r hadoop-3.1.2/ root@bigdata113:/root/training
scp -r hadoop-3.1.2/ root@bigdata114:/root/training
scp -r hadoop-3.1.2/ root@bigdata115:/root/training
在112和113上对NameNode分别进行格式化:注意ID号 还有记得一定要格式话操作,不然启动不了nameNode
hdfs namenode -format -clusterId xdl1
在112上启动,注意这里只能在112上启动不能再113上启动,因为我试过了在113上启动启动不了yarn平台
start-all.sh
根据路由规则在对应NameNode上创建目录,在112和113上都可执行,使用hadoop fs和hdfs dfs都可以
hadoop fs -mkdir hdfs://192.168.157.112:9000/movie
hadoop fs -mkdir hdfs://192.168.157.113:9000/mp3
操作联盟:注意这里看到的是路由规则,不是目录。即我执行hdfs dfs -ls / 看到的是路由规则不是文件目录
[root@bigdata112 training]# hdfs dfs -ls /
Found 2 items
-r-xr-xr-x - root root 0 2020-03-25 00:36 /movie
-r-xr-xr-x - root root 0 2020-03-25 00:36 /mp3