本期導讀 :【JindoTable 計算加速】第二十講
主題:Spark 對 OSS 上的 ORC 數據進行查詢加速uid + JindoFS 對 OSS 上數據進行訓練加速
講師:健身,阿里巴巴計算平臺事業部 EMR 技術專家
內容框架:
- ORC 簡介
- JindoFS 列存加速
- 性能對比
- 演示
直播回放鏈接:(20講)
https://developer.aliyun.com/live/247100
一、ORC 簡介
ORC:Hadoop 生態的列存系統
- 來自 Hive 的列式存儲
- 支持列裁剪
- 包含類型信息,自描述
- 支持 Encoding/壓縮
Spark 與 ORC
- Spark Hive 表
• CREATE TABLE tablename … STORED AS ORC;
• 使用 Hive ORC
• spark.sql.hive.convertMetastoreOrc
- Spark Datasource 表
• CREATE TABLE tablename … USING ORC;
• 使用Apache ORC
二、JindoFS 列存加速
痛點
- 對象存儲水平擴展能力強,但請求延時高
- 本地盤/雲盤帶寬有限,中間數據越少越好
- IO 需要與 shuffle 數據競爭網絡資源
- 計算越快越好
JindoFS 列存加速
- JindoTable Native Engine
• 高速讀取
• 查詢計劃下推(高速計算)
• 表/分區/列級別的數據緩存,消除帶寬瓶頸和性能波動
- 支持 JindoFS/OSS
- 支持 ORC / Parquet 格式
- 高效的預計算(規劃)
- 可插拔,兼容開源
用法
- 命令行參數
• --conf spark.sql.extensions=com.aliyun.emr.sql.JindoTableExtension
- 配置到 spark-defaults
• spark.sql.extensions com.aliyun.emr.sql.JindoTableExtension
- Spark Hive 表需要確保 spark.sql.hive.convertMetastoreOrc = true
- EMR-3.35/4.9/5.2 之後的版本
加速原理
- Native Engine 直接把數據排在內存中供上層引擎使用
- Spark 通過 Unsafe 直接訪問數據,無需拷貝數據
- Native Engine 異步讀取文件
• 數據讀取不等待上層引擎消費,性能更高
- 高併發
• 文件級別併發
• 列級別併發
- Native 實現算子
- 相比 Java 性能更優
加速架構
- 一套 Native Engine 支持不同引擎
- AliORC 提供 ORC 支持
- Native Engine 運行在 executor/Presto Worker 中(客戶端)
三、性能對比
Spark 性能對比 – 配置
Spark 性能對比 – 結果
- 端到端總時間縮短23.6%
四、演示
- 配置 Spark
- 讀取鳶尾花數據集以 ORC 格式寫入 OSS 路徑
- 從 OSS 查詢鳶尾花數據集
相關文檔鏈接:
- Jindodata 相關文檔:
https://github.com/aliyun/alibabacloud-jindodata
- 計算加速使用文檔:
https://help.aliyun.com/document_detail/213329.html
⭐點擊回放鏈接,直接觀看第20講視頻回放,獲取講師實例講解:
https://developer.aliyun.com/live/247100
⭐Github鏈接:
https://github.com/aliyun/alibabacloud-jindofs
不錯過每次直播信息、探討更多數據湖 JindoFS+OSS 相關技術問題,歡迎掃碼加入釘釘交流群!