通過(guò)RootPolicy訪(fǎng)問(wèn)OSS-HDFS
OSS-HDFS服務(wù)(JindoFS 服務(wù))支持通過(guò)JindoFS命令行工具設(shè)置RootPolicy規(guī)則,來(lái)設(shè)置自定義前綴。您無(wú)需修改原有的訪(fǎng)問(wèn)hdfs://
前綴的作業(yè),即可直接在OSS-HDFS服務(wù)上運(yùn)行。本文為您介紹如何通過(guò)RootPolicy訪(fǎng)問(wèn)OSS-HDFS。
背景信息
JindoFS命令行工具是用于訪(fǎng)問(wèn)OSS-HDFS的可執(zhí)行程序,其功能類(lèi)似于阿里云OSS提供的ossutil。該工具不僅支持常見(jiàn)的文件元數(shù)據(jù)和讀寫(xiě)流操作,如創(chuàng)建目錄和拷貝文件,還支持OSS-HDFS特有的功能,例如清單導(dǎo)出等。與JindoSDK提供的命令行工具相比,JindoFS命令行工具不僅提供與HDFS Shell對(duì)應(yīng)的常用命令,還涵蓋了OSS-HDFS的特有方法。然而,需注意的是,JindoFS命令行工具僅支持OSS-HDFS,主要作為其專(zhuān)用工具進(jìn)行使用。
前提條件
已創(chuàng)建選擇了OSS-HDFS服務(wù)的EMR集群。具體步驟,請(qǐng)參見(jiàn)創(chuàng)建集群。
已開(kāi)通OSS-HDFS服務(wù)。具體步驟,請(qǐng)參見(jiàn)開(kāi)通OSS-HDFS服務(wù)。
操作步驟
登錄集群Master節(jié)點(diǎn),詳情請(qǐng)參見(jiàn)登錄集群。
配置訪(fǎng)問(wèn)密鑰。
單擊JindoFS命令行工具下載,下載JindoFS命令行工具。
將下載完成的文件上傳至EMR集群的適當(dāng)目錄,并在該目錄下進(jìn)行解壓縮。
本文以
jindofs-sdk-6.2.5-linux.tar.gz
為例,如使用其他版本的JindoFS,請(qǐng)?zhí)鎿Q為對(duì)應(yīng)的JAR包名稱(chēng)。tar zxf jindofs-sdk-6.2.5-linux.tar.gz cd jindofs-sdk-6.2.5-linux/bin
在
bin
目錄下新建配置文件jindofs.cfg
,并配置阿里云賬號(hào)的訪(fǎng)問(wèn)密鑰,或者滿(mǎn)足權(quán)限要求的RAM用戶(hù)的訪(fǎng)問(wèn)密鑰。[client] # 配置訪(fǎng)問(wèn)OSS-HDFS服務(wù)的AccessKeyId、AccessKeySecret。 fs.oss.accessKeyId = <access key> fs.oss.accessKeySecret = <access secret> # 配置訪(fǎng)問(wèn)OSS-HDFS服務(wù)的Endpoint。例如,cn-hangzhou.oss-dls.aliyuncs.com。 fs.oss.endpoint = <OSS-HDFS endpoint> fs.oss.data.lake.storage.enable = true # EMR Credential provider for password-free access # fs.oss.provider.format = JSON
說(shuō)明在解壓后的
conf/
目錄中,您可以找到配置示例文件jindofs.cfg.template
。
設(shè)置環(huán)境變量。
export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
<JINDOSDK_CONF_DIR>
填寫(xiě)為jindofs.cfg
配置文件所在的絕對(duì)路徑。設(shè)置RootPolicy。
您可以通過(guò)
SetRootPolicy
命令為特定Bucket注冊(cè)自定義前綴的訪(fǎng)問(wèn)地址,配置代碼如下所示。./jindofs admin -setRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<ns_name>/
以上命令涉及的各項(xiàng)參數(shù)說(shuō)明如下:
<bucket_name>
:OSS-HDFS服務(wù)Bucket的名字,當(dāng)前版本僅支持根目錄。<ns_name>
:自定義訪(fǎng)問(wèn)HDFS服務(wù)的nsname,支持任意非空字符串,例如dir
。<dls_endpoint>
:OSS-HDFS服務(wù)所在地域?qū)?yīng)的Endpoint,例如cn-hangzhou.oss-dls.aliyuncs.com
。如果您不希望在每一次使用RootPolicy相關(guān)命令時(shí)重復(fù)添加<dls_endpoint>選項(xiàng),您可以選擇以下任意方式在Hadoop的core-site.xml
文件中添加配置項(xiàng)。方式一
<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發(fā)現(xiàn)地址和Scheme實(shí)現(xiàn)類(lèi)。
為了通過(guò)OSS-HDFS有效地將Hadoop與阿里云對(duì)象存儲(chǔ)服務(wù)(OSS)集成,您需要在集群服務(wù)頁(yè)面的Hadoop-Common的
core-site.xml
文件中添加如下配置項(xiàng)。<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>
如果您需要為多個(gè)Bucket配置Access Policy發(fā)現(xiàn)地址和Scheme實(shí)現(xiàn)類(lèi),則多個(gè)Bucket之間需使用逗號(hào)
,
分隔。驗(yàn)證是否已成功配置RootPolicy。
hadoop fs -ls hdfs://<ns_name>/
返回以下結(jié)果,說(shuō)明已成功配置RootPolicy。
drwxr-x--x - hdfs hadoop 0 2023-01-05 12:27 hdfs://<ns_name>/apps drwxrwxrwx - spark hadoop 0 2023-01-05 12:27 hdfs://<ns_name>/spark-history drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<ns_name>/tmp drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<ns_name>/user
使用自定義前綴訪(fǎng)問(wèn)OSS-HDFS服務(wù)。
重啟Hive、Spark等服務(wù)后,您可以通過(guò)使用自定義前綴訪(fǎng)問(wèn)OSS-HDFS服務(wù)。
RootPolicy其他用法
刪除RootPolicy規(guī)則
通過(guò)
unsetRootPolicy
命令可以刪除相應(yīng)地址。./jindofs admin -unsetRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<ns_name>/
代碼示例如下。
列舉所有RootPolicy規(guī)則
通過(guò)
listAccessPolicies
命令可以列出特定Bucket當(dāng)前注冊(cè)的所有前綴地址。./jindofs admin -listAccessPolicies oss://<bucket_name>.<dls_endpoint>/
代碼示例如下。