腾讯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. 非常感谢您的观看

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.3. UTC+08:00, 2024-11-25 04:02
浙ICP备14020137号-1 $访客地图$