引言
在大數據時代,數據集成作為企業數據流轉的核心樞紐,承擔着異構數據源之間高效同步的重要職責。隨着數據量的爆炸式增長,傳統的行存同步方式在面對大規模列存數據處理時,逐漸顯露出性能瓶頸。
為解決這一挑戰,DataWorks數據集成推出基於Apache Arrow列存格式的高性能同步能力,實現從“行式傳輸”到“列式直通”的技術躍遷。通過引入零拷貝、列式內存標準Apache Arrow,DataWorks實現了跨數據源的列存到列存高效同步,性能提升最高達10倍以上,助力企業實現數據流轉的“高速通道”。
技術創新:基於Arrow的列存同步方案
Apache Arrow:下一代數據處理的“通用語言”
Apache Arrow是一項由Apache基金會主導的跨語言、高性能列式內存數據標準,被廣泛應用於大數據生態(如Spark、Flink、Presto等)。核心優勢在於:
- 零序列化/反序列化:數據以內存二進制塊直接傳輸,避免格式轉換開銷
- 零拷貝(Zero-Copy):跨進程/跨系統共享內存,極大降低CPU與內存消耗
- CPU緩存友好:列式存儲提升緩存命中率,優化計算效率
- 統一類型系統:支持複雜嵌套結構,保障跨平台類型兼容性
簡單來説:Arrow讓數據“原樣流動”,不再“反覆翻譯”。
傳統架構 vs Arrow架構:從“搬磚”到“高速專列”
當前大多數數據集成工具仍基於“行存驅動”設計:
- Reader讀取列存文件 → 解碼成單行Record對象;
- 框架傳遞Record → Writer再將其編碼回目標列存格式。
這一過程存在嚴重性能浪費:
- 多次類型轉換與對象創建(如String → BigDecimal)
- 高頻GC壓力導致頻繁Stop-The-World
- 內存帶寬利用率低下
而Arrow則徹底改變了這一流程:Reader直接輸出列式Batch → Writer直接消費列式Batch,中間無需任何轉換,真正實現“端到端列式流水線”。
傳統行存同步架構:
面向單行行存的格式設計,每一個Record對象定義了若干個Column,每個Column包含當前行對應該列的列值Value。以MaxCompute(ODPS)列存數據同步到MaxCompute(ODPS)列存為例:
MaxCompute表數據可能以ORC、Parquet等列存格式存儲的數據,同步核心流程分為:
- 通過MaxCompute Tunnel將數據按行讀取出來,並轉為MaxCompute Record對象;
- MaxCompute Reader將MaxCompute Record轉換為同步引擎的Record對象,投遞給框架;
- 框架收到Record放入緩存隊列;
- Writer從框架接收引擎Record,再轉換為MaxCompute Record,並通過Tunnel client將數據進行序列化後通過網絡傳輸給Tunnel server。
數據集成Arrow列存同步架構:
當列存到列存同步場景下,將列存先轉為行存格式,再將行存格式轉為列存格式,中間多了不必要的轉換及序列化操作。通過構建全新的 ArrowTabularRecord 數據結構,DataWorks實現了對Arrow列式數據的原生支持,跳過行式轉換環節,實現端到端列存“短路同步”,大幅提升吞吐、降低延遲。
同步引擎基於新的面向Arrow列存格式的ArrowTabularRecord,列存到列存數據流轉如下:
同步核心流程如下:
- 通過MaxCompute Tunnel Arrow API將數據直接按照Arrow列存格式讀取出來,並存入ArrowTabularRecord,投遞給框架;
- 框架收到Record放入緩存隊列;
- Writer從框架收到引擎ArrowTabularRecord,直接通過Tunnel Arrow API將數據基於Arrow格式,省去做序列化的開銷,直接將內存二進制數據傳輸給Tunnel Server。
核心能力:全鏈路列式加速,支持主流數據源
DataWorks數據集成現已全面支持 MaxCompute、Hologres、Hive/OSS/HDFS(Parquet/ORC) 等主流列存數據源的Arrow讀寫能力,用户僅需在任務配置中添加 "useArrow": true 即可一鍵啓用。
列存直讀直寫,顯著提升性能
|
數據源 |
支持能力 |
同步性能提升 |
|
MaxCompute |
通過Tunnel Arrow API直讀列存數據 |
同步性能提升 200% |
|
Hologres |
支持Arrow格式導出,避免JDBC行式瓶頸 |
同步性能提升 95% |
|
Hive\OSS\HDFS等分佈式文件 |
直接讀取Parquet/ORC底層Arrow格式數據 |
PARQUET同步性能提升5.55倍ORC同步性能提升 9.85倍 |
示例:Hive ORC → MaxCompute 寫入,原需數小時的任務,現可在數十分鐘內完成。
性能壓測報告
我們對多個典型場景進行了端到端性能測試,同步性能顯著提升,可實現從小時級到分鐘級的數據同步週期提升:
場景一:MaxCompute列存短路同步(Arrow → Arrow)
|
併發數 |
傳統行存 |
Arrow列存 |
性能提升 |
|
1 |
67.8 MB/s 3740 R/s |
212.6 MB/s 11462 R/s |
+206.5% |
|
3 |
185.6 MB/s 10226 R/s |
569.9 MB/s 30728 R/s |
+200.5% |
|
8 |
462.1 MB/s 25467 R/s |
1321.0 MB/s 71143 R/s |
+197.4% |
場景二:Hologres → MaxCompute 同步
|
併發數 |
傳統同步 |
Arrow同步 |
性能提升 |
|
4 |
439.1 MB/s 216480 R/s |
906.1 MB/s 404270 R/s |
+87% |
|
8 |
773.3 MB/s 381300 R/s |
1669.1 MB/s 745654 R/s |
+95% |
場景三:Parquet/ORC → MaxCompute 同步
|
併發數 |
傳統同步 |
Arrow同步 |
性能提升 |
|
Parquet |
26.1 MB/s 35631 R/s |
1198.1 MB/s 233587 R/s |
5.55倍 |
|
ORC |
21.4 MB/s 27661 R/s |
3256.3 MB/s 300326 R/s |
9.85倍 |
備註:Parquet、ORC文件可以在HDFS、OSS等分佈式文件系統中
核心優勢:不止於快,更穩、更低成本
|
特性 |
價值説明 |
|
高性能 |
吞吐量提升最高達10倍,適合寬表、大數據量搬站同步 |
|
低資源消耗 |
零拷貝 + 內存複用,降低GC壓力,節省計算成本 |
|
高兼容性 |
支持MaxCompute、Hologres、Hive等主流列存系統 |
|
易用性 |
僅需配置useArrow: true,無需代碼改造 |
典型應用場景:釋放數據流轉的無限可能
場景一:大數據搬站遷移
痛點:從Hive向MaxCompute遷移數百TB數據,耗時較久,影響業務上線 方案:啓用Arrow同步,列存直傳,避免格式轉換 成果:遷移時間從小時級同步縮短至分鐘級,效率提升10倍以上
場景二:異構數據源融合與湖倉一體化
支持Hive(湖)與Hologres/MaxCompute(倉)之間的列存高效互通,為數據湖倉一體架構提供核心數據流轉引擎,實現“一數多用、湖倉協同”。
如何使用?一步開啓Arrow加速
整庫解決方案
數據集成已經發布Hive->MaxCompute整庫同步功能,默認會自動根據同步字段類型,渲染開啓Arrow高性能同步能力。
💡 無需代碼改造,無需理解底層細節,一鍵開啓高性能同步。
單表離線同步
DataWorks數據集成單表離線任務,在reader和writer parameter下添加 useArrow: true 參數,即可開啓列式加速(由於是列存格式直讀直寫,開啓前提是需要保證源端和目標端列類型保持一致):
{
"type": "job",
"steps": [
{
"stepType": "hive",
"parameter": {
"useArrow": true,
"datasource": "my_datasource",
"column": [
"col1",
"col2"
],
"readMode": "hdfs",
"table": "table"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter": {
"useArrow": true,
"truncate": false,
"datasource": "odps_test",
"column": [
"col1",
"col2"
],
"table": "table"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"speed": {
"concurrent": 3
}
}
}
未來演進:構建更強大的數據同步生態
DataWorks將持續深化Arrow能力,打造企業級高性能數據流轉平台:
- 更多數據源支持:擴展至HDFS、Paimon、ClickHouse、Iceberg等;
- 智能調度優化:根據數據特徵自動選擇Arrow或行式模式;
- 生態融合:為DataWorks數據搬站,提供端到端數據解決方案
結語:讓數據真正高性能“跑”起來
DataWorks數據集成引入Apache Arrow列存同步能力,列式、零拷貝、內存級傳輸為同步性能帶來顯著提升。DataWorks數據集成正以技術創新為引擎,幫助企業打破數據孤島、消除性能瓶頸,讓數據在湖倉之間、系統之間、業務之間高速、穩定、低成本流動。