本文將介紹StarRocks遷移至EMR Serverless的整體解決方案及具體遷移步驟。該遷移方案僅供參考,您需要結合實際業務情況進行調整與最佳化,以更好地滿足您的需求。
遷移流程
整體遷移流程如下圖所示,涵蓋了作業改寫、作業雙跑、資料校正、業務校正以及割接等多個步驟。
前期評估
確認當前叢集情況
請確認當前叢集的基本情況,包括叢集的版本,FE規格和數量,BE規格和數量,以及負載等資訊。
叢集資訊 | 叢集資訊 | 配置樣本 |
FE配置 | 機型配置 | 通用型ecs.g7.4xlarge 16 Core 64 GB 系統硬碟:ESSD PL1 雲端硬碟 100 GB * 1塊 資料盤:ESSD PL1 雲端硬碟 100 GB * 1塊 |
節點數量 | 3台 | |
BE配置 | 機型配置 | 通用型ecs.g7.4xlarge 16 Core 64 GB 系統硬碟:ESSD PL1 雲端硬碟 100 GB * 1塊 資料盤:ESSD PL1 雲端硬碟 1000 GB * 4塊 |
節點數量 | 3台 | |
StarRocks版本號碼 | - | 例如:2.5.13 |
叢集負載 | CPU負載 | 高峰:82.9% 低峰:50.3% |
MEM負載 | 高峰:82.9% 低峰:50.3% | |
磁碟IOPS負載 | 高峰:10504 低峰:1003 | |
磁碟IO負載 | 高峰:514 MB/s 低峰:15 MB/s |
確認業務使用方式
以下資訊僅為配置樣本,實際應用時需根據具體情況調整。
資料匯入方式
資料匯入方式
資料寫入分類
每日資料增量
每日新行數
任務數
即時寫入(Flink)
即時資料
10 GB
1 億行
80
Kafka + Routine
即時資料
10 GB
1 億行
20
離線匯入(Spark Connector、DataX)
離線資料
10 GB
1 億行
120
物化視圖使用方式
物化視圖
任務數
同步頻率
同步物化視圖
12個
無
非同步物化視圖
89個
大部分為每小時更新
Insert Overwrite
120個
大部分為每半小時更新
確認業務能夠接受的停服時間
為了確保商務持續性,必須提前評估業務能夠接受的停服時間。整個遷移的停服時間取決於具體方案,通常在30分鐘至半天左右不等。因此,務必提前與業務方進行充分溝通,明確預期停服時間。
建立目的地組群
建議目的地組群與源叢集的配置盡量保持一致,待業務文檔運行後再根據負載情況靈活進行擴縮容。
根據您的業務需求,選擇適當的執行個體類型建立Serverless StarRocks執行個體。您也可以通過DingTalk群24010016636聯絡我們進行評估。參考文檔如下:
資料移轉
1、安裝遷移工具
該工具基於兩個叢集的中繼資料以及檔案中繼資料對比,會定期將源叢集的中繼資料以及資料增量同步處理到目的地組群中。它作為遷移過程的一環,主要解決存量資料同步,中繼資料同步以及離線部分增量資料更新。
遷移工具的使用限制、安裝、使用等資訊,請參見StarRocks跨叢集資料移轉工具。
遷移工具速率說明:
參考經驗值:約1 TB/小時。
具體遷移速率受以下因素影響:同步的庫表數量、表資料量、表分區數量以及桶的數量。對於單表來說,tablet數量越多,遷移速率會越慢。
遠距離跨地區或跨VPC的遷移速率主要受網路穩定性影響。遷移過程中需要在兩個叢集之間建立大量串連,若網路不穩定或速率較慢,遷移速率也會受到顯著影響。
遷移工具測試:在完成安裝並正確配置了源叢集與目的地組群的詳細資料後,進行工具的功能驗證,確保其能夠順暢運作。
2、表結構&存量資料同步
通過上述遷移工具可以實現表結構以及存量資料的同步。您可以參考遷移工具的速率,同時結合實際測試情況來合理評估同步時間。通過配置遷移工具的以下2個參數,可以合理控制期望同步的表和資料的範圍。
如果您需要遷移叢集中所有資料庫和表,則無須配置以下參數。
參數 | 說明 |
include_data_list | 需要遷移的資料庫和表,多個對象時使用逗號( |
exclude_data_list | 不需要遷移的資料庫和表,多個對象時使用逗號( |
3、即時任務遷移
如果您正在執行Flink或Kafka的即時寫入任務,建議進行雙寫配置,以便同時將資料寫入目的地組群和源叢集,從而確保資料一致性。
停止遷移工具:首先,停止當前的遷移工具,並調整配置,以排除對正在即時更新的表資料的同步。可通過
exclude_data_list參數進行控制。Flink作業:在Flink作業的平台上,複製現有任務,並修改資料來源配置,指向目的地組群。
Stream Load作業:在目的地組群中手動建立相應的Stream Load作業,以實現對Kafka資料的雙寫同步。
在業務資料匯入時,通常會有明確的offset或時間戳記標識。例如,若同步任務於13:00啟動並於13:30結束,目的地組群表中至少應包含13:00之前的資料。同步任務結束後,可以將雙寫的Flink或Kafka任務設定到13:00之前的offset,以便完成遷移視窗期的資料追平工作。
4、離線任務遷移
離線任務啟動:去掉即時更新的相關表後,繼續啟動離線任務,保持對離線更新資料的持續同步。
離線任務複製:複製離線任務實現對目的地組群的更新,但在割接階段之前暫時不啟動相關任務。
確保提交離線任務的機器與目的地組群之間的網路連接穩定,避免因網路問題導致任務失敗。
選擇1~2個任務進行驗證,以確認離線任務流程的準確性和順暢性。
5、(可選)物化視圖遷移
請參考以下社區命令,以擷取相關的物化視圖或普通視圖的定義。然後,在目的地組群中逐個建立相應的視圖。
6、(可選)外表遷移
3.x及之後版本,建議使用Catalog對StarRocks的外表進行統一管理。更多Catalog資訊,請參見StarRocks Overview。
如果需要擷取源表的DDL,可以通過SHOW CREATE TABLE命令,但不推薦在新叢集中採用這種方式進行外表管理,建議優先使用Catalog。
根據您的具體需求,選擇合適的方法在目的地組群中建立外表,並測試外表功能是否正常。
7、(可選)UDF遷移
請參考SHOW FUNCTIONS命令,擷取相關FUNCTION內容,並在目的地組群中逐個建立相應的UDF。
在EMR Serverless StarRocks中,您的JAR等檔案應儲存在阿里雲OSS中,使用以oss:為首碼的檔案路徑進行替換。
資料校正
1、資料一致性校正
資料一致性校正主要目的是驗證同步資料的準確性,通過對源表與目的地組群進行比較。可以從以下幾個維度進行檢查:
庫或表數量對比
表記錄數對比
每行記錄的匯總或去重計數對比
如果源表與目標表存在輕微差異,可能是由於同步工具存在延遲導致的。建議結合業務情境,添加合適的時間戳記,以進行更精準的校正。
2、下遊業務校正
下遊業務校正主要從業務角度出發,對結果進行驗證,以確保源表、物化視圖及其他預先處理資料的正確性。具體校正方式如下:
有下遊測試系統:可切換資料來源至目的地組群,從業務角度對查詢結果和報表資料進行驗證。
無下遊測試系統,可採取以下兩種方法:
業務SQL複現:手動挑選關鍵業務SQL,執行查詢並比對結果,以進行校正。
生產環境驗證:利用業務系統進行驗證,此過程需與業務方提前協商,驗證完成後應儘快切換回源叢集。
如果業務結果資料存在輕微差異,建議結合業務情境,添加合適的時間戳記,以進行更精準的校正。
3、效能驗證
效能驗證的關鍵在於複現實際生產業務的各種壓力,包括資料匯入、業務查詢以及物化視圖的處理。同時,必須確保即時資料的雙跑、離線任務的同步處理以及物化視圖的正常運行,以類比真實的生產環境。以下是需要驗證的要點:
叢集負載:確保CPU、記憶體、磁碟IO、IOPS及磁碟利用率等各項指標均在預期範圍內。
業務查詢:驗證業務查詢的回應時間,確保其在業務需求的合理範圍內。
資料匯入:檢查資料匯入的延遲情況,確保其在業務需求的合理範圍內。
業務割接
1、確認停服時間
由於業務割接將導致短暫停服,我們需要提前評估停服時間,並與業務方確認。建議在業務低峰期進行停服,以最小化對業務的影響。
通常情況下,割接的停機時間主要集中在第五步(即業務系統切換至目的地組群)。此步驟預計耗時較短,預計30分鐘至1小時。具體時間會根據專案情況進行實際評估。
2、終止源叢集的離線資料同步
為確保割接時目的地組群能夠追平源叢集的資料,請在割接前停止離線同步任務。這意味著需要選擇適當的更新間隔期,並停止新資料的寫入,確保源叢集不再增加新的離線資料。
3、遷移工具持續同步,直至追平源叢集
遷移工具將保持即時同步狀態,直至與源叢集資料完全一致。
觀察時間至少10分鐘,若此期間無新資料同步,則算追平源叢集。
請確認所有離線寫入任務已終止,避免遷移工具因持續更新而無法追平。
4、離線同步任務寫入目的地組群
在之前的遷移步驟中,已配置好離線任務寫入目的地組群。本步驟僅需啟動這些任務,並觀察其運行情況,重點校正:
同步任務是否正常運行。
目的地組群的資料是否正常更新。
請確保同步任務的開始周期與原停止周期能夠無縫對接。例如,如果上次停止更新的時間為2024年02月01日 00:00,則新任務應從該時間點的下一個周期啟動。
5、業務系統切換為目的地組群
將下遊使用StarRocks的業務系統資料來源配置切換為目的地組群的配置,並驗證業務系統的查詢功能,確保查詢耗時符合預期。
若業務系統需要進行大量配置修改,建議提前準備修改指令碼,以縮短配置修改時間。
6、割接驗證
割接後,對業務系統進行驗證,主要從下遊進行檢驗,驗證項包括:
業務系統查詢結果是否正確。
業務系統查詢耗時是否符合預期。
如驗證中發現問題,請參考復原方案。
7、終止即時雙跑任務
驗證通過後,可以停止源叢集的即時寫入任務,正式完成割接。
復原方案
如果割接後驗證存在問題,請首先聯絡阿里雲EMR團隊協同解決相關問題。如果問題無法解決,再考慮復原方案。復原流程如下:
保持即時任務雙跑,避免執行資料校正階段的第7步操作(即終止即時雙跑任務)。
將業務系統切換回源叢集地址,驗證業務系統是否正常運行。
從上次停止的周期開始,恢複離線任務對源叢集的寫入。
停止向目的地組群寫入離線資料。