数据湖探索简介
什么是数据湖探索
数据湖探索(Data Lake Insight,简称DLI)是完全兼容Apache Spark、Apache Flink、Trino生态,提供一站式的流处理、批处理、交互式分析的Serverless融合处理分析服务。用户不需要管理任何服务器,即开即用。
DLI支持标准SQL/Spark SQL/Flink SQL,支持多种接入方式,并兼容主流数据格式。数据无需复杂的抽取、转换、加载,使用SQL或程序就可以对云上RDS、DWS、CSS、OBS、ECS自建数据库以及线下数据库的异构数据进行探索。
功能介绍
DLI用户可以通过可视化界面、Restful API、JDBC、Beeline等多种接入方式对云上CloudTable、RDS和DWS等异构数据源进行查询分析,数据格式兼容CSV、JSON、Parquet和ORC主流数据格式。
- 三大基本功能
- SQL作业支持SQL查询功能:可为用户提供标准的SQL语句。具体内容请参考《数据湖探索SQL语法参考》。
- Flink作业支持Flink SQL在线分析功能:支持Window、Join等聚合函数、地理函数、CEP函数等,用SQL表达业务逻辑,简便快捷实现业务。具体内容请参考《数据湖探索SQL语法参考》。
- Spark作业提供全托管式Spark计算特性:用户可通过交互式会话(session)和批处理(batch)方式提交计算任务,在全托管Spark队列上进行数据分析。具体内容请参考《数据湖探索API参考》。
- 多数据源分析:
- Spark跨源连接:可通过DLI访问CloudTable,DWS,RDS和CSS等数据源。具体内容请参考《数据湖探索用户指南》。
- Flink跨源支持与多种云服务连通,形成丰富的流生态圈。数据湖探索的流生态分为云服务生态和开源生态:
- 云服务生态:数据湖探索在Flink SQL中支持与其他服务的连通。用户可以直接使用SQL从这些服务中读写数据。如DIS、OBS、CloudTable、MRS、RDS、SMN、DCS等。
- 开源生态:通过增强型跨源连接建立与其他VPC的网络连接后,用户可以在数据湖探索的租户授权的队列中访问所有Flink和Spark支持的数据源与输出源,如Kafka、Hbase、ElasticSearch等。
具体内容请参见《数据湖探索开发指南》。
- 存算分离
用户将数据存储到OBS后,DLI可以直接和OBS对接进行数据分析。存算分离的架构下,使得存储资源和计算资源可以分开申请和计费,降低了成本并提高了资源利用率。
存算分离场景下,DLI支持OBS在创建桶时数据冗余策略选择单AZ或者多AZ存储,两种存储策略区别如下:
- 选择多AZ存储,数据将冗余存储至多个AZ中,可靠性更高。选择多AZ存储的桶,数据将存储在同一区域的多个不同AZ。当某个AZ不可用时,仍然能够从其他AZ正常访问数据,适用于对可靠性要求较高的数据存储场景。建议优选使用多AZ存储的策略。
- 选择单AZ存储,数据仅存储在单个AZ中,但相比多AZ更加便宜。
- 弹性资源池
弹性资源池后端采用CCE集群的架构,支持异构,对资源进行统一的管理和调度。详细内容可以参考用户指南的弹性资源池。
图1 弹性资源池架构图
弹性资源池的优势主要体现在以下几个方面:
- 统一资源管理
- 统一管理内部多集群和调度作业,规模可以到百万核级别。
- 多AZ部署,支持跨AZ高可用。
- 租户资源隔离
不同队列之间资源隔离,减少队列之间的相互影响。
- 分时按需弹性
- 分钟级别扩缩容,从容应对流量洪峰和资源诉求。
- 支持分时设置队列优先级和配额,提高资源利用率。
- 作业级资源隔离(暂未实现,后续版本支持)
支持独立Spark实例运行SQL作业,减少作业间相互影响。
- 自动弹性(暂未实现,后续版本支持)
基于队列负载和优先级实时自动更新队列配额。
弹性资源池解决方案主要解决了以下问题和挑战。
维度
原有队列,无弹性资源池时
弹性资源池
扩容时长
手工扩容时间长,扩容时长在分钟级别
不需要手工干预,秒级动态扩容。
资源利用率
不同队列之间资源不能共享。
例如:队列1当前还剩余10CU资源,队列2当前负载高需要扩容时,队列2不能使用队列1中的资源,只能单独对队列1进行扩容。
添加到同一个弹性资源池的多个队列,CU资源可以共享,达到资源的合理利用。
配置跨源时,必须为每个队列分配不重合的网段,占用大量VPC网段。
多队列通过弹性资源池统一进行网段划分,减少跨源配置的复杂度。
资源调配
多个队列同时扩容时不能设置优先级,在资源不够时,会导致部分队列扩容申请失败。
您可以根据当前业务波峰和波谷时间段,设置各队列在弹性资源池中的优先级,保证资源的合理调配。
- 统一资源管理
- BI工具
对接永洪BI:与永洪BI对接实现数据分析。具体内容请参考《数据湖探索开发指南》。
DLI核心引擎:Spark+Flink+Trino
- Spark是用于大规模数据处理的统一分析引擎,聚焦于查询计算分析。DLI在开源Spark基础上进行了大量的性能优化与服务化改造,不仅兼容Apache Spark生态和接口,性能较开源提升了2.5倍,在小时级即可实现EB级数据查询分析。
- Flink是一款分布式的计算引擎,可以用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时地处理一些实时数据流,实时地产生数据的结果。DLI在开源Flink基础上进行了特性增强和安全增强,提供了数据处理所必须的Stream SQL特性。
- Trino(原PrestoSQL)是提供交互式查询分析能力的开源分布式SQL查询引擎,具备高性能、低延迟的查询处理能力,支持在大规模数据存储中进行数据查询和分析。
DLI服务架构:Serverless
DLI是无服务器化的大数据查询分析服务,其优势在于:
- 按量计费:真正的按使用量(扫描量/CU时)计费,不运行作业时0费用。
- 自动扩缩容:根据业务负载,对计算资源进行预估和自动扩缩容。
如何访问DLI
云服务平台提供了Web化的服务管理平台,既可以通过管理控制台和基于HTTPS请求的API(Application programming interface)管理方式来访问DLI,又可以通过JDBC客户端连接DLI服务端。
- API方式
如果用户需要将云平台上的DLI服务集成到第三方系统,用于二次开发,可以使用API方式访问DLI服务。
具体操作请参见《数据湖探索API参考》。
- JDBC
DLI支持使用JDBC连接服务端进行数据查询操作。具体内容请参考《数据湖探索开发指南》。
- Spark-submit
DLI支持通过Spark-submit提交作业。具体内容请参考《数据湖探索开发指南》。