Realtime ComputeFlink版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里雲基於Apache Flink構建的企業級高效能的即時巨量資料處理系統。Hologres與Flink深度連通,支援即時寫入Flink的資料,可以即時查詢寫入的資料,協助您快速搭建即時數倉。
形態說明
阿里雲Realtime ComputeFlink版不進行業務儲存,所有的資料均來自於外部儲存系統持有的資料。阿里雲Realtime ComputeFlink版支援的資料存放區類型如下:
源表
源表指輸入至Flink的資料輸入源。Flink的源表指定為Hologres時,使用的是大量匯入而非流式匯入,Hologres會將全表的資料統一掃描一次後再輸出至下遊,掃描完成後本次作業結束。
維表
維表一般適用於點查詢情境(Lookup by Key),因此在Hologres中,維表建議使用行儲存,並且JOIN的欄位必須是完整的主鍵欄位。
結果表
結果表用於接收並存放經過Flink計算的結果資料,為下遊資料繼續消費提供各類讀寫介面。
阿里雲Realtime ComputeFlink版還支援很多企業級進階能力,通過與Hologres深度整合,提供以下創新能力:
Hologres Binlog消費
使用訊息佇列的模式消費Hologres表的Change Log。
Flink Catalog
Flink支援匯入Hologres中繼資料為Catalog,在Flink全託管控制台直接讀取Hologres中繼資料,不用再手動註冊Hologres表,可以提高開發效率且能保證表結構的正確性。
Schema Evolution
Flink全託管支援Schema Evolution,在Flink讀取JSON資料時,可以自動解析類型,自動建立對應表的列,支援資料模型的動態演化。
Hologres支援的Flink產品形態及功能如下表所示。
產品形態
資料存放區類型
企業級進階能力
描述
源表
結果表
維表
Hologres Binlog消費
Flink Catalog
Schema Evolution
Flink半託管
支援行儲存及列儲存,Binlog源表建議使用行儲存或行列共存。
支援行儲存及列儲存
建議使用行儲存或行列共存
支援
支援
支援
使用EMR Studio開發平台。
Blink獨享(已停售)
支援行儲存及列儲存,Binlog源表建議使用行儲存或行列共存。
支援行儲存及列儲存
建議使用行儲存或行列共存
Hologres V0.8版本只支援行儲存,V0.9及以上版本支援行儲存及列儲存。建議使用行儲存。
不支援
不支援
使用Bayes開發平台。
推薦使用阿里雲Flink全託管。
開源Flink1.10
不支援
支援行儲存及列儲存
不支援
不支援
不支援
不支援
-
開源Flink1.11及以上版本
不支援
支援行儲存及列儲存
建議使用行儲存
不支援
不支援
不支援
從開源Flink1.11版本開始,Hologres代碼已開源。詳細內容請參見GitHub。
開源Flink1.13及以上版本
支援批量源表
支援行儲存及列儲存
建議使用行儲存
不支援
不支援
不支援
從開源Flink1.11版本開始,Hologres代碼已開源。詳細內容請參見GitHub。
Hologres Connector Release Note
Flink版本 | 阿里雲Realtime ComputeVVR版本 | Hologres版本 | 更新資訊 | 相關文檔 |
1.17 | 8.0.9~8.0.10 | 2.1.x 2.2.x 3.0.x |
| |
1.17 | 8.0.8 | 2.1.x 2.2.x | 結果表:
| |
1.17 | 8.0.7 | 2.1.x | 維表:
通用:
| |
1.17 | 8.0.6 | 2.1.x | 源表:
通用:
| |
1.17 | 8.0.5 | 2.0.x 2.1.x | 源表:
結果表:
通用:
| |
1.17 | 8.0.4 | 2.0.x 2.1.x | 源表:
通用:
| |
1.17 | 8.0.3 | 2.0.x 2.1.x | 通用:
| |
1.15 | 6.0.7 |
|
| |
1.15 | 6.0.6 | 1.3.x | 源表:
| |
1.15 | 6.0.5 | 1.3.x |
| |
1.15 | 6.0.3~6.0.4 | 1.3.x | 源表:
結果表: 支援以Fixed Copy的模式寫入,Fixed Copy是Hologres1.3版本新增的能力,相比通過JDBC模式進行寫入,Fixed Copy方式可以實現更高的吞吐(因為是流模式)、更低的資料延時和更低的用戶端記憶體消耗(因為不攢批)。 Hologres Catalog:
sdkMode參數:Hologres不同類型的表都有多種模式可以選擇,此版本開始統一整理為sdkMode參數。 | |
1.13 | 4.0.18 | 1.1及以上版本 | 修複Sink表上報Metrics影響寫入效能的問題。 | |
1.13以及1.15 | 4.0.15以及6.0.2 | 1.1及以上版本 | 源表:
維表: Hologres維表支援非同步請求的逾時時間(asyncTimeoutMs)設定。 結果表:
| |
1.13 | 4.0.13 | 1.1及以上版本 |
| |
1.13 | 4.0.11 | 0.10及以上版本 | 支援CTAS、CDAS。 | |
1.13 | 4.0.8 | 0.10及以上版本 | 結果表、源表、維表支援Hologres Catalog。 | |
1.13 | 3.0.0 | 0.9及以上版本 | 支援即時消費Hologres。 |
Hologres Connector相關已知缺陷和修複版本
缺陷及修複說明
影響版本會明確標註,不在範圍內的沒有對應缺陷。
影響版本戳記為“不涉及”,表示問題可能是Hologres引擎的缺陷,而非Connector的問題。
缺陷等級說明
P0:建議立即升級,一旦觸發會影響線上的使用(如查詢正確性、寫入成功率等操作)。
P1:推薦升級,提前規避相關問題。
P2:選擇性升級,偶爾發生的問題,具備應該改寫方法,或重啟即可修複。
等級 | 缺陷描述 | 影響版本 | 修複版本 | 解決方案 |
P1 | JDBC模式消費Binlog,出現Binlog Convert Failed異常,或者部分shard的資料讀取停止在某個時刻。原因是Hologres執行個體的Gateway收到後端逾時的異常資訊時,將異常返回給用戶端的過程中會存在問題,導致讀取數據卡住或資料解析失敗報錯。 | 不涉及 | 不涉及 | 一般在作業反壓時會更容易出現,如果作業存在資料讀取卡住的問題,可以選擇重啟作業並從最近的checkpoint恢複。 要徹底解決該問題,需要將Hologres版本升級到2.2.21及以上版本。 |
P2 | 作業上線慢或者逾時,查看Thread Dump卡在 GetTableSchema處。 | 不涉及 | 不涉及 | 可能存在多種情況,可以根據以下步驟依次排查:
|
P0 | 通過FixedFE(對應connector中的jdbc_fixed模式)寫入Hologres的 Text,Json或Jsonb類型時,如果資料來源有不合法的字元,可能拋出預期外的異常,進一步導致當前串連所在FE節點重啟,當前FE的串連中斷。 | 不涉及 | 不涉及 | 如果無法保證上遊字串的合法性,建議使用jdbc模式寫入,並且為結果表開啟
或者將Hologres版本升級至3.0及以上版本,以繼續使用jdbc_fixed模式。 |
P1 | 在進行JDBC維表一對多join時,Flink Task出現記憶體使用量過高或者OOM 的情況。 | 不涉及 | 不涉及 | Hologres1.3版本,使用 要徹底解決該問題,需要升級Hologres執行個體版本至 2.0及以上版本。 |
P1 | Binlog作業有狀態恢複時,拋出 | 8.0.4 | 8.0.9 | 從8.0.9版本開始,不再強制檢查table id,而是僅輸出WARN層級日誌,以允許作業從最新狀態恢複。但仍然不推薦在binlog表作業運行時進行重建表操作。對binlog來說,這類操作會導致之前的binlog完全丟失。 |
P2 | 作業運行過程中發生反壓,查看ThreadDump發現Execution Pool卡在close或者start方法。原因是共用串連池多個client複用同一個串連池時,可能存在死結,導致串連池無法正常關閉。 | 8.0.5 | 8.0.9 | 建議升級版本。 |
P2 | 如果對源表進行了 | 8.0.6及之前版本 | 8.0.7 | 建議升級或者指定其即時間進行增量消費。 |
P1 | 維表欄位數量較多時,作業上線逾時。 | 8.0.6 | 8.0.7 | 建議升級版本。 |
P0 | 當在批量源表中開啟 說明 全增量和Binlog源表不存在此問題。 | 8.0.5及之前版本 | 8.0.6 | 建議升級版本。 |
P0 | 通過FixedFE(對應Connector中的 | 8.0.5及之前版本 | 暫無 | 如果無法保證上遊JSON或JSONB字串的合法性,建議使用JDBC模式寫入。 |
P1 | JDBC維表一對多Join時,內部出現的串連失敗等異常無法拋出,表現為非同步Join節點反壓且資料不再流動,發生機率較小。 | 6.0.7及之前版本 | 8.0.3 | 建議升級版本,也可以通過重啟作業暫時恢複。 |
P1 | 通過JDBC模式消費Binlog時,存在記憶體流失問題。可能的表現為作業啟動時消費速率較高,之後持續下降。 | 6.0.7及之前版本 | 6.0.7 | 建議升級版本,對於DataStream作業,需要使用6.0.7-1版本的依賴。 |
P0 | JDBC模式寫入的定時Flush(由jdbcWriteFlushInterval參數控制)捕獲的異常在下條資料寫入時才會拋出,當使用者寫入流量較小時,異常被捕獲還未拋出期間有可能進行成功的checkpoint。下次失敗時會從這個不合理成功的checkpoint恢複,從而可能出現丟資料的情況。 | 6.0.6及之前版本 | 6.0.7 | 流量較小時容易出發此缺陷,建議升級版本,或者調整jdbcWriteFlushInterval時間大於checkpoint的間隔時間。 |
P2 | JDBC模式消費Binlog不設定Slotname時,系統會自動建立一個Slotname。若當表名含有特殊字元或Schema名稱時,自動建立非法Slotname,無法使用,且作業將會拋出syntax error異常。 | 6.0.6 | 6.0.7 | 建議升級版本,對於DataStream作業,需要使用6.0.7-1版本的依賴。 |
P1 | 使用者作業中不同的Hologres執行個體或資料庫使用相同的 | 6.0.6及之前版本 | 6.0.7 | 同一個作業使用的Hologres執行個體或者資料庫不同時,使用不同的 |
P1 | 維表字串類型有 | 6.0.6 | 6.0.7 | 建議升級版本。 |
P0 | Hologres源表預設開啟Filter下推,但如果作業也使用了Hologres維表,且寫入的DML中包含對維表非主鍵欄位的過濾條件時,維表的Filter也會被錯誤地下推,可能導致維表Join出現錯誤結果。 | 6.0.3~6.0.5 | 6.0.6 | 建議升級版本。 |
P0 | 多個結果表的 | 6.0.2及之前版本 | 6.0.3 | 將全部結果表的 |
P1 | Binlog源表DDL中聲明 | 6.0.2 | 6.0.3 | 不使用所述欄位,或者升級版本。 |
P1 | 彙報Metrics會影響結果表的寫入效能,排查表現為Sink節點的 | 4.0.15~4.0.17 | 4.0.18 | 選擇沒有受影響的版本。 |
P2 | 批量源表讀取字元或字元數群組類型,其中比較特殊字元時,解析字串失敗。 | 4.0.14及之前版本 | 4.0.15 | 清理源表中的髒資料,或者升級版本。 |
P2 | 全增量一體化源表DDL中聲明 | 4.0.13 | 4.0.14 | 不使用全增量功能,或者升級版本。 |