本文介紹如何通過JindoDistCp工具,將第三方云對象存儲中的數據遷移到OSS/OSS-HDFS。
前提條件
準備遷移環境并下載JindoDistCp工具,參見JindoDistCp使用說明。
已在Hadoop的
core-site.xml
文件里,配置AccessKey ID和AccessKey Secret。新增配置項詳情,請參見管理配置項。JindoDistCp可以將AccessKey ID和AccessKey Secret預先寫在Hadoop的
core-site.xml
文件里 ,避免使用時多次填寫的問題。例如,指定OSS、OSS-HDFS、Amazon S3、COS或OBS的AccessKey ID和AccessKey Secret。以OSS為例,配置示例如下。<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
拷貝數據到阿里云OSS/OSS-HDFS上
您可以使用如下命令將第三方云對象存儲上的目錄拷貝到OSS/OSS-HDFS上。
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --parallelism 10
參數 | 描述 | 示例 |
--src | 第三方云對象存儲路徑。 | s3://example-s3-bucket/data/ |
--dest | OSS/OSS-HDFS的目標路徑。 | oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/ |
--parallelism | 任務并發大小,根據集群資源可調整。 | 10 |
拷貝增量文件
場景說明:
Distcp任務在執行期間失敗,您想進行斷點續傳,只拷貝剩下未拷貝成功的文件。
源端文件新增了部分文件,只拷貝新增的文件。
在上一次Distcp任務完成后,使用--update參數,將src中新增或發生改變的文件和目錄同步到dest上。
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --update --parallelism 20
設置YARN隊列和帶寬大小
如果您需要設置DistCp作業使用的YARN隊列和帶寬大小,可使用如下命令:
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf mapreduce.job.queuename=yarnQueue --bandWidth 100 --parallelism 10
參數 | 描述 |
--hadoopConf mapreduce.job.queuename=yarnQueue | 指定YARN隊列的名稱。 |
--bandWidth | 指定單機限流帶寬的大小,單位:MB。 |
配置OSS-HDFS Endpoint
訪問OSS-HDFS需要配置Endpoint(cn-xxx.oss-dls.aliyuncs.com),與OSS對象接口的Endpoint(oss-cn-xxx-internal.aliyuncs.com)不同。JindoSDK會根據配置的Endpoint訪問OSS-HDFS或OSS對象接口。
使用OSS-HDFS時,推薦訪問路徑格式為:oss://<Bucket>.<Endpoint>/<Object>
。例如oss://mydlsbucket.cn-shanghai.oss-dls.aliyuncs.com/Test
。
這種方式在訪問路徑中包含OSS-HDFS的Endpoint,JindoSDK會根據路徑中的Endpoint訪問對應的OSS-HDFS接口。JindoSDK還支持更多的Endpoint配置方式,詳情請參見阿里云OSS-HDFS服務(JindoFS服務)Endpoint配。
JindoSDK 4.4.0及以上版本默認使用域名分離的方式,數據讀寫域名默認使用內網標準OSS域名。如果在非阿里云內網環境執行distcp命令,則需要在Hadoop的core-site.xml
文件中配置數據流訪問的公網OSS Endpoint。配置示例如下。
<configuration>
<property>
<name>fs.oss.data.endpoint</name>
<value>oss-cn-xxx.aliyuncs.com</value>
</property>
</configuration>
相關文檔
如果您需要使用JindoDistCp工具的更多功能,請參見JindoDistCp使用說明。
如果您在使用過程中遇到問題,可參見JindoDistCp常見問題進行解決。