腾讯Serverless云原生数据湖计算架构与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 腾讯Serverless云原生数
据湖计算架构实践
余建涛 高级工程师
2. 目录 CONTENT
01 数据湖架构下的机遇 03 Serverless湖计算实践
02 腾讯数据湖计算简介 04 未来工作
3. 01
数据湖架构下
的机遇
4. 传统Hadoop计算平台面临的挑战
•
• 基于物理机或者虚拟机搭建
存算一体
• 组件繁多
挑战:
• 弹性能力不足,无法应对快速增长的业务需求
•
•
•
空闲时段资源闲置,利用率低
维护管理负担重
持续的软硬件更新成本
5. Serverless计算兴起
服务端逻辑由开发者实现,运行在无状态的计算容器中,由事件或http请求触发,
完全被第三方管理。Serverless 是云原生技术发展的高级阶段,可以使开发者更
聚焦在业务逻辑,而减少对基础设施的关注。
Serverless
PaaS
容器调度
更少关心或者控制底层实现
6. 数据湖架构下的机遇
•
•
•
•
统一存储,存算分离,独立构建多引擎计算服务
借助云原生环境和容器技术,快速弹性扩缩计算集群
使用Serverless架构,按需使用,节约成本
用户无需关心底层资源,降低使用门槛
高效易用的计算分析服务是智能数据湖的重要组成部分
7. 02
腾讯数据湖计算
简介
8. 腾讯数据湖计算
数据湖计算(DLC) 是腾讯云提供的敏捷高效的数据湖分析与计算服务。
按使用量付费 多源联合查询 支持标准SQL
资源极致弹性 云端无缝结合 安全可靠
9. 03
Serverless湖计算
实践
10. Cloud Based
充分利用云上基础设施,按需使用的算力,服务可用性保证
SAAS
BAAS
数据湖计算(DLC)
PAAS 弹性容器
(EKS)
日志服务
(CLS)
IAAS 云服务器
(CVM,FPGA,GPU等)
云监控
(CM) 中间件
(TDMQ,CMQ等)
云网络
(VPC) 云存储
(CBS, COS等)
账号权限
(CAM)
云API
云数据库
(MySQL, MariaDB等)
11. 总体架构
客户端
JDBC
Console
SDK
数据源
Http
接口及云资源管理
统一计算与编排
服务端
Serverless
presto
Serverless
spark
Cache加速
数据源
COS对象存储
统
一
元
数
据
安
全
中
心
EMR
Hive,
MySQL,
HBase,
Redis,
CDW等
12. SQL作业执行流程
Client
API
资源
管理
语法
解析
验证
鉴权
SQL
改写
•
•
任务
管理
调度执行
DDL
元数据
•
hive
•
DML/DQL
spark
presto
•
Show/Describe等元数据查询直
接访问元数据服务
Hive catalog下的元数据增、删、
改路由到hive引擎执行
DML/DQL由spark或者presto执行,
任务管理模块负责任务状态轮
询和数据库更新
DQL改写为CTAS,查询结果持久
化到COS,通过API分页读取
无session管理,每个sql独立执
行,有利于负载均衡和扩展性
13. 计算资源基于弹性容器EKS
•
•
• 全托管serverless k8s服务,无须管理任何计算节点,按照容器用量计费
轻量虚拟化技术,资源创建效率高,几秒内创建或删除容器
通过镜像预热+P2P分发加速大规模镜像拉取
• 提供99.95%以上的服务可用性
EKS
EKS
J计算引擎
日志agent
J计算引擎
日志agent
pod pod pod pod pod pod pod pod
pod pod pod pod pod pod pod pod
管理组件
pod
pod
域名解析
pod
pod
管理组件
pod
pod
镜像服务
日志服务
域名解析
pod
pod
云监控
14. 网络架构
云梯 VPC
统一计算与编排
接入服务
统一元数据
DLC VPC
内部网关
安全中心
DLC VPC
计算资源
服务层
计算层
计算资源
私有连接
网络直连
COS
用户 VPC
对等连接
数据层
15. Spark server选型
Spark
operator Spark thrift
server kyuubi livy
交互式 不支持 支持 支持 支持
Batch作业 支持 不支持 不支持 支持
K8s支持 支持 支持 支持 支持
高可用 好 差 好 好
多租户 差 差 好 好
协议 http thrift thrift http/thrift
•
•
Livy具备更全面的能力,可支持
更丰富的应用场景
基于开源livy的改造:
•
• On k8s支持
同一个livy session执行每个
sql时创建独立的spark
session,复用一个spark
context
• 心跳上报功能
16. Livy on k8s部署
pod
pod
driver
•
•
y
统
一
计
算
与
编
排
pod
driver
executor
executor
pod
executor
executor
executor
pod
executor
每个EKS集群部署一个Livy server,Livy server通过心跳周期性上报Livy session状态
资源管理模块负责根据负载创建新的Livy session,同时负责监控所有session状态,
及时清理异常或者空闲的session。任务管理模块定期轮询作业状态
17. Presto operator简化presto集群创建
统一计算与编排
•
pod
PrestoOperator
Proxy
ns1
service service
pod
coordinator pod
coordinator
pod
Worker
pod
Worker
pod
Worker
ns2
•
•
•
pod
Worker
Presto operator + CRD简化
presto集群部署,镜像预热加
速集群拉起
Presto operator同时扮演
Agent角色,通过心跳上报
Presto集群状态
资源管理模块按需动态创建
集群、修改集群Worker数、
删除集群
任务管理模块通过Jdbc
ProgressMonitor 更新query状
态
18. Presto Catalog动态配置与更新
• 配置与集群解耦,可以通过DDL
SQL或者API增删查改catalog配置
Presto支持静态、定时、实时三
•
• 种加载Catalog配置的方式
基于版本的Catalog配置更新策略
Presto catalog管理支持多租户
•
元数据
API
http/jdbc
DDL SQL
DELETE CATALOG catalogName
SHOW CATALOG catalogName
CREATE CATALOG catalogName with properties
ALTER CATALOG catalogName with properties
coordinator
http
http
worker
worker
worker
19. 本地缓存加速
coordinator presto
worker worker worker
Local cache Local cache Local cache
TPCH 1T, 16 wokers * 16core64G
COS
•
•
利用Alluxio local cache在Presto worker缓
存热数据,加速查询
离计算节点近,不需要依赖额外的资源
和服务
• 开启Soft affinity,相邻Spit调度到同一个节点,
充分利用COS预读
• 总体性能提升3~10倍
20. 计算资源抽象与弹性
•
•
•
•
• 计算资源是一组计算集群的抽象,可设置最小和最大集群个数,以及集群规格。集群规格
可选:16CU,32CU,……,512CU,1CU = 1core 4G,不同规格对应不同的并发设置
• 一个Spark集群对应一个Livy session,一个Presto集群对应一个Coordinator和一组Worker
横向扩缩
•
常驻最小个数的集群
•
根据负载弹性扩容,集群空闲10分
钟即释放
•
手动或自动挂起,释放所有资源
•
作业到来自动恢复
纵向扩缩
•
手动挂起释放所有集群
•
修改集群规格,自动按照新规格拉
起集群
故障隔离
•
心跳上报集群状态,自动下线故障
集群
计算引擎可多版本部署,秒级升级
21. 04
未来工作
22. 未来工作
•
•
•
•
•
基于规则和代价的智能引擎选择
Presto支持Hive UDF、视图
独立的Presto/spark history server
使用对象存储cos作为Spark remote shuffle storage
更多应用场景:Java/Scala/Python作业、AI/ML等
23. 非常感谢您的观看