JindoFS支持RootPolicy规则,您可以通过RootPolicy为OSS-HDFS(JindoFS 服务)设置自定义前缀,无需修改原有的访问hdfs:// 前缀的作业,直接运行在JindoFS服务上。本文为您介绍如何通过RootPolicy访问OSS-HDFS。

设置RootPolicy

可以通过Shell命令,帮助您向特定的Bucket注册自定义地址。通过SetRootPolicy命令(具体使用方法请参见Jindo CLI使用指南),可以为特定Bucket注册自定义前缀的访问地址,配置代码如下所示:
jindo admin -setRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
说明 上面例子中的oss://<bucket_name>.<dls_endpoint>/可以写成oss://<bucket_name>/的形式,下文中需要填写endpoint的地方都可省略不填。
  • <bucket_name>: OSS-HDFS服务Bucket的名字,当前版本仅支持根目录。
  • <your_ns_name>: 自定义访问HDFS服务的nsname,为任意非空字符串,如test,当前版本仅支持根目录。
  • <dls_endpoint>: OSS-HDFS服务的Endpoint,如杭州区域为cn-hangzhou.oss-dls.aliyuncs.com。如Hadoop的core-site.xml文件中有如下配置项:
    <configuration>
        <property>
            <name>fs.oss.endpoint</name>
            <value><dls_endpoint></value>
        </property>
    </configuration>
    <configuration>
    <property>
            <name>fs.oss.bucket.<bucket_name>.endpoint</name>
            <value><dls_endpoint></value>
        </property>
    </configuration>

配置Access Policy发现地址和Scheme实现类

您可以在Hadoop的core-site.xml文件中添加如下配置项:
<configuration>
    <property>
        <name>fs.accessPolicies.discovery</name>
        <value>oss://<bucket_name>.<dls_endpoint>/</value>
    </property>
    <property>
        <name>fs.AbstractFileSystem.hdfs.impl</name>
        <value>com.aliyun.jindodata.hdfs.HDFS</value>
    </property>
    <property>
        <name>fs.hdfs.impl</name>
        <value>com.aliyun.jindodata.hdfs.JindoHdfsFileSystem</value>
    </property>
</configuration>
如果是多个Bucket,用英文逗号(,)分隔。

验证和使用

  1. 配置完成后,您可以通过Hadoop命令对配置进行简单验证,命令如下。
    hadoop fs -ls hdfs://<your_ns_name>/
  2. 验证通过后,重启相关服务,如Hive、Spark等,即可使用自定义前缀访问OSS-HDFS服务。

其他功能

  • 删除RootPolicy规则
    通过unsetRootPolicy命令可以删除相应地址。具体用法请参见Jindo CLI使用指南,示例代码如下。
    jindo admin -unsetRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
  • 列举所有RootPolicy规则
    通过listAccessPolicies命令,可以列出特定Bucket当前注册的所有前缀地址。具体用法请参见Jindo CLI使用指南,示例代码如下。
    jindo admin -listAccessPolicies oss://<bucket_name>.<dls_endpoint>/