目录
[1.1 产品组件](#1.1 产品组件)
[1.1.1 X-Pack](#1.1.1 X-Pack)
[1.1.2 Beats数据采集中心](#1.1.2 Beats数据采集中心)
[1.1.3 Logstash](#1.1.3 Logstash)
[1.1.4 Kibana](#1.1.4 Kibana)
[1.2 架构特性](#1.2 架构特性)
[1.2.1 性能](#1.2.1 性能)
[1.2.2 安全性](#1.2.2 安全性)
[1.2.3 可用性](#1.2.3 可用性)
[1.2.4 可扩展性](#1.2.4 可扩展性)
[1.2.5 可维护性](#1.2.5 可维护性)
[1.2.6 国际化](#1.2.6 国际化)
[1.3 综合检索分析](#1.3 综合检索分析)
[1.4 全观测](#1.4 全观测)
[1.5 大数据检索加速](#1.5 大数据检索加速)
[1.6 最佳实践 - 多模态搜索](#1.6 最佳实践 - 多模态搜索)
[1.6.1 需求分析](#1.6.1 需求分析)
[1.6.2 解决方案](#1.6.2 解决方案)
[1.7 最佳实践 - 全观测](#1.7 最佳实践 - 全观测)
[1.7.1 需求分析](#1.7.1 需求分析)
[1.7.2 解决方案](#1.7.2 解决方案)
[1.8 最佳实践 - 数据检索加速](#1.8 最佳实践 - 数据检索加速)
[1.8.1 需求分析](#1.8.1 需求分析)
[1.8.2 解决方案](#1.8.2 解决方案)
[2.1 产品介绍](#2.1 产品介绍)
[2.2 产品功能](#2.2 产品功能)
[2.2.1 数据建模](#2.2.1 数据建模)
[2.2.2 数据集成离线(批量)同步](#2.2.2 数据集成离线(批量)同步)
[2.2.3 数据集成实时同步](#2.2.3 数据集成实时同步)
[2.2.4 数据集成全增量同步任务](#2.2.4 数据集成全增量同步任务)
[2.2.5 数据开发](#2.2.5 数据开发)
[2.2.6 数据分析](#2.2.6 数据分析)
[2.2.7 数据治理](#2.2.7 数据治理)
[2.2.8 数据服务](#2.2.8 数据服务)
[2.3 最佳实践-调度参数在数据集成中的典型应用场景](#2.3 最佳实践-调度参数在数据集成中的典型应用场景)
[2.3.1 场景一:同步增量数据](#2.3.1 场景一:同步增量数据)
[2.3.2 场景二:同步历史数据](#2.3.2 场景二:同步历史数据)
[2.4 常见问题](#2.4 常见问题)
[2.4.1 什么是调度依赖?](#2.4.1 什么是调度依赖?)
[2.4.2 哪些场景不支持设置调度依赖?](#2.4.2 哪些场景不支持设置调度依赖?)
[2.4.3 数据源网络联通性测试失败怎么办?](#2.4.3 数据源网络联通性测试失败怎么办?)
[2.4.4 提交节点报错:当前节点依赖的父节点输出名不存在](#2.4.4 提交节点报错:当前节点依赖的父节点输出名不存在)
[3.1 产品架构](#3.1 产品架构)
[3.2 核心概念和层次结构](#3.2 核心概念和层次结构)
[3.3 功能特性](#3.3 功能特性)
[3.3.1 全托管Serverless在线服务](#3.3.1 全托管Serverless在线服务)
[3.3.2 弹性能力与扩展性](#3.3.2 弹性能力与扩展性)
[3.3.3 统一丰富的计算和存储能力](#3.3.3 统一丰富的计算和存储能力)
[3.3.4 数据建模、开发、治理能力](#3.3.4 数据建模、开发、治理能力)
[3.3.5 集成AI能力](#3.3.5 集成AI能力)
[3.3.6 深度集成Spark引擎](#3.3.6 深度集成Spark引擎)
[3.3.7 湖仓一体](#3.3.7 湖仓一体)
[3.3.8 离线实时一体](#3.3.8 离线实时一体)
[3.3.9 支持流式写入和近实时分析](#3.3.9 支持流式写入和近实时分析)
[3.3.10 持续的SaaS化数据保护](#3.3.10 持续的SaaS化数据保护)
[3.4 MaxCompute SQL与标准SQL的基本区别](#3.4 MaxCompute SQL与标准SQL的基本区别)
[3.5 最佳实践-数据模型架构规范](#3.5 最佳实践-数据模型架构规范)
[3.5.1 数据层次划分](#3.5.1 数据层次划分)
[3.5.2 数据分类架构](#3.5.2 数据分类架构)
[3.6 最佳实践 --小文件处理](#3.6 最佳实践 –小文件处理)
[3.6.1 小文件定义](#3.6.1 小文件定义)
[3.6.2 小文件过多会带来的影响](#3.6.2 小文件过多会带来的影响)
[3.6.3 会产生小文件的场景](#3.6.3 会产生小文件的场景)
[3.7 常见问题](#3.7 常见问题)
[3.7.1 使用MaxCompute需要具备什么专业技能?](#3.7.1 使用MaxCompute需要具备什么专业技能?)
[3.7.2 MaxCompute中的项目(project)发挥什么作用?](#3.7.2 MaxCompute中的项目(project)发挥什么作用?)
[3.7.3 MaxCompute的表格类型有几种,分别是什么?](#3.7.3 MaxCompute的表格类型有几种,分别是什么?)
[3.7.4 MaxCompute常见错误信息如何理解,怎么定位问题?](#3.7.4 MaxCompute常见错误信息如何理解,怎么定位问题?)
一、Elasticsearch
1.1 产品组件
在阿里云Elastic Stack产品生态下,Elasticsearch作为实时分布式搜索和分析引擎,Kibana实现灵活的可视化分析,Beats从各个机器和系统采集数据,Logstash采集、转换、优化和输出数据。通过各个组件的结合,阿里云Elasticsearch可被广泛应用于实时日志处理、全文搜索和数据分析等领域。
1.1.1 X-Pack
X-Pack是Elasticsearch的一个商业版扩展包,包含安全Security、警告 Alerting、监控Monitoring、图形Graph和报告Reporting、机器学习 MachineLearning等多种高级功能。创建阿里云Elasticsearch集群时,系统会默认将X-Pack作为插件集成在Kibana中,为您免费提供授权认证、角色权限管控、实时监控、可视化报表、机器学习等能力,实现更便捷的Elasticsearch运维管理和应用开发。
1.1.2 Beats数据采集中心
Beats是轻量级的数据采集工具,集合了多种单一用途的数据采集器。它们从成百上千或成千上万台机器和系统向Logstash或Elasticsearch发送数据。
阿里云Elasticsearch的Beats采集中心支持Filebeat、Metricbeat、Auditbeat和Heartbeat。支持在云服务器ECS(Elastic Compute Service)和容器服务ACK(Alibaba Cloud Container Service for Kubernetes)集群中一键部署采集器,可视化采集与配置日志文件、网络数据、容器指标等多种类型数据,并集中管理多个采集器。
1.1.3 Logstash
Logstash作为服务器端的数据处理管道,通过输入、过滤和输出插件,动态地从多个来源采集数据,并加工和转换任何类型的事件,最终将数据存储到所选择的位置。
阿里云提供全托管的Logstash Service,100%兼容开源。支持一键部署、可视化配置和集中管理数据管道,提供多种插件实现与OSS、MaxCompute等云产品的连通。
1.1.4 Kibana
Kibana是灵活的数据分析和可视化工具,支持多用户登录。在Kibana中,您可以搜索和查看Elasticsearch索引中的数据,并进行交互。创建阿里云Elasticsearch集群时,系统会自动部署独立的Kibana节点,您可以根据业务需求,灵活使用图表、表格、地图等,呈现多元化的数据分析报表和大盘。
1.2 架构特性
1.2.1 性能
- 深度定制增强内核引擎,提升读写性能。
- 提供阿里内核增强版实例。基于计算存储分离架构,性能更高,成本更低。
1.2.2 安全性
- 默认在专有网络环境下访问集群。
- 免费提供X-Pack安全组件。
- 支持字段级别的权限控制。
- 支持HTTPS加密传输和数据存储加密。
1.2.3 可用性
- 支持数据自动备份。
- 数据和服务可靠性达到99.9%。
- 通过自研集群限流插件、慢查询隔离保障集群稳定性。
- 支持多可用区部署,提供同城多活架构。
1.2.4 可扩展性
- 综合检索分析场景:支持ECS服务端数据、结构化业务数据如RDS、非结构化离线数据OSS、消息队列Kafka、流计算Flink等上游数据接入
- 全观测场景:支持开源ELK组件,包括Beats采集组件、kibana 可视化、APM数据接入等
1.2.5 可维护性
- 开箱即用,弹性扩缩,一键灵活调整集群配置;支持自定义插件、分词等;
- 支持一键升级集群版本。
- Eyou智能运维:支持多维度二十余个诊断项的健康检测,智能化地诊断并分析异常。
- 高级监控报警服务:通过Grafana提供丰富的监控项,实现ES集群日志指标分析
1.2.6 国际化
- 国际站支持包括新加坡、美国、澳大利亚等17个地区,60个可用区部署
1.3 综合检索分析
基于Elasticsearch的企业级综合检索解决方案,提供面向海量数据的信息检索服务,使得生活在移动互联网中的用户能够查询各种各样的结构化和非结构化信息,以 JSON 文档的形式存储数据,每个文档都会在一组键和它们对应的值之间建立联系,以实现综合检索能力。适用场景包含信息检索、舆情分析、推荐系统、广告系统等多种对综合检索&召回有需求的场景。
方案满足综合检索分析场景核心特性需要,包括能够实现海量数据毫秒级响应,满足数据来源多样且字段不固定,日均亿级别持续写入数据高并发处理,且要求豪秒级别可见的数据实时性;支持复杂查询检索,灵活支持各类复杂组合、条件和模糊查询,适用于全文检索及分析类业务;支持向量多模态检索,基于向量特征相似度匹配,典型应用于解决以图搜图、智能问答、推荐系统-向量召回链路等场景问题。
1.4 全观测
基于阿里云Elasticsearch全观测引擎日志和时序增强功能,将日志、指标、应用追踪数据汇总于阿里云Elasticsearch平台,让运维、开发、业务人员对所有的数据从统一视角进行观察分析。
阿里云全托管ElasticStack,提供日志分析、监控、Tracing一站式能力,针对时序场景优化引擎,保证时许日志监控和分析性能。提供Indexing service自研ES写入托管服务,及跨机房部署、同城容灾、场景内核优化提升稳定性;采用冷热数据分离存储方式,及自研存储引擎Openstore优化存储压缩算法,降低数据存储成本,以及采用时序增强功能TimeStream,提升时序场景读写性能并降低时序数据管理成本;基于分布式架构,以及灵活开放的RestAPI和Plugin框架,支持各种扩展能力。
1.5 大数据检索加速
随着数据量的激增,复杂检索(高纬度聚合、模糊检索等)需求和场景越来越复杂,传统关系型数据库越来越难以匹配业务需求。Elasticsearch借助其强大的检索性能、ms级数据时效性、众多异构数据源对接能力完全满足客户多种场景下的诉求。
- 核心数据库:采用云数据库RDS作为核心业务库,承接业务系统事务性写入,作为核心主库持久化存储关键业务数据;
- 全增量同步:全量通过标准JDBC(或ODBC)协议获取数据,通过Binlog订阅(或OGG)同步增量;
- 数据预处理(option):基于Flink Job(或Spark Streaming Job),针对多表复杂聚合场景进行流式处理;
- 索引库:作为承接查询流量的索引库,提供弹性扩缩、NLP分词、全文检索、多维度聚合等高阶功能。
1.6 最佳实践 - 多模态搜索
1.6.1 需求分析
国内某知名连锁餐饮企业,缺少会员、订单、商品等多渠道数据的集中管理、分析处理能力,希望**全渠道收集门店POS、交易数据、客流数据、用户数据,并准实时分析数据、搭建可视化监控看板及报表联动权限管控体系,实现"数据化管理",**构建新一代的会员管理、运营、社交、营销平台,为上层业务发现问题与机会,辅助商业决策,提升业务成效。
1.6.2 解决方案
**使用产品功能:**Beats、Elasticsearch、Logstash、Kibana(或者Grafana)
**接入方式:**公共云产品
使用细节:
- 使用Filebeat、Metricbeat、Pocketbeat等客户端对存量日志进行订阅并投递给Logstash。
- 借助Logstash的filter能力对日志做加工(复杂数据加工厂家可以使用Spark/Flink/E-MapReduce)。
- 加工后的数据通过Logstash的Elasticsearch-output功能导入Elasticsearch中持久化存储。
- 使用QuickBI和DataV进行业务数据可视化。
- 基于X-pack权限管理实现不同用户的权限管控。
- 阿里云Elasticsearch集群弹性平滑伸缩快速响应业务需求。
1.7 最佳实践 - 全观测
1.7.1 需求分析
某国内某汽车品牌企业IT部门下,有多个内容管理系统(CMS)、分销商经营办公系统(DMO)、运营质量监控系统(QIS)、营销经营分析系统(MMP)、BI系统等内部支撑系统。
- 统一技术栈,运维场景涉及日志检索、指标监控、性能追踪等;业务方众多,海外业务场景快速增加,周边应用微服务、充电桩等车基数据、会员服务/商城/社区等;数据类型多样,包括日志、时序、应用链路追踪等数据;需要支持统一系统进行数据摄取、存储和查询分析;
- 预期未来的日志数据规模超PB级(180天),底层技术架构需要兼备低成本存储、快速获取、按需检索和分析的能力;
- IT业务系统复杂,既要满足持续的业务需求,又要整体上云,需要有快速平迁、对接原有云上/云下的IT系统的产品,并能保证技术架构的灵活、开放性,支持后续的自由拓展。
1.7.2 解决方案
**使用产品功能:**Beats、EMR、Flink、Elasticsearch、Kibana
**接入方式:**公共云产品
使用细节:
- 使用Filebeat、Metricbeat、Pocketbeat等客户端对存量日志进行订阅并投递给Logstash。
- 借助Logstash的filter能力对日志做加工(复杂数据加工厂家可以使用Flink/E-MapReduce)。
- 数据通过Logstash的Elasticsearch-output功能导入Elasticsearch中持久化存储,过程中使Elasticsearch全观测引擎的日志增强模块实现写入、存储serverless以及场景化自研功能,进一步降低数据持有成本、提升读写性能。
- 使用Kibana(或者Grafana)等可视化工具做可视化的监控告警。
1.8 最佳实践 - 数据检索加速
1.8.1 需求分析
国内某电商平台信息技术服务供应商有订单处理、商品管理、分销供应、数据分析、营销打折等业务场景,峰值并发查询压力大,延迟高体验不好,无法达到为用户承诺的查询时效性。订单字段复杂,商家用户查询维度多,模糊搜索意图强,传统数据库方案无法实现满意的查询效果和性能;数据可用性、安全、权限粒度要求高,数据敏感影响巨大。需要高并发准实时搜索能力支持,查询结果毫秒级返回,同时保障系统高效稳定;需要多种数据结构复杂查询,集群平滑扩缩容,变更对业务0影响,灵活应对流量峰谷。
1.8.2 解决方案
**使用产品功能:**Elasticsearch、DTS(或者Canal+Logstash)
**接入方式:**公共云产品
使用细节:
- 业务库中的存量数据平迁至阿里云,借助DTS的迁移能力or Logstash的数据迁移能力。
- 借助DTS的订阅能力(或者Canal的订阅能力),将增量数据同步至Elasticsearch中。
- 借助RestAPI使用ES的强大聚合能力,进行加速检索。
二、DataWorks
2.1 产品介绍
阿里云DataWorks(也称为大数据开发套件)是一个集数据集成、开发、治理、运维于一体的数据中台建设工具。它为企业提供了一个一站式的数据处理平台,帮助用户轻松地完成数据的采集、存储、处理、分析和管理等工作。
2.2 产品功能
2.2.1 数据建模
概论:DataWorks数据建模支持数仓规划设计、制定并沉淀企业数据标准、维度建模、数据指标定义,通过使用DataWorks数据建模,您可以将建模设计产出的维度表、明细表和汇总表物化到计算引擎中并进一步应用。
2.2.2 数据集成离线(批量)同步
数据集成主要用于离线(批量)数据同步。离线(批量)的数据通道通过定义数据来源和去向的数据源和数据集,提供一套抽象化的数据抽取插件(Reader)、数据写入插件(Writer),并基于此框架设计一套简化版的中间数据传输格式,从而实现任意结构化、半结构化数据源之间数据传输。
2.2.3 数据集成实时同步
数据集成的实时同步包括实时读取、转换和写入三种基础插件,各插件之间通过内部定义的中间数据格式进行交互。一个实时同步任务支持多个转换插件进行数据清洗,并支持多个写入插件实现多路输出功能。同时针对某些场景,支持整库实时同步全增量同步任务,您可以一次性实时同步多个表。
2.2.4 数据集成全增量同步任务
实际业务场景下,数据同步通常不能通过一个或多个简单离线同步或者实时同步任务完成,而是由多个离线同步、实时同步和数据处理等任务组合完成,这就会导致数据同步场景下的配置复杂度非常高。
为了解决上述问题,DataWorks提出了面向业务场景的同步任务配置化方案,支持不同数据源的一键同步功能,例如,"一键实时同步至Elasticsearch"、"一键实时同步至Hologres"和"一键实时同步至MaxCompute"功能等,通过此类功能,您只需要进行简单的配置,就可以完成一个复杂业务场景。
全增量同步任务具有如下优势:
- 全量数据初始化。
- 增量数据实时写入。
- 增量数据和全量数据定时自动合并写入新的全量表分区。
数据集成支持复杂网络环境下的数据源进行异构数据源间的数据同步,包括但不限于以下环境:
- 数据源与DataWorks工作空间在同一个阿里云主账号,并且同一个Region。
- 数据源与DataWorks工作空间不在同一个阿里云主账号。
- 数据源与DataWorks工作空间不在同一个Region。
- 数据源在非阿里云环境。
2.2.5 数据开发
- **业务流程混合编排:**可视化拖拽式多引擎任务混合编排
- **智能SQL编辑器:**AI加持的SQL编辑器,智能提示,SQL算子结构可视化展示,智能SQL诊断
- **全面的引擎能力封装:**支持计算引擎的任务、表、资源、函数管理,让您无需接触复杂的引擎命令行
- **自定义节点:**提供自定义节点插件化机制,支持您扩展计算任务类型,自主接入自定义计算服务
2.2.6 数据分析
- **电子表格:**支持本地数据上传与在线数据源,兼容大总分Excel函数计算,支持透视分析和数据侦查
- **SQL查询:**支持多种数据源,更便捷更轻量的SQL查询工具
- **SQL Notes:**提供SQL Notebook交互形式,支持以文档的形式记录数据分析的过程,包含分析思路、SQL以及数据结果,并提供数据可视化展示
- **数据上传:**提供快捷的数据编辑上传至MaxCompute的功能特别适用于小数据量表格编辑上传
2.2.7 数据治理
2.2.8 数据服务
数据服务采用Serverless架构,只需要关注API本身的查询逻辑,无需关心运行环境等基础设施,数据服务会为您准备好计算资源,并支持弹性扩展,零运维成本。
2.3 最佳实践-调度参数在数据集成中的典型应用场景
2.3.1 场景一:同步增量数据
示例1:将LogHub每十分钟内的增量数据同步至MaxCompute T-1分区。
平台将根据定时时间,每十分钟生成一个调度实例,目标MaxCompute表分区名称也以调度参数的方式指定,$bizdate表示业务日期,定时任务执行时,任务配置的分区表达式会替换为调度参数所表达的业务日期。
2.3.2 场景二:同步历史数据
基于调度参数可根据业务时间将参数自动替换为对应的值这一特性,当您创建任务当天需要将历史数据进行补齐时,您可使用补数据功能,补数据支持补历史一段时间的数据或者未来一段时间的数据,调度参数将在任务调度时根据补数据选择的业务时间自动替换为对应的值。
2.4 常见问题
2.4.1 什么是调度依赖?
调度依赖就是节点间的上下游依赖关系,在DataWorks中,上游任务节点运行完成且运行成功,下游任务节点才会开始运行。挂载依赖关系后,当前节点执行的必要条件之一为当前节点依赖的父节点需要执行成功。
2.4.2 哪些场景不支持设置调度依赖?
由于DataWorks的调度依赖主要保障的是调度节点定时更新的表数据,通过节点调度依赖保障下游取数无误。因此,不是DataWorks平台上调度更新的表,平台无法监控。
当存在非周期性调度生产数据的表,有节点select该类表数据时,需手动删除通过select自动生成的依赖上游节点配置。非周期性调度生产数据的表包括:
- 从本地上传到DataWorks的表
- 维表
- 非DataWorks调度产出的表
- 手动任务产出的表
2.4.3 数据源网络联通性测试失败怎么办?
错误现象:添加数据源PolarDB时,网络连通性测试失败。
如何处理:切换到jdbc连接串,同时检查白名单配置,以及独享资源组的VPC配置。
2.4.4 提交节点报错:当前节点依赖的父节点输出名不存在
可能原因1:没有节点产出这个表
可能原因2:有节点产出该表数据,但是该表没有添加为该节点的输出
可能原因3:存在同名的节点输出
三、MaxCompute
3.1 产品架构
- **存储引擎:**MaxCompute为您提供MaxCompute存储引擎(内部存储)用于存储MaxCompute表、资源等,同时您也可以通过外表的方式直接读取存储在OSS、TableStore、RDS等其他产品中的数据。 其中MaxCompute存储引擎主要采用列压缩存储格式,通常情况下可达到5倍压缩比。
- **计算引擎:**MaxCompute为您提供MaxCompute SQL计算引擎和CUPID计算平台。可直接运行MaxCompute SQL任务。可运行Spark任务、Mars任务等三方引擎的任务。
- **云服务层:**MaxCompute支持创建不同的任务队列,并为每个队列配置不同的资源和优先级,以便对任务执行进行更精细的控制。MaxCompute也提供数据安全性的多层保护,包括项目空间隔离、权限控制、数据加密,确保数据的安全和隐私。
- **统一元数据及安全体系:**MaxCompute的离线租户级别元数据信息会通过Information Schema提供服务,可以对作业的运行情况,例如资源消耗、运行时长、数据处理量等指标进行分析。MaxCompute还提供了完善的安全管理体系,例如访问控制、数据加密、动态脱敏等为数据安全性提供保障
- **用户接口与开放性:**包括tunnel,api与sdk,jdbc,connecotr以及开放存储 数据生态支持 与dataworks深度结合,实现数据湖,数据集成,治理可视化等需求。
3.2 核心概念和层次结构
|-------------------|-------------------------------------------------------------------------|
| 核心概念 | 说明 |
| Project(项目) | 项目是MaxCompute的基本组织单元,类似于传统数据库的Database或Schema的概念 |
| Table(表) | 表是MaxCompute的数据存储单元 |
| Partition(分区) | 分区Partition是指一张表下,根据分区字段对数据存储进行划分。如果表有分区,每个分区对应表下的一个目录,数据是分别存储在不同的分区目录下 |
| View(视图) | 视图是在表之上建立的虚拟表,它的结构和内容都来自表。如果想保留查询结果,但不想创建表占用存储,可以通过视图实现 |
| User(用户) | MaxCompute支持通过阿里云账号、RAM用户或RAM角色访问MaxCompute |
| Role(角色) | 角色是MaxCompute安全功能中的概念,可以理解为拥有相同权限的用户的集合 |
| Resource(资源) | 资源是MaxCompute中特有的概念。当您使用MaxCompute的自定义函数(UDF)或MapReduce功能时,需要依赖资源来完成 |
| Function(函数) | MaxCompute提供函数功能,包括内建函数和UDF |
| Instance(实例) | 即实际运行作业的一个具体实例,类同Hadoop中Job的概念 |
| Networklink(网络连接) | 当使用外部表、UDF或湖仓一体功能时,MaxCompute默认未建立与外网或VPC网络间的网络连接,需要开通网络连接 |
通常MaxCompute的各层级概念的组织模式如下:
- 一个企业可以在不同地域开通MaxCompute服务
- 企业内的各个部门在开通服务的地域内创建和管理自己的项目(Project),用于存储该部门的数据。项目内可以存储多种类型对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等
- 各部门可以在项目内通过用户与角色的管控,对项目内的各类数据进行权限控制
3.3 功能特性
3.3.1 全托管Serverless在线服务
- 对外以API方式访问的在线服务,开箱即用。
- 预铺设大规模集群资源,可以按需使用、按量计费。
- 无需平台运维,最小化运维投入。
3.3.2 弹性能力与扩展性
- 存储和计算独立扩展,支持企业将全部数据资产在一个平台上进行联动分析,消除数据孤岛。
- 支持实时根据业务峰谷变化分配资源。
3.3.3 统一丰富的计算和存储能力
- MaxCompute支持多种计算模型和丰富的UDF。
- 采用列压缩存储格式,通常情况下具备5倍压缩能力,可以大幅节省存储成本。
3.3.4 数据建模、开发、治理能力
- 借助一站式数据开发与治理平台DataWorks,可实现全域数据汇聚、融合加工和治理。
- DataWorks支持对MaxCompute项目进行管理以及Web端查询编辑。
3.3.5 集成AI能力
- 与人工智能平台 PAI无缝集成,提供强大的机器学习处理能力。
- 可以使用熟悉的Spark-ML开展智能分析。
- 使用Python机器学习三方库。
3.3.6 深度集成Spark引擎
- 内建Apache Spark引擎,提供完整的Spark功能。
- 与MaxCompute计算资源、数据和权限体系深度集成。
3.3.7 湖仓一体
- 集成对数据湖的访问分析,支持通过外部表映射、Spark直接访问方式开展数据湖分析。
- 在一套数据仓库服务和用户接口下,实现数据湖与数据仓库的关联分析。
3.3.8 离线实时一体
- 与实时数仓Hologres深度融合,支持外部表关联查询,支持存储层直读,查询效率相比其他类型外部表高5倍以上。
3.3.9 支持流式写入和近实时分析
- 支持流式数据实时写入并在数据仓库中开展分析。
- 与云上主要流式服务深度集成,轻松接入各种来源的流式数据。
- 支持高性能秒级弹性并发查询,满足近实时分析场景需求。
3.3.10 持续的SaaS化数据保护
- 为云上企业提供基础设施、数据中心、网络、供电、平台安全能力、用户权限管理、隐私保护等保三级超20项安全功能,兼具开源大数据与托管数据库的安全能力。
3.4 MaxCompute SQL与标准SQL的基本区别
|--------|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 主要区别 | 问题现象 | 解决方法 |
| 应用场景 | 不支持事务(不支持Commit和Rollback,不推荐使用INSERT INTO)。 | 建议代码具备幂等性,支持重新执行。推荐您使用INSERT OVERWRITE写数据。 |
| 应用场景 | 不支持索引和主键约束。 | 无。 |
| 应用场景 | 部分字段不支持默认值或默认函数。 | 如果字段有默认值,您可以在数据写入时自行赋值。MaxCompute支持在创建表时,对BIGINT、DOUBLE、BOOLEAN和STRING类型的字段添加默认值。 |
| 应用场景 | 不支持自增字段。 | 无。 |
| 表分区 | 单表最多支持6万个分区。超过6万个分区会报错。 | 选择合适的分区列,减少分区数。 |
| 表分区 | 一次查询输入的分区不能超过1万个,否则会报错。如果是2级分区且查询时只根据2级分区进行过滤,总的分区数大于1万也可能导致报错。 | 解决方法请参见执行INSERT INTO或INSERT OVERWRITE操作时,报错a single instance cannot output data to more than 10000 partitions,如何解决?。 |
| 精度 | DOUBLE类型存在精度问题。 | 不建议直接使用等于号(=)关联两个DOUBLE字段。建议将两个数相减,如果差距小于一个预设的值,则认为两个数是相同的。例如ABS(a1-a2)<0.000000001。 |
| 精度 | 虽然MaxCompute支持高精度类型DECIMAL,但是有更高精度的要求。 | 如果有更高的精度要求,您可以先把数据存储为STRING类型,然后使用UDF实现对应的计算。 |
| 数据类型转换 | 出现各种预期外的错误,代码维护问题。 | 如果有2个不同的字段类型需要执行JOIN操作,建议您先转换字段类型再执行JOIN操作。 |
| 数据类型转换 | 日期类型和字符串的隐式转换。 | 如果在需要传入日期类型的函数中传入一个字符串,字符串和日期类型根据yyyy-mm-dd hh:mi:ss格式进行转换。 |
3.5 最佳实践-数据模型架构规范
3.5.1 数据层次划分
- ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又记录基础数据及历史变化。其主要作用是把基础数据引入到MaxCompute。
- CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。
- DWD:Data Warehouse Detail,明细数据层。
- DWS:Data Warehouse Summary,汇总数据层。
- ADS:Application Data Service,应用数据层。
3.5.2 数据分类架构
- 该数据分类架构在ODS层分为三部分:数据准备区、离线数据和准实时数据区。在进入到CDM层后,由以下几部分组成:公共维度层:基于维度建模理念思想,建立整个企业的一致性维度。
- 明细粒度事实层:以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。您可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理。
- 公共汇总粒度事实层:以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段来物理化模型。
3.6 最佳实践 --小文件处理
3.6.1 小文件定义
MaxCompute使用盘古分布式文件系统是按块(Block)存放的,通常文件大小比块大小小的文件(默认块大小为64MB),被称为小文件。
3.6.2 小文件过多会带来的影响
- 影响启动Map Instance,默认情况下一个小文件对应一个Instance,造成浪费资源,影响整体的执行性能。
- 过多的小文件给盘古文件系统带来压力,且影响空间的有效利用,严重的会直接导致盘古文件系统不可服务。
3.6.3 会产生小文件的场景
- Reduce计算过程会产生大量小文件。
- Tunnel数据采集过程中会生成小文件。
- Job执行过程中生成的各种临时文件、回收站保留的过期的文件等
3.7 常见问题
3.7.1 使用MaxCompute需要具备什么专业技能?
MaxCompute支持多种计算模型数据通道,满足多场景需求。所以您只需要会使用SQL、Python、Java等开发语言就可以使用MaxCompute进行湖仓数据开发与数据分析。
3.7.2 MaxCompute中的项目(project)发挥什么作用?
项目(Project)是MaxCompute的基本组织单元,类似于传统数据库的Database或Schema的概念,是进行多用户隔离和访问控制的主要边界。项目中包含多个对象,例如表(Table)、资源(Resource)、函数(Function)和实例(Instance)等。一个用户可以同时拥有多个项目的权限。通过安全授权,可以在一个项目访问另一个项目中的对象。
3.7.3 MaxCompute的表格类型有几种,分别是什么?
MaxCompute的表格有两种类型:内部表和外部表(MaxCompute 2.0版本开始支持外部表)。
对于内部表,所有的数据都存储在MaxCompute中,表中列的数据类型可以是MaxCompute支持的任意一种数据类型。
对于外部表,MaxCompute并不真正持有数据,表格的数据可以存放在OSS或OTS中。MaxCompute仅会记录表格的Meta信息,您可以通过MaxCompute的外部表机制处理OSS或OTS上的非结构化数据,例如视频、音频、基因、气象、地理信息等。
3.7.4 MaxCompute常见错误信息如何理解,怎么定位问题?
MaxCompute的常见报错信息编号有规范定义,格式为:异常编号:通用描述 - 上下文相关说明。其中SQL、MapReduce、Tunnel的错误信息是不一样的。
总结
1、Elasticsearch
- 组件:X-Pack提供高级功能,Beats采集数据,Logstash处理数据,Kibana可视化分析。
- 特性:高性能、安全性好、可用性高、可扩展性强、易于维护。
2、DataWorks
- 功能:支持数据建模、集成、开发、分析和治理。
- 实践:通过调度参数实现增量和历史数据同步。
- 问题:解决调度依赖和数据源网络联通性测试失败等问题。
3、MaxCompute
- 架构:提供存储和计算引擎,支持多种计算模型和UDF。
- 特性:全托管Serverless服务,弹性扩展,集成AI能力,支持湖仓一体和实时分析。