遷移OSS-HDFS服務(wù)不同Bucket之間的數(shù)據(jù)
本文介紹如何使用阿里云Jindo DistCp在OSS-HDFS服務(wù)不同Bucket之間遷移數(shù)據(jù)。
前提條件
已創(chuàng)建阿里云EMR-5.6.0及后續(xù)版本或EMR-3.40.0及后續(xù)版本的集群。具體步驟,請參見創(chuàng)建集群。
如果您使用的是自建ECS集群,需確保集群具備Hadoop2.7+或Hadoop3.x環(huán)境以及進行MapReduce作業(yè)的能力。通過自建ECS集群完成遷移任務(wù)前,您需要自行部署JindoData(JindoData包含JindoSDK以及JindoFSx)。建議跟隨版本迭代,下載最新版本。
已開通并授權(quán)訪問OSS-HDFS服務(wù)。具體操作,請參見開通并授權(quán)訪問OSS-HDFS服務(wù)。
背景信息
阿里云Jindo DistCp(分布式文件拷貝工具)用于大規(guī)模集群內(nèi)部或集群之間拷貝文件。Jindo DistCp使用MapReduce實現(xiàn)文件分發(fā),錯誤處理和恢復(fù),把文件和目錄的列表作為MapReduce任務(wù)的輸入,每個任務(wù)會完成源列表中部分文件的拷貝。Jindo DistCp全量支持HDFS之間、HDFS與OSS之間、HDFS與OSS-HDFS之間以及OSS-HDFS之間數(shù)據(jù)拷貝場景,提供多種個性化拷貝參數(shù)和多種拷貝策略。
使用阿里云Jindo DistCp遷移數(shù)據(jù)時,有以下優(yōu)勢:
效率高,在測試場景中最高可達到1.59倍的加速。
基本功能豐富,提供多種拷貝方式和場景優(yōu)化策略。
深度結(jié)合OSS,對文件提供歸檔、壓縮等操作。
實現(xiàn)No-Rename拷貝,保證數(shù)據(jù)一致性。
場景全面,可完全替代Hadoop DistCp,目前支持Hadoop2.7+和Hadoop3.x。
步驟一:下載JAR包
下載地址,請參見GitHub。
步驟二:配置OSS-HDFS服務(wù)的AccessKey
您可以通過以下任意方式配置OSS-HDFS服務(wù)的AccessKey:
在示例命令中配置AccessKey
hadoop jar jindo-distcp-tool-${version}.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --parallelism 10
通過配置文件預(yù)先配置AccessKey
將OSS-HDFS的fs.oss.accessKeyId、fs.oss.accessKeySecret預(yù)先配置在Hadoop的core-site.xml文件里。示例命令如下:
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>LTAI********</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>KZo1********</value> </property> </configuration>
步驟三:配置OSS-HDFS服務(wù)Endpoint
訪問OSS-HDFS服務(wù)時需要配置Endpoint。推薦訪問路徑格式為oss://<Bucket>.<Endpoint>/<Object>
,例如oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt
。配置完成后,JindoSDK會根據(jù)訪問路徑中的Endpoint訪問對應(yīng)的OSS-HDFS服務(wù)接口。
您還可以通過其他方式配置OSS-HDFS服務(wù)Endpoint,且不同方式配置的Endpoint存在生效優(yōu)先級。更多信息,請參見配置Endpoint的其他方式。
步驟四:在OSS-HDFS服務(wù)不同Bucket之間全量遷移數(shù)據(jù)
以下以Jindo DistCp 4.4.0版本為例,您可以根據(jù)實際環(huán)境替換對應(yīng)的版本號。
使用相同的AccessKey將同一個Region下Bucket A的數(shù)據(jù)遷移至Bucket B
命令格式
hadoop jar jindo-distcp-tool-${version}.jar --src oss://bucketname.region.oss-dls.aliyuncs.com/ --dest oss://bucketname.region.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --parallelism 10
參數(shù)及選項說明如下:
參數(shù)及選項
說明
示例
--src
待遷移或拷貝的OSS-HDFS服務(wù)中源Bucket的完整路徑。
oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/
--dest
OSS-HDFS中存放遷移或拷貝數(shù)據(jù)的目標(biāo)Bucket的完整路徑。
oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/
--hadoopConf
訪問OSS-HDFS服務(wù)的AccessKey ID和AccessKey Secret。
AccessKey ID
LTAI********
AccessKey Secret
KZo1********
--parallelism
根據(jù)集群資源調(diào)整任務(wù)并發(fā)數(shù)。
10
使用示例
使用相同的AccessKey將華東1(杭州)地域下srcbucket的數(shù)據(jù)遷移至destbucket。
hadoop jar jindo-distcp-tool-4.4.0.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=LTAI******** --hadoopConf fs.oss.accessKeySecret=KZo1******** --parallelism 10
(可選)在OSS-HDFS服務(wù)不同Bucket之間增量遷移數(shù)據(jù)
如果您僅希望拷貝在上一次全量遷移或拷貝后源路徑下新增的數(shù)據(jù),此時您可以結(jié)合--update選項完成數(shù)據(jù)的增量遷移或拷貝。
例如,您需要使用相同的AccessKey將華東1(杭州)地域下srcbucket的數(shù)據(jù)增量遷移至destbucket。
hadoop jar jindo-distcp-tool-4.4.0.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=LTAI******** --hadoopConf fs.oss.accessKeySecret=KZo1******** --update --parallelism 10
更多參考
關(guān)于Jindo DistCp的其他使用場景,請參見Jindo DistCp使用說明。