全部產品
Search
文件中心

Object Storage Service:遷移HDFS資料到OSS-HDFS

更新時間:Apr 02, 2025

如果您需要備份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。

操作步驟

  1. 登入EMR叢集。

    1. 登入EMR on ECS控制台

    2. 單擊建立的EMR叢集。

    3. 單擊節點管理頁簽,然後單擊節點群組左側的+.jpg

    4. 單擊ECS ID。在ECS執行個體頁面,單擊執行個體ID右側的遠端連線

      如果您希望使用SSH方式登入,請參見登入叢集

  2. 將HDFS指定路徑下的資料移轉至OSS-HDFS。

    1. 執行以下命令查看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
    2. 切換至jindo-distcp-tool-${version}.jar包所在目錄。

      cd /opt/apps/JINDOSDK/jindosdk-current/tools
    3. 查看隨EMR叢集自動部署的jindo-distcp-tool的版本號碼。

      ls
    4. 將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

相關文檔