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使用指南。