全部產品
Search
文件中心

E-MapReduce:Hadoop叢集遷移至DataLake叢集

更新時間:Jul 01, 2024

本文將詳細闡述如何將您已有的舊版資料湖叢集(Hadoop),高效地遷移至資料湖叢集(DataLake),以下分別簡稱“舊叢集”和“新叢集”。遷移過程將充分考慮舊叢集的版本、中繼資料類型以及儲存方式,並針對這些因素,提供適應新叢集的遷移策略與步驟。

背景資訊

E-MapReduce(簡稱EMR)新版控制台是EMR發布的下一代雲原生開源巨量資料平台,為使用者提供全新平台體驗、全新開發平台、全新資源形態和全新分析情境。新版控制台的功能特點,詳情請參見EMR新版控制台上線公告

EMR on ECS作為EMR主要資源形態之一已實現多項功能更新,特別是EMR新版控制台提供了DataLake、Dataflow、OLAP和Custom新叢集業務情境,相比EMR舊版控制台的叢集情境(例如,Hadoop、Data Science等),在叢集管控效能和引擎效能方面實現了顯著提升。資料湖叢集(DataLake)作為舊版資料湖(Hadoop)的升級版,升級至資料湖叢集(DataLake)後您將獲得多方面的顯著好處,詳細功能對比請參見資料湖叢集

準備工作

梳理舊叢集整體架構

梳理當前巨量資料業務架構,明確舊叢集應用情境,並關注以下資訊:

  • 服務涵蓋範圍與版本:記錄每箇舊叢集上正在啟動並執行服務涵蓋範圍和版本資訊,以便評估升級相容性和功能更新需求。

  • 中繼資料類型:確認舊叢集採用的中繼資料類型(DLF、自建RDS),以規劃新架構中中繼資料管理系統的對接和遷移策略。

  • 資料存放區架構:分析舊叢集的資料存放區架構(本地HDFS、OSS、JindoFS block模式),為後續資料移轉路徑設計提供依據。

  • 使用者認證&鑒權架構:確認是否使用舊平台叢集OpenLDAP、Ranger、Kerberos等服務,確保遷移後的新架構能夠無縫繼承現有的安全機制。

  • 調度系統:請確認當前使用的開發和調度系統,以便在遷移過程中保持任務調度的一致性和平穩過渡。

如果有多箇舊叢集需要升級,建議採取逐個叢集逐步遷移的方法,確保商務持續性和穩定性。根據業務的實際需求和優先順序,制定出切實可行的遷移順序和計劃,確保將舊叢集平滑遷移到新叢集中。

梳理舊叢集詳細資料

  • 查看叢集執行個體配置資訊

    在遷移至新平台建立叢集時,舊叢集的執行個體基礎資訊可應用於新叢集,詳情請參見建立新叢集。除了需要重點關注的軟體配置和硬體設定資訊外,其餘配置新舊叢集可使用相同配置。

    在EMR on ECS的舊叢集的基礎資訊節點管理頁面,查看叢集和節點群組的配置資訊,並重點關注以下資訊。

    配置類型

    配置名稱

    需要梳理的內容

    軟體配置

    • 叢集版本

    • 服務版本

    • 實際使用的組件列表

    • Hive中繼資料類型

    目前叢集中使用的服務列表和對應的版本。

    硬體設定

    • 叢集所在可用性區域

    • 各節點群組的規格及付費類型

    叢集所在可用性區域,以及各個節點群組硬體設定情況。例如,CPU、記憶體、系統硬碟、資料盤等。

  • (可選)匯出叢集服務元件配置

    在叢集的日常營運中,使用者常常會根據實際需求對服務元件的預設配置進行個人化調整或添加額外自訂配置。為了高效地實現這些配置資訊在不同叢集間的遷移,可以充分利用EMR的設定匯出功能,一次性大量匯出原有叢集的所有配置設定,在新叢集初始化階段再大量匯入這些配置,從而輕鬆快捷地完成服務元件配置的遷移工作。當然,如果不採用此大量操作方式,您也可選擇在建立叢集成功啟動後,逐一在服務管理介面中手工修改和調整各項服務配置。

    1. 匯出服務配置。

      您可以參見匯出和匯入服務配置,一鍵匯出目標服務元件的設定檔。

      說明
      • 選擇設定檔:建議僅勾選編輯過的設定檔,可多選。

      • 匯出模式:當前Hadoop叢集暫不支援只匯出自訂或者修改過的配置

      • 檔案匯出格式:請選擇JSON格式,以便能夠方便匯入新叢集。

      匯出的設定檔各參數含義如下表所示。

      參數

      描述

      ApplicationName

      服務名。

      ConfigFileName

      設定檔名稱。

      ConfigItemKey

      配置項的名稱。

      ConfigItemValue

      配置項設定的具體值。

    2. 編輯設定檔。

      請務必仔細審查從舊叢集匯出的配置資訊,篩選出並保留適用於新環境的必要配置項,同時刪除不需要的配置。

      • 調整YARN相關資源參數配置時,通常需要緊密關聯集群的實際硬體資源規格。因此,請務必確保新叢集中匯入的配置參數值是合理的。

      • 如果配置了JindoFS相關的配置(例如,Credential Provider),建議參照OSS/OSS-HDFS的相關配置進行調整,詳情請參見配置OSS/OSS-HDFS Credential Provider

    3. 將編輯後的設定檔應用於(可選)軟體自訂配置中,作為新叢集的預設配置。

  • (可選)梳理引導操作

    您可以在查看叢集執行個體配置資訊階段,查看舊叢集是否配置了引導指令碼。如果已添加引導操作指令碼,應仔細評估每個指令碼的功能,確認它們是否需要在新叢集中繼續使用。

    對於需要在新叢集中繼續使用的引導指令碼,請按照以下步驟進行調整,確保它們能在新叢集中正常運行。

    • 修改指令碼中與開源組件版本相關的JAR包名稱、路徑等資訊。新舊平台檔案路徑請參見熱門檔案路徑

    • 如果指令碼執行中涉及從OSS下載檔案,相應的OSS命令可能需要修改,詳情請參見管理引導操作

    指令碼修改完成後,將其上傳到OSS,並在新平台叢集建立過程中填入修正後的引導指令碼OSS地址。

    重要

    在將引導指令碼部署至生產叢集之前,請務必確保該指令碼已在測試環境中驗證通過。

  • (可選)梳理舊叢集Auto Scaling規則

    舊平台叢集中如果配置了Auto Scaling規則,請查看已配置的Auto Scaling規則,重點關注資訊(例如,最大執行個體數、最小執行個體數、優雅下線、觸發方式、觸發規則),並在新平台叢集建立完成後,重新設定Auto Scaling規則,詳情請參見添加Auto Scaling規則

    1. 進入Auto Scaling頁面。

      1. 登入E-MapReduce控制台

      2. 單擊目的地組群的叢集名稱。

      3. 單擊Auto Scaling頁簽。

    2. 查看Auto Scaling規則。

      Auto Scaling頁簽,單擊已配置Auto Scaling規則的節點群組操作列的配置規則。重點關注以下資訊:

      • 最大執行個體數

      • 最小執行個體數

      • 優雅下線

      • 觸發方式

      • 觸發規則(擴容、縮容)

    說明

    執行個體選擇方式、計費類型、執行個體規格、優雅下線等參數在新叢集上配置在節點群組屬性面板中,詳情請參見管理節點群組

  • (可選)查看舊平台叢集負載情況

    查看叢集資源負載可觀測舊叢集日常資源水位,用於評估新叢集所需的硬體設定。您也可以選擇先平滑遷移叢集,即確保新舊平台叢集採用相同的硬體規格設定,後續再根據實際運行過程中的資源使用率對新叢集的硬體資源配置進行調整。

    • 方法一:查看叢集監控

      查看叢集負載指標,重點關注YARN和HDFS的使用方式,詳情請參見查看服務監控指標

    • 方案二:查看EMR Doctor叢集日報

      Doctor叢集日報中提供當前叢集計算資源、YARN調度資源、HDFS儲存資源的全域分析,您可以查看叢集已有資料總量、冷熱資料分布情況以及叢集計算任務分布情況等資訊,詳情請參見查看叢集日報與分析

      說明

      EMR Doctor在舊平台叢集需要申請安裝,詳情請參見開通EMR Doctor(Hadoop叢集類型)

明確遷移方案和時間節奏

根據您當前巨量資料業務情況和實際每箇舊叢集配置情況,確定最終遷移目標,明確以下關鍵資訊,並參考後續遷移步驟合理規劃人力資源和時間周期。

  • 新叢集所選產品版本和服務涵蓋範圍,服務元件相容性請參見產品版本及可選服務

  • 新叢集中繼資料選型(DLF或自建RDS)

  • 新叢集儲存方案(OSS-HDFS或OSS)

步驟一:構建新環境叢集

建立新叢集

建立新叢集的詳細步驟和參數說明,請參見建立叢集,可以根據在查看叢集執行個體配置資訊中梳理出的叢集參數進行填寫。以下配置參數需要重點關注。

  • 產品版本及可選服務

    您可以根據在查看叢集執行個體配置資訊中梳理出的服務列表,對照服務相容資訊,選擇新叢集上服務的範圍和版本。

    • 組件相容性說明

      隨著開源社區服務的版本更新,DataLake情境中部分服務的版本高於Hadoop中的服務版本。下表展示了高版本服務向下相容情況。您可以根據舊叢集軟體版本資訊,結合以下表格中的資訊,確定新叢集的服務版本。

      舊平台叢集服務

      向下相容區間1

      向下相容區間2

      向下相容區間3

      向下相容區間4

      Spark

      2.x

      3.x

      -

      -

      Hive

      2.x

      3.x

      -

      -

      Tez

      全部新舊版本相容

      -

      -

      -

      Delta Lake

      0.6.x

      0.8.0-1.1.0

      -

      -

      Iceberg

      0.12.x

      0.13.x

      -

      -

      Hudi

      0.6.x

      0.8.x

      0.9.x

      0.10.x

      Sqoop

      全部新舊版本相容

      -

      -

      -

      Ranger

      1.x

      2.x

      -

      -

      OpenLDAP

      全部新舊版本相容

      -

      -

      -

      說明
      • 向下相容性區間表示在該區間內的軟體版本,高版本可以相容低版本。

      • 以上服務相容資訊僅供參考,具體請以各服務在開源社區的官方描述為準。

      • 由於開源社區活躍度變化和新技術更迭,部分開源服務不在EMR新平台上繼續支援。

        例如,Hue、Zeppelin、Ooize,建議遷移至EMR Notebook或EMR Workflow,或者在叢集上自行搭建相應的引擎。

    • 選擇合適的產品版本

      重要

      在軟體版本滿足要求的情況下,建議選擇最新的EMR產品版本,以獲得更豐富的功能支援。

      當前DataLake情境下,阿里雲EMR產品提供了EMR-3.x和EMR-5.x兩個系列。每個系列中包含多個產品版本,這些不同版本中所整合的服務及其版本各異。在構建新叢集時,您應根據自身資料湖應用情境以及目標服務的相容性需求,為新叢集選擇合適的產品版本。下表為您展示了舊叢集與新平台版本之間的對應關係。

      舊叢集版本資訊

      對應新叢集版本資訊

      EMR-3.35.0:YARN 2.8.5、HDFS 2.8.5、Hive 2.3.7、Spark 2.4.7

      EMR-3.x系列

      EMR-5.6.0:YARN 3.2.1、HDFS 3.2.1、Hive 3.1.2、Spark 3.2.1

      EMR-5.x系列

    • HDFS&OSS-HDFS選擇說明

      在EMR-5.12.1及之後版本,EMR-3.46.1及之後版本中,您可以在可選服務中選擇採用HDFS或OSS-HDFS作為叢集的儲存方式。

      image

      根據在明確遷移方案和時間節奏中明確的叢集儲存方案,在新叢集建立中配置可選服務時需要選擇對應的服務。

      新平台叢集儲存方式

      服務選擇

      OSS

      OSS-HDFS

      OSS-HDFS

      OSS-HDFS

      說明

      當在可選服務參數中選擇了OSS-HDFS服務時,需要配置叢集儲存根路徑,即選擇一個開通了OSS-HDFS服務的Bucket,作為叢集的儲存根路徑。

  • 選擇中繼資料

    EMR新平台支援以下中繼資料存放區方式,請根據明確遷移方案和時間節奏中確定的中繼資料存放區方案進行選擇。如果中繼資料需要遷移,請在新平台叢集建立完成後參見中繼資料遷移

    中繼資料存放區方式

    說明

    DLF統一中繼資料(推薦)

    中繼資料存放區在資料湖構建DLF中。如果舊平台已在使用DLF,可配置相同的DLF資料目錄,則新叢集建立完成後自動對接同一份中繼資料,無需遷移中繼資料。

    自建RDS

    使用自建的阿里雲RDS作為中繼資料庫。選擇該方式時,需要配置已有RDS相關的參數,詳情請參見配置自建RDS

    內建MySQL

    中繼資料存放區在叢集本地環境的MySQL資料庫中。

    重要

    該方式僅用於測試情境,請勿用於生產環境。

  • (可選)軟體自訂配置

    如果您匯出了舊平台叢集中的服務配置,或計劃在建立叢集流程中預置配置,則可以在新平台叢集建立流程中開啟軟體自訂配置,並將編輯好的配置粘貼輸入框中,詳細使用方法請參見配置自訂軟體

  • 硬體設定

    查看叢集執行個體配置資訊階段,您可以全面瞭解叢集中各個節點的硬體設定資訊。針對不同執行個體節點,例如Master、Core和Task,您應當根據業務需求為每個執行個體節點選擇合適的硬體資源配置。

    • 建議在建立新叢集時選用ECS最新的執行個體規格類型系列以及雲端硬碟類型,以使用更新的硬體特性。

    • 如需添加更多具有相同角色的節點群組,可在叢集建立完成後,通過新增節點群組功能便捷地完成這一操作。

    • 掛載公網:支援按節點群組維度進行開啟。一旦開啟某個節點群組的公網掛載功能,該節點群組內所有節點均將分配公網IP。

      當您需要通過公網登入到主節點,或者使用EMR服務提供的訪問連結與連接埠映射功能時,必須為Master節點群組開啟公網。

(可選)建立新版Gateway

Gateway主要用於向計算叢集提交任務和進行安全隔離。如果您在舊平台已經使用了Gateway叢集,則可以參考以下資訊在新平台上進行Gateway的建立。

在新平台上,EMR提供了更加靈活的Gateway部署方案,允許您在已有的ECS執行個體上部署Gateway,並自動同步計算叢集的配置。為簡化Gateway環境的部署過程,EMR推出了一個名為EMR-CLI的工具,該工具可協助您在已有的阿里雲ECS執行個體上輕鬆布置Gateway,詳情請參見使用EMR-CLI自訂部署Gateway環境

步驟二:遷移及校正

新叢集環境構建完畢後,需要對舊叢集中繼資料、資料和作業進行遷移。

中繼資料遷移

EMR新舊平台均支援自建RDS、DLF和內建MySQL三種中繼資料管理方式。針對新平台,我們強烈推薦您採用DLF中繼資料服務。根據新舊叢集不同的中繼資料管理方式,有以下遷移方案。

舊平台中繼資料方案

新平台中繼資料方案

遷移方式

DLF

DLF

無需重新遷移資料,只需確保新叢集指向與舊叢集相同的DLF資料目錄即可。

統一meta資料庫

DLF

詳情請參見EMR中繼資料遷移公告

本地MySQL

DLF

詳情請參見中繼資料遷移

自建RDS

DLF

詳情請參見中繼資料遷移

資料移轉

在新叢集建立完成後,根據新舊叢集不同的儲存方式,提供以下遷移方式,以確保舊叢集資料能夠順利且準確地遷移到新叢集中。

舊叢集儲存

新平台儲存

遷移方式

OSS

OSS

無需遷移資料。

OSS

OSS-HDFS

使用JindoDistCp使用說明工具進行資料移轉。

JindoFS Block

OSS-HDFS

HDFS

OSS-HDFS

資料正確性校正

說明

如果新叢集不需要資料移轉,您可以跳過資料正確性校正這一環節。

在成功完成新叢集的資料移轉任務後,需要對HDFS資料以及Hive庫表等資料進行正確性驗證。一旦探索資料不一致的問題,應立即採取行動,例如重新運行受影響的任務、補充缺失資料等措施。

針對不同的資料校正需求,您可以根據不同的校正要求選擇對應的校正方式。

校正要求

校正方式

檔案校正

通過計算檔案的checkSum值進行比對,確保檔案在遷移過程中未發生任何改變或損壞。

粗略資料校正

適用於快速評估整體資料一致性,主要檢查表層級的統計資訊,例如:核實表的總行數(count)、數字列的總和(sum)、平均值(avg)、最小值(min)以及最大值(max)。

詳細資料校正

針對每行資料的詳盡核查,以保證所有資料項目在遷移後與源叢集完全一致,這種校正方式能更深入地檢測資料的完整性和準確性。

作業遷移

為了確保舊叢集的作業能在新叢集上順利調度執行,針對不同的調度系統和環境,我們需要採取相應的遷移策略:

  • 對於正在使用EMR舊版資料開發的使用者,需要遷移至EMR Workflow,詳情請參見EMR舊版資料開發遷移公告

  • 採用其他開發環境(例如,阿里雲DataWorks或您自建的開發平台)的使用者,則需依據各自所使用的開發環境提供的遷移指南進行操作。

    請仔細參考對應平台的具體遷移說明文檔,根據自身實際部署情況及業務需求調整相關配置,例如切換計算叢集資訊等關鍵設定,以確保作業能在新叢集上正確調度執行。

步驟三:新舊叢集並行雙跑校正

在進行叢集遷移時,為了最大限度地減少對線上業務的潛在影響,實施叢集遷移時通常需要進行新舊叢集間的雙跑校正。這一過程涉及將線上流量複製至新叢集,並同時在新叢集上執行作業任務,通過這種方式對資料的一致性和業務的正確性進行全面校正。

由於雙跑校正的具體方式會根據您的實際開發環境、業務特性以及資料處理需求有所不同,因此強烈建議您在執行這一關鍵步驟時,結合自身業務情境和需求特點,靈活選擇並制定適宜的雙跑校正方案。

步驟四:舊叢集下線

在順利完成資料業務校正之後,即可正式進行交付。通過分步驟地將舊叢集上的作業負載逐步遷移至新叢集,並在新叢集上逐漸增加作業處理量,最終確保所有業務均能在新叢集上穩定運行。

當舊叢集的業務完全遷移到新叢集,且舊叢集已無任何業務運行時,可以參照釋放叢集流程,對舊平台叢集進行安全、有序的釋放操作。