如果您需要備份HDFS資料或擴充儲存空間,您可以使用阿里雲EMR叢集的Jindo DistCp工具將HDFS資料移轉到OSS-HDFS。OSS-HDFS與Hadoop生態系統相容,遷移後可以利用Hadoop生態系統的各種工具和架構進行資料處理和分析。
前提條件
已建立阿里雲EMR-5.6.0或EMR-3.40.0及以上版本的叢集。具體步驟,請參見建立叢集。
自建ECS叢集需具備Hadoop2.7+或3.x環境及MapReduce作業能力。通過自建ECS叢集完成遷移任務前,需要自行部署JindoData(包含JindoSDK以及JindoFSx),建議下載最新版本。
已開通並授權訪問OSS-HDFS服務。具體操作,請參見開通OSS-HDFS服務。
背景資訊
阿里雲Jindo DistCp(分布式檔案拷貝工具)用於大規模叢集內部或叢集之間拷貝檔案。Jindo DistCp使用MapReduce實現檔案分發,錯誤處理和恢複,把檔案和目錄的列表作為MapReduce任務的輸入,每個任務會完成源列表中部分檔案的拷貝。Jindo DistCp全量支援HDFS之間、HDFS與OSS之間、HDFS與OSS-HDFS之間以及OSS-HDFS之間資料拷貝情境,提供多種個人化拷貝參數和多種拷貝策略。
使用阿里雲Jindo DistCp遷移資料時,有以下優勢:
效率高,在測試情境中最高可達到1.59倍的加速。
準系統豐富,提供多種拷貝方式和情境最佳化策略。
深度結合OSS,支援檔案歸檔和壓縮。
支援No-Rename拷貝,保證資料一致性。
情境全面,支援Hadoop2.7+和Hadoop3.x版本,可替代Hadoop DistCp。
操作步驟
登入EMR叢集。
單擊建立的EMR叢集。
單擊節點管理頁簽,然後單擊節點群組左側的
。單擊ECS ID。在ECS執行個體頁面,單擊執行個體ID右側的遠端連線。
如果您希望使用SSH方式登入,請參見登入叢集。
將HDFS指定路徑下的資料移轉至OSS-HDFS。
執行以下命令查看HDFS下的資料。
hdfs dfs -ls /返回結果如下:
Found 8 items drwxrwxrwx - admin supergroup 0 2023-10-26 10:55 /.sysinfo drwxrwxrwx - hadoop supergroup 0 2023-10-26 10:55 /apps drwxrwxrwx - root supergroup 0 2022-08-03 15:54 /data -rw-r----- 1 root supergroup 13 2022-08-25 11:45 /examplefile.txt drwxrwxrwx - spark supergroup 0 2023-10-26 14:49 /spark-history drwx-wx-wx - hive supergroup 0 2023-10-26 13:35 /tmp drwxrwxrwx - hive supergroup 0 2023-10-26 14:48 /user drwxrwxrwx - hadoop supergroup 0 2023-10-26 14:48 /yarn切換至jindo-distcp-tool-${version}.jar包所在目錄。
cd /opt/apps/JINDOSDK/jindosdk-current/tools查看隨EMR叢集自動部署的jindo-distcp-tool的版本號碼。
ls將HDFS中的資料移轉至OSS-HDFS。
全量遷移或拷貝資料
將HDFS指定目錄/tmp下的資料全量遷移或拷貝到OSS-HDFS目標路徑oss://examplebucket/dir。以jindo-distcp-tool-6.1.0.jar為例,您需要根據實際環境替換對應的版本號碼。
hadoop jar jindo-distcp-tool-6.1.0.jar --src /tmp/ --dest oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=LTAI************************ --hadoopConf fs.oss.accessKeySecret=yourAccessKeySecret --parallelism 10樣本中涉及的各參數或選項說明如下:
參數及選項
說明
樣本
--src
待遷移或拷貝的HDFS資料所在的路徑。
/tmp/
--dest
OSS-HDFS中存放遷移或拷貝資料的目標路徑。
oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
--hadoopConf
訪問OSS-HDFS服務的AccessKey ID和AccessKey Secret。
AccessKey ID
LTAI************************AccessKey Secret
yourAccessKeySecret
--parallelism
根據叢集資源調整任務並發數。
10
增量遷移或拷貝資料
如果您僅希望拷貝在上一次全量遷移或拷貝後源路徑下新增的資料,此時您可以結合--update選項完成資料的增量遷移或拷貝。
例如,將HDFS指定目錄data/下的資料增量遷移或拷貝到OSS-HDFS目標路徑oss://destbucket/dir下。
hadoop jar jindo-distcp-tool-6.1.0.jar --src /data/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/ --hadoopConf fs.oss.accessKeyId=LTAI************************ --hadoopConf fs.oss.accessKeySecret=yourAccessKeySecret --update --parallelism 10
相關文檔
如果您不希望在每一次執行遷移命令時都要手動添加Endpoint和AccessKey,您可以在Hadoop的設定檔core-site.xml中預先配置Endpoint和AccessKey。具體操作,請參見非EMR叢集接入OSS-HDFS服務快速入門。
關於Jindo DistCp的其他使用情境,請參見Jindo DistCp使用說明。