CDH6.3.2 hadoop3 配置viewfs实操指南

首先官网文档地址

Apache Hadoop 3.2.2 – ViewFs Guide

这个东西是什么就不赘述了。查的人应该都了解

强调一个概念 ,用这个的话必须要理解这个概念

ViewFileSystem: 视图文件系统

ViewFileSystem不是一个新的文件系统,只是逻辑上的一个视图文件系统,在逻辑上是唯一的.

这句话怎么理解呢,ViewFileSystem就帮大家做了一件事情

将各个集群的真实文件路径与ViewFileSystem的新定义的路径进行关联映射

上面这句话的意思就好比文件系统中的mount,挂载的意思.进一步地说,ViewFileSystem会在每个客户端中维护一份mount-table挂载关系表,就是上面说的集群物理路径->视图文件系统路径这样的指向关系.但是在mount-table中,关系当然不止1个,会有很多个.比如下面所示的多对关系:

  1. /user -> hdfs://nn1/containingUserDir/user

  2. /project/foo -> hdfs://nn2/projects/foo

  3. /project/bar -> hdfs://nn3/projects/bar

前面是ViewFileSystem中的路径,后者才是代表的真正集群路径.所以你可以理解为ViewFileSystem真正干的事情就是路径的路由解析.下面给出简单的原理图:

 简单来说就是几个hdfs一起组成了一个虚拟集群。这个集群里的文件夹都来自各个集群或者本身的挂载,虚拟集群本身是没有文件夹的

有两种挂载方式

第一种挂载方式是经典的viewfs挂载方式,viewfs实际上提供了一种映射关系,将一个全局(逻辑)目录映射到某个具体的namenode(物理)目录上

在core-site.xml 中添加

<property>
  <name>fs.defaultFS</name>
  <value>viewfs://clusterX</value>
</property>
这个clusterX是个名字 随便起,这个名字的意思是你整个虚拟集群的名字,所有的真实集群挂在这个虚拟集群下

CDH中配置在

core-site.xml 的群集范围高级配置代码段(安全阀)

 然后再添加挂载点

<configuration>
  <property>
    <name>fs.viewfs.mounttable.clusterX.link./data</name>
    <value>hdfs://nn1-clusterx.example.com:8020/data</value>
  </property>

本地集群可以配置高可用地址,外部集群似乎不能配置高可用地址。或者自己实现一个高可用。官方文档这块的clusterX首字母大写了,和上面的不一样。真是个大坑,查了好久
clusterX对应上面配置的虚拟集群名称
下面是挂载文件夹的具体路径, 真实的集群不受影响,这个虚拟的集群需要把所有需要的路径挂载上去
比如还可以挂载
<property>
    <name>fs.viewfs.mounttable.ClusterX.link./project</name>
    <value>hdfs://nn2-clusterx.example.com:8020/project</value>
  </property>
  <property>
    <name>fs.viewfs.mounttable.ClusterX.link./user</name>
    <value>hdfs://nn3-clusterx.example.com:8020/user</value>
  </property>
  <property>
挂几个,虚拟集群就出现几个,虚拟集群所启动的真实集群中本身存在的文件夹会消失,hdfs -ls / 只会看到被挂载的文件夹,被挂载的则不受影响 ,所以至少要把本集群的文件夹都挂上去

CDH中配置在

core-site.xml 的群集范围高级配置代码段(安全阀)

 也是一样的需要几个挂几个

另外有个大坑就是 impala不支持viewfs,系统中存在impala的话直接无法启动 报 

Currently configured default filesystem: ViewFileSystem. fs.defaultFS (viewfs://ClusterX) is not supported.

Aborting Impala Server startup due to improper configuration. Impalad exiting.

查看官方文档 

Impala does not support running on clusters with federated namespaces

Impala does not support running on clusters with federated namespaces. The impalad process will not start on a node running such a filesystem based on the org.apache.hadoop.fs.viewfs.ViewFs class.

impala官方的解决方案是“Use standard HDFS on all Impala nodes.”

Impala 不支持在具有联合命名空间的集群上运行

在所有 Impala 节点上使用标准 HDFS。

第二种挂载方式

我们可以通过linkMergeSlash将挂载表的根与另一个文件系统的根合并。在下面的挂载表配置中,ClusterY 的根目录与位于hdfs://nn1-clustery.example.com:8020的根文件系统合并。

<configuration> 
  <property> 
    <name>fs.viewfs.mounttable.ClusterY.linkMergeSlash</name> 
    <value>hdfs://nn1-clustery.example.com:8020/</value> 
  </property> 
</configuration >

CDH中配置在

core-site.xml 的群集范围高级配置代码段(安全阀)

 重启

然后就可以在命令行里这样操作另一个集群的文件夹了

hdfs dfs -ls viewfs://ClusterCDP/

这种方式可以同时使用impala,不过相对的。使用感受会差很多,没有在一个集群里的感觉了

如果有kerberos 需要先配置互信,在我另外一篇文章里有

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值