一、此文章前提条件
1、两套集群都部署HDFS,并且正常使用;
2、两个集群分别采用HA模式;
3、两套集群分别为:68.91(A集群)和68.100(B集群),配置68.91的viewFS访问68.100;
4、存储冷数据的集群若采用纠删码,CDH版本必须6.+。
二、修改HDFS配置
1、修改A集群hdfs-site.xml文件,配置HA。
将B集群的HA配置,拷贝到A集群的hdfs-site.xml中,便于后面使用命名空间访问:
hdfs服务端和客户端都添加上如下配置,下面的部分配置可以从B集群中查找:
<property>
<name>dfs.nameservices</name>
<value>nameservice1,archive</value>
</property>
<property>
<name>dfs.ha.namenodes.archive</name>
<value>namenode46,namenode34</value>
</property>
<property>
<name>dfs.namenode.rpc-address.archive.namenode46</name>
<value>[B集群namenode名称1]:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.archive.namenode34</name>
<value>[B集群NameNode名称2]:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.archive.namenode46</name>
<value>[B集群NameNode名称1]:9870</value>
</property>
<property>
<name>dfs.namenode.http-address.archive.namenode34</name>
<value>[B集群NameNode名称2]:9870</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.archive</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
2、修改A集群core-site.xml文件,配置viewFS。
<property>
<name>fs.defaultFS</name>
<value>viewfs://leeCluster</value>
</property>
<property>
<name>fs.viewfs.mounttable.leeCluster.link./shengquanlu</name>
<value>hdfs://archive/</value>
</property>
<property>
<name>fs.viewfs.mounttable.leeCluster.link./tiandulu</name>
<value>hdfs://nameservice1/</value>
</property>
配置完成重启集群,部署客户端
三、验证从天都路集群拷贝数据到圣泉路,数据存储是否采用圣泉路集群存储策略
1、hdfs dfs -cp /tiandulu/user/lff/empInfo.txt /shengquanlu/user/lff
天都路集群的数据大小:
2、圣泉路集群的数据大小:
结论:最终的数据存储是采用圣泉路集群的存储策略XOR-2-1-1024k
关于纠删码的介绍请看参考文章:https://cloud.tencent.com/developer/article/1363393
四、遇到的问题
1、Linux 使用su - hdfs报错:This account is currently not available ;
解决办法:usermod -s /bin/bash hdfs
使用命令sudo -u hdfs代替
2、配置添加到hdfs-site.xml服务端之后,没起作用,又将配置添加到hdfs-site.xml的客户端;
3、采用viewfs的集群不能使用纠删码策略;
4、采用viewfs,挂载装入点之后,如果没有/tmp,会报如下错误:Canary 测试无法为 /tmp/.cloudera_health_monitoring_canary_files 创建父目录;
解决办法:点击hdfs配置,搜索tmp,修改相关目录即可
5、viewfs link目录配置在hdfs-site.xml中,启动jobhistory服务时,会报如下异常:
Cannot initialize: Empty Mount table in config for viewfs
故此:viewfs的link相关配置在core-site.xml中,服务正常