开箱即用,腾讯数据湖计算为海量数据分析赋能

2021-05-13 15:10:08 浏览数 (1)

导读 / Introduction

数据湖解决了海量异构数据的入湖和存储需求。通过对海量数据的分析挖掘,提升对数据的洞察,助力数字化决策,进而促进业务发展,是每个企业构建数据湖的根本目的所在。随着业务迭代的不断加速,企业对数据时效性和数据分析敏捷性提出了更高的要求。为此,腾讯云推出了数据湖计算(Data Lake Compute,DLC)。DLC采用存储和计算分离的架构,结合腾讯云对象存储COS和弹性容器服务EKS,打造了一个开箱即用、弹性扩展、按量付费的交互式分析服务。

图1 DLC架构图

高性能——

基于Presto引擎

DLC

如图1所示,DLC计算能力基于Presto引擎搭建。Presto是Facebook开源的一款分布式OLAP引擎,它天然就是存储计算分离的架构,Presto负责计算部分,存储部分则由数据源自身提供。这种架构带来的好处,首先是资源配置更加灵活,存储和计算部分可以各自选择合适的机型部署,当存储资源不足或者计算资源不足时它们又能够独立地进行扩容,其次可以分别针对计算和存储进行性能或成本上的极致优化。

Presto是一个高性能、分布式的SQL执行框架。它采用MPP架构,通过常驻的协调节点快速响应用户的查询请求、生成执行计划、分发子任务到工作节点,工作节点采用全内存流水线式的计算模式对数据分片进行并行处理。相比而言,hive和spark调度和执行计算任务需要启动新的JVM进程,中间数据落盘导致数据处理过程中需要进行大量的磁盘IO,因此Presto在查询速度上具备明显的优势,特别适合交互式分析场景,三者多表关联查询性能对比如图2所示。

图2 TPC-DS 100G多表关联查询性能对比

Presto真正做到了"SQL on anything"。基于connector机制,Presto实现了对数据源元数据的注册、查询以及对数据的读取、写入操作,不同数据源对于Presto来说就是不同的Connector。它本身已经通过插件化的方式实现了丰富的数据源Connector,如Hive Connector、Kafka Connector、ElasticSearch Connector、 MySQL Connector等,同时用户也可以定制化开发Connector插件以支持更多的数据源。基于这些Connector实现,利用Presto不仅可以对某个数据源进行查询,也可以同时对多个数据源进行关联分析,这是presto最引人瞩目的特性。

高性价比——

弹性无服务器架构、按量付费

DLC

用户自建Presto集群往往会面临“两高”挑战:

  1. 技术门槛高。使用开源版本的Presto,首先要仔细研究文档,然后选择合适的机型部署,并对Presto的各项参数进行配置调优,才能搭建起一套可以正常工作的集群,运行过程中遇到各种性能问题也得从头研究解决。搭建集群只是迈出了第一步,构建一个完整易用的分析平台,还包括与权限管理系统、BI系统、开发环境集成适配。对于云上部署的用户,出于成本优化的需求,对集群进行动态扩缩容还需要开发一套集群管理的程序。对于开源版本的Presto不支持的数据源,实现一个可靠的Connector也是一件富有挑战性的工作。
  2. 使用和维护成本高。如图3所示,大数据作业往往存在周期性的高峰和低谷,如果按照高峰期需求配置计算资源,在低谷期资源就得不到充分利用,反之,高峰期资源不足,导致数据不能按时产出。本地物理机部署的方式根本无法快速的应对这种灵活的资源需求。对于云上用户,即使可以分时段配置不同的资源数量,adhoc分析和backfill任务这种不确定的计算需求依然不能被很好地满足,这种情况通常只能通过临时扩容来解决,但往往扩容后就“忘”了,计算资源没有得到及时释放,资源空闲导致的成本浪费占比高。

为此,DLC采用了Serverless的服务形态,用户开箱即用,无需关心底层的计算资源,只要按查询时实际的数据扫描量付费,同时省掉了维护的负担。

图3 典型的大数据计算负载

同时DLC基于腾讯云自身的技术优势,为用户提供极具性价比的计算服务。DLC计算资源调度完全基于腾讯云弹性容器服务EKS。弹性容器服务是一种全托管的Kubernetes服务,通过腾讯云自研的轻量虚拟化技术保证更快的资源创建效率,结合DLC定制的镜像预热功能,可以在几秒内创建一个新的Presto集群,当集群空闲时也可以在几秒内删除集群。这种灵活高效的资源使用方式真正做到了按需使用,极大地降低了用户成本。

安全高可用——

租户隔离、故障隔离

DLC

数据安全通常是企业上云时的一大顾虑。DLC作为公共的计算服务,在网络和计算资源层面做到了租户间完全隔离,全面保障用户的数据安全。如图4所示,DLC为每个租户创建专属的计算资源,并且部署在独立的VPC。当用户需要访问自身VPC下的数据源时,DLC通过VPC Peering打通用户专属计算资源所在的VPC和用户数据所在的VPC。基于计算资源的独立性和VPC之间网络的隔离性实现租户的隔离,保障用户数据安全。

图4 网络架构图

DLC基于用户的查询请求动态地为用户创建或分配Presto集群,并通过心跳机制实时监测集群的负载和健康状态,基于负载均衡的算法将用户的查询请求分配到低负载的集群。一旦发现故障集群立即隔离,当预测到算力不足时,动态扩容以补充算力,保障计算服务的高可用性。

易用性提升——

租一站式服务、动态数据源管理、

兼容Hive

DLC

DLC在接入层集成了腾讯漂移计算引擎Supersql SQL的解析和转换能力,支持标准的ANSI SQL语法,同时兼容Hive DDL语法。DLC通过解析SQL识别和拦截危险的操作,如修改线上业务数据库,避免对用户数据和服务造成破坏。DLC利用统一元数据服务提供的元数据信息对SQL涉及的库、表、列进行验证,同时结合统一安全中心的权限管理功能,对用户的数据权限进行校验,为用户提供一站式的服务。

Presto支持多数据源联邦分析,但是开源版本的Presto只能通过文件的方式静态配置数据源,数据源修改后必须重启Presto集群才能生效,在生产环境使用起来非常不便。为此,DLC开发了动态数据源管理功能,扩展了Presto数据源加载方式,用户通过控制台配置数据源,无须重启服务或者Presto集群,即刻生效。

Presto对数据类型的要求比较严格,比如在Hive中常见的数字与字符串进行比较的查询语句,Presto会直接抛类型不一致的错误,而Hive可以执行是因为Hive支持字符串类型到数字类型的隐式转换,为此DLC扩展了Presto的隐式类型转换规则,兼容Hive的转换规则,同时DLC扩展了Presto的UDF,支持了部分常用的Hive UDF,方便习惯Hive的用户迁移到DLC。

总结与展望

DLC

腾讯云数据湖计算DLC基于Presto和弹性容器服务EKS构建了敏捷高效的数据湖分析与计算服务。该服务采用无服务器架构设计,用户无需关注底层架构或维护计算资源,使用标准 SQL 即可完成多种数据源的联合计算分析。DLC作为腾讯云数据湖体系架构的重要组成部分,还在持续的迭代和打磨,未来计划在以下方面进一步完善:

  • 支持更多云上数据源的联合分析。
  • 文件缓存优化,提升查询性能。
  • 支持Iceberg表格式,通过提升Scan Planning速度和高效的filtering加速查询。
  • 引入Spark引擎,支持ETL、s机器学习等更加丰富的应用场景。

往期精选

- 标题图来源:Pexels -

扫码关注 | 即刻了解腾讯大数据技术动态

0 人点赞