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.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已知缺陷和修複版本
等級 | 缺陷描述 | 影響版本 | 修複版本 | 解決方案 |
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 | 不使用全增量功能,或者升級版本。 |