本文為您介紹如何使用阿里云JindoDistCp從HDFS遷移數據到OSS/OSS-HDFS。
前提條件
已根據JindoDistCp使用說明進行環境適配和工具包下載。
注意事項
JindoSDK 4.4.0及以上版本默認使用域名分離的方式,數據讀寫域名默認使用內網標準OSS域名,如果在非阿里云內網環境執行distcp命令,則需要在Hadoop-Common的core-site.xml中配置數據流訪問的公網OSS Endpoint。
<configuration>
<property>
<name>fs.oss.data.endpoint</name>
<value>oss-cn-xxx.aliyuncs.com</value>
</property>
</configuration>
操作步驟
在EMR控制臺配置OSS/OSS-HDFS的AccessKey。
在Hadoop-Common服務的core-site.xml頁簽,新增以下配置項,以避免使用時多次填寫的問題。新增配置項的具體操作,請參見管理配置項。
參數
說明
fs.oss.accessKeyId
OSS/OSS-HDFS的AccessKey ID。
fs.oss.accessKeySecret
OSS/OSS-HDFS的AccessKey Secret。
拷貝數據到阿里云OSS/OSS-HDFS上。
登錄集群,詳情請參見登錄集群。
進入
/opt/apps/JINDOSDK/jindosdk-current/tools
目錄。在該目錄下獲取
jindo-distcp-tool-${version}.jar
完整的包名。例如,jindo-distcp-tool-4.6.11.jar。您可以使用如下命令將HDFS上的目錄及數據拷貝到OSS/OSS-HDFS上。
hadoop jar jindo-distcp-tool-${version}.jar --src /data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --parallelism 10
參數
描述
示例
--src
HDFS的源路徑。
/data
--dest
OSS/OSS-HDFS的目標路徑。
說明使用OSS-HDFS時,推薦訪問路徑格式為
oss://<Bucket>.<Endpoint>/<Object>
。例如,oss://mydlsbucket.cn-shanghai.oss-dls.aliyuncs.com/Test
。JindoSDK還支持更多Endpoint配置方式,詳情請參見阿里云OSS-HDFS服務(JindoFS 服務)Endpoint配置。OSS:oss://destBucket/
OSS-HDFS:oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/
--parallelism
任務并發大小,根據集群資源可調整。
10
高階用法
增量拷貝文件
如果JindoDistCp任務因為各種原因中間失敗了,而此時您想進行斷點續傳,只Copy剩下未Copy成功的文件,或者源端文件新增了部分文件,此時需要在上一次JindoDistCp任務完成后,使用
--update
命令,獲得增量的文件列表。hadoop jar jindo-distcp-tool-${version}.jar --src /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 /data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf mapreduce.job.queuename=yarnQueue --bandWidth 100 --parallelism 10
--hadoopConf mapreduce.job.queuename
:指定YARN隊列的名稱。--bandWidth
:指定單機限流帶寬的大小,單位MB。
相關文檔
如果您在使用過程中遇到問題,可以參見JindoDistCp常見問題解決。