前提條件
準備遷移環境並下載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上
您可以使用如下命令將第三方雲Object Storage Service上的目錄拷貝到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 | 第三方雲Object Storage Service路徑。 | s3://example-s3-bucket/data/ |
--dest | OSS/OSS-HDFS的目標路徑。 | oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/ |
--parallelism | 任務並發大小,根據叢集資源可調整。 | 10 |
拷貝增量檔案
在上一次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>