viewfs的特点
可以使用类似linux系统的挂载表,映射集群和hdfs文件系统的路径。例如:将/user/ 映射到集群cluster-1,将/data映射到cluster-2.在实际操作中,只需要直接使用hdfs dfs -ls /data 访问的就是集群cluster-2中目录。
增加Nfly系统,可以链接一个目录到多个目录,实现同时写入多个文件系统。例如配置如下,当执行命令: hadoop fs -touchz viewfs://global/ads/z1 会在以下的目录中分别创建一个z1文件
<property>
<name>fs.viewfs.mounttable.global.linkNfly../ads</name>
<value>hdfs://datacenter-east/ads, s3a://models-us-west/ads, hdfs://datacenter-west/ads</value>
</property>
Nfly系统支持就近读取的网络架构。客户端会从以上三个地址网络架构最近的uri读取数据,类似机架感知策略。
配置viewfs
viewfs有两种配置方式,一种是直接在core-site.xml文件中配置,一种是在额外的文件中配置。
在core-stie.xml文件中参考以下配置
<property>
<name>fs.defaultFS</name>
<value>viewfs://mycluster</value>
</property>
<-- 配置单个目录单个挂载点 -->
<property>
<name>fs.viewfs.mounttable.ClusterX.link./data</name>
<value>hdfs://mycluster-01:8020/data</value>
</property>
<-- 配置单个目录多个挂载点 -->
<property>
<name>fs.viewfs.mounttable.global.linkNfly.minReplication=3,readMostRecent=true,repairOnRead=false./ads</name>
<value>hdfs://mycluster-east/ads,s3a://models-us-west/ads,hdfs://mycluster-west/ads</value>
</property>
<-- 如果想配置默认根目录,使用如下配置 -->
<property>
<name>fs.viewfs.mounttable.mycluster.linkMergeSlash</name>
<value>hdfs://mycluster-01:8020/</value>
</property>
- 在额外的配置文件中配置
修改core-site.xml如下,新建mountTable.xml,将以上配置配置在此文件中
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="mountTable.xml" />
</configuration>