OSS-HDFS服务支持RootPolicy。您可以通过RootPolicy为OSS-HDFS服务设置自定义前缀,在无需修改原有访问hdfs://
前缀作业的基础上,将作业直接运行在OSS-HDFS服务上。
前提条件
已创建Hadoop环境、Hadoop集群或者Hadoop客户端。具体操作,请参见创建Hadoop运行环境。
已开通OSS-HDFS服务。具体操作,请参见开通并授权访问OSS-HDFS服务。
已配置4.5.0及以上版本JindoSDK 。具体操作,请参见非EMR集群接入OSS-HDFS服务快速入门。
操作步骤
配置环境变量。
连接ECS实例。具体操作,请参见连接ECS实例。
进入已安装的JindoSDK JAR包下的bin目录。
以下以
jindosdk-x.x.x-linux
为例,如使用其他版本的JindoSDK,请替换为对应的JAR包名称。cd jindosdk-x.x.x-linux/bin/
说明x.x.x表示JindoSDK JAR包版本号。
授予bin目录下的
jindo-util
文件的读、写、执行的权限。chmod 700 jindo-util
将
jindo-util
文件重命名为jindo
。mv jindo-util jindo
新建配置文件
jindosdk.cfg
,然后在配置文件中添加以下配置项。[common]保持以下默认配置。 logger.dir = /tmp/jindo-util/ logger.sync = false logger.consolelogger = false logger.level = 0 logger.verbose = 0 logger.cleaner.enable = true hadoopConf.enable = false [jindosdk]自定义以下配置项。 <!-- 以下以杭州地域为例,其他地域请根据实际情况替换。 --> fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com <!-- 配置访问OSS-HDFS服务的AccessKeyId、AccessKeySecret。 --> fs.oss.accessKeyId = LTAI******** fs.oss.accessKeySecret = KZo1********
设置环境变量。
export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
<JINDOSDK_CONF_DIR>填写
jindosdk.cfg
配置文件所在的绝对路径。
设置RootPolicy。
您可以通过SetRootPolicy命令为指定Bucket注册自定义前缀访问地址,配置命令如下:
jindo admin -setRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
以上命令涉及的各项参数说明如下:
参数
说明
bucket_name
填写已开通OSS-HDFS服务的Bucket名称。
dls_endpoint
开通OSS-HDFS服务所在地域对应的Endpoint,例如
cn-hangzhou.oss-dls.aliyuncs.com
。如果您不希望在每一次使用RootPolicy相关命令时重复添加<dls_endpoint>选项,您可以选择以下任意方式在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>
your_ns_name
自定义访问OSS-HDFS服务的nsname,支持任意非空字符串,例如
test
,当前版本仅支持根目录。配置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配置Access Policy发现地址和Scheme实现类,则多个Bucket之间需使用逗号
,
分隔。验证是否已成功配置RootPolicy。
hadoop fs -ls hdfs://<your_ns_name>/
返回以下结果,说明已成功配置RootPolicy。
drwxr-x--x - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/apps drwxrwxrwx - spark hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/spark-history drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/tmp drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/user
使用自定义前缀访问OSS-HDFS服务。
重启Hive、Spark等服务后,您可以通过使用自定义前缀访问OSS-HDFS服务。
(可选)RootPolicy其他用法。
列举指定Bucket当前注册的所有前缀地址
您可以通过listAccessPolicies命令列举指定Bucket当前注册的所有前缀地址。
jindo admin -listAccessPolicies oss://<bucket_name>.<dls_endpoint>/
删除指定Bucket当前注册的所有前缀地址
您可以通过unsetRootPolicy命令删除指定Bucket当前注册的所有前缀地址。
jindo admin -unsetRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
相关文档
关于RootPolicy相关命令的更多信息,请参见Jindo CLI使用指南。