本期导读 :【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 相关技术问题,欢迎扫码加入钉钉交流群!