本文為您介紹從原有集群(線下IDC自建集群或ECS自建)遷移Flink作業到DataFlow集群的整體流程,包括準備工作,如何遷移作業,以及常見問題等。
背景信息
EMR集群的基礎信息,請參見集群規劃。
準備工作
集群規劃
創建DataFlow集群時,集群Core實例的CPU和內存總量可以參考原有集群的規模,再根據作業在DataFlow集群的實際運行情況進行微調。在選擇具體機型時,您可以根據是否有本地盤需求、是否希望使用規模較大的物理機等條件進行選擇。
Master實例規格通常與整體集群規模大小有關,對應集群最大CU規格經驗值如下表所示。
Master型號 | 集群最大CU規格 |
4核16 GB | 80 CU |
8核32 GB | 160 CU |
16核64 GB | 800 CU |
24核96 GB | 800 CU以上 |
網絡互通
在EMR控制臺創建完DataFlow集群之后,在遷移作業之前,您還需要確保提交Flink作業的客戶端所在的機器與DataFlow集群之間的網絡互通。
針對原集群的不同情況,您可以選擇不同的解決方案:
線下IDC自建集群:可以通過阿里云高速通道建立線下IDC和線上E-MapReduce所在VPC網絡的連通。
ECS自建:由于VPC實現用戶專有網絡之間的邏輯隔離,所以建議使用VPC網絡。
經典網絡與VPC網絡互通:目前阿里云存在經典網絡和VPC兩種網絡類型。由于E-MapReduce集群是在VPC網絡中,而很多用戶的業務系統還存在于經典網絡中,為了解決此問題,阿里云推出了ClassicLink方案,您可以參見此方案進行網絡互訪,詳情請參見建立ClassicLink連接。
VPC網絡之間的連通:選擇新舊集群處在同一個區域的同一個可用區內。
環境配置
由于DataFlow集群采用YARN部署模式,如果提交Flink作業的客戶端不位于DataFlow集群內,您還需要在提交Flink作業的客戶端的機器上配置好Hadoop相關的配置項,并設置好相關的環境變量。
驗證遷移環境
您自建集群的環境可能與DataFlow集群的環境不完全一致,例如JDK版本不同等。為了保證作業的正常遷移,強烈建議您在遷移生產作業之前,先通過多種方式驗證遷移方案是否有效,例如:
在遷移生產作業之前,先遷移若干測試作業,觀察整個遷移流程是否完備。
分批遷移,在遷移重要作業之前,先遷移優先級比較低的作業。甚至可以在條件允許的情況下,您可以繼續運行原來的作業,將遷移過來的作業試運行,如果沒有問題,再下掉原來的作業。
遷移和運行作業
類型 | 描述 |
遷移Checkpoint文件 | 將Checkpoint文件拷貝到DataFlow集群的HDFS上或者上傳到OSS中,在提交Flink作業的時候,可以通過-s參數指定Checkpoint文件,即可在DataFlow集群中使用該Checkpoint文件恢復作業。 |
遷移Flink作業 | 與原集群中的提交方式類似,您只需要將Flink作業提交到DataFlow集群即可。 |
運行不同版本的Flink作業 | 您原集群中的作業使用的Flink版本可能不同,例如,既有基于Flink 1.9版本的,也有基于Flink 1.12版本的。如果您希望不同版本的Flink作業都可以在DataFlow集群中運行,詳細方法如下:
|
對接自建平臺
如果您自建了一套大數據平臺,則DataFlow集群也可以輕松集成進您現有的平臺中:
資源管理與運維
DataFlow集群基于YARN進行資源調度與管理,因此只需要按照集成YARN集群到已有平臺的通常操作進行即可。您可以根據需要配置YARN隊列的資源等,之后可通過YARN的REST API來訪問YARN作業狀態,并進行運維。
日志查看
對于運行中的作業,可以通過Flink Web UI進行查看,詳細信息請參見基礎使用。
對于已經運行結束的作業,可以通過Flink History Server查看狀態或者通過YARN提供的命令,例如
yarn logs -applicationId application_xxxx_yyyy
來訪問作業的日志。說明其中Flink History Server的日志默認存儲在HDFS集群的hdfs:///flink/flink-jobs/目錄下,YARN日志默認存儲在HDFS集群的hdfs:///tmp/logs/$USERNAME/logs/目錄下。
指標監控
如果您的自建平臺已有監控報警系統,則可以在Flink的作業配置中,配置相關的Metric Reporter即可。另外,DataFlow集群的Flink作業的指標也對接了EMR的監控報警。
報警
除了可以使用您的報警體系之外,也可以使用阿里云提供的云監控(CloudMonitor)來配置報警規則,并對接郵箱、釘釘群等提醒機制。使用云監控配置詳情,請參見創建閾值報警規則。
常見問題
Q:JDK版本不一致,如何處理?
A:DataFlow集群中使用的是OpenJDK,如果您在原來集群的作業中使用的是Oracle JDK,并且您的作業中使用了Oracle JDK中特有的功能時,JDK版本的不一致可能導致運行作業時部分類找不到(例如,javafx.util.Pair等)。因此,您的作業中需要避免顯式使用Oracle JDK特有的依賴。
Q:是否可以支持多個Flink版本?
A:可以。DataFlow集群支持多種作業提交方式,例如YARN per-job方式、YARN Application方式等。基于Flink on YARN的部署模式,在未設置yarn.provided.lib.dirs參數的情況下,Flink作業在YARN集群中運行時所使用的Flink Runtime為提交作業的客戶端所使用的Flink(例如,開源Flink 1.13等)。因此如果您想使用特定的Flink版本運行作業,有兩種方式:
直接使用Flink的特定版本進行提交,并且不設置yarn.provided.lib.dirs參數。
通過指定yarn.provided.lib.dirs參數,來使用特定的Flink Runtime。另外,在該場景下,考慮到兼容性,推薦您使用YARN per-job模式進行提交。