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 | 不使用全增量功能,或者升級版本。 |