连载:阿里巴巴大数据实践—数据开发平台

数据只有被整合和计算,才能被用于洞察商业规律,挖掘潜在信息,从而实现大数据价值,达到赋能于商业和创造价值的目的。面对海量的数据和复杂的计算,阿里巴巴的数据计算层包括两大体系:数据存储及计算平台(离线计算平台MaxCompute和实时计算平台StreamCompute)、数据整合及管理体系(OneData)

阿里数据研发岗位的工作大致可以概括为:了解需求→模型设计→ETL开发→测试→发布上线→日常运维→任务下线。与传统的数据仓库开发(ETL)相比,阿里数据研发有如下几个特点:

  • 业务变更频繁——业务发展非常快,业务需求多且变更频繁;
  • 需要快速交付——业务驱动,需要快速给出结果;
  • 频繁发布上线——迭代周期以天为单位,每天需要发布数次;
  • 运维任务多——在集团公共层平均每个开发人员负责上百多个任务;
  • 系统环境复杂——阿里平台系统多为自研,且为了保证业务的发展,平台系统的迭代速度较快,平台的稳定性压力较大。

通过统一的计算平台(MaxCompute)、统一的开发平台、统一的数据模型规范和统一的数据研发规范,可以在一定程度上解决数据研发的痛点。

本文主要介绍MaxCompute和阿里巴巴内部基于MaxCompute的大数据开发套件,并对在数据开发过程中经常遇到的问题和相关解决方案进行介绍。

1、统一计算平台

阿里离线数据仓库的存储和计算都是在阿里云大数据计算服务MaxCompute上完成的。

大数据计算服务MaxCompute是由阿里云自主研发的海量数据处理平台,主要服务于海量数据的存储和计算,提供完善的数据导入方案,以及多种经典的分布式计算模型,提供海量数据仓库的解决方案,能够更快速地解决用户的海量数据计算问题,有效降低企业成本,并保障数据安全。

MaxCompute采用抽象的作业处理框架,将不同场景的各种计算任务统一在同一个平台之上,共享安全、存储、数据管理和资源调度,为来自不同用户需求的各种数据处理任务提供统一的编程接口和界面。它提供数据上传/下载通道、SQL、MapReduce、机器学习算法、图编程模型和流式计算模型多种计算分析服务,并且提供完善的安全解决方案。

1.MaxCompute的体系架构

MaxCompute由四部分组成,分别是客户端(MaxCompute Client)、接入层(MaxCompute Front End)、逻辑层(MaxCompute Server)及存储与计算层(Apsara Core)。
image.png
图:MaxCompute体系架构图

2.MaxCompute的特点

(1)计算性能高且更加普惠

2016年11月10日,Sort Benchmark在官方网站公布了2016年排序竞赛CloudSort项目的最终成绩。阿里云以$1.44/TB的成绩获得 Indy(专用目的排序)和Daytona(通用目的排序)两个子项的世界冠军,打破了AWS在2014年保持的纪录$4.51/TB。这意味着阿里云将世界顶级的计算能力,变成普惠科技的云产品。CloudSort又被称为“云计算效率之争”,这项目赛比拼的是完成100TB数据排序谁的花费更少,也是Sort Benchmark的各项比赛当中最具现实意义的项目之一。

(2)集群规模大且稳定性高

MaxCompute平台共有几万台机器、存储近1000PB,支撑着阿里巴巴的很多业务系统,包括数据仓库、BI分析和决策支持、信用评估和无担保贷款风险控制、广告业务、每天几十亿流量的搜索和推荐相关性分析等,系统运行非常稳定。同时,MaxCompute能保证数据的正确性,如对数据的准确性要求非常高的蚂蚁金服小额贷款业务,就运行于MaxCompute平台之上。

(3)功能组件非常强大

MaxCompute SQL:标准SQL的语法,提供各类操作和函数来处理数据。

MaxCompute MapReduce:提供Java MapReduce 编程模型,通过接口编写MR程序处理MaxCompute中的数据。还提供基于MapReduce的扩展模型MR2,在该模型下,一个Map函数后可以接入连续多个Reduce函数,执行效率比普通的MapReduce模型高。

MaxCompute Graph:面向迭代的图计算处理框架,典型应用有PageRank、单源最短距离算法、K-均值聚类算法。

Spark:使用Spark接口编程处理存储在MaxCompute中的数据。

RMaxCompute:使用R处理MaxCompute中的数据。

Volume:MaxCompute以Volume的形式支持文件,管理非二维表数据。

(4)安全性高

MaxCompute提供功能强大的安全服务,为用户的数据安全提供保护。MaxCompute采用多租户数据安全体系,实现用户认证、项目空间的用户与授权管理、跨项目空间的资源分享,以及项目空间的数据保护。如支付宝数据,符合银行监管的安全性要求,支持各种授权鉴权审查和“最小访问权限”原则,确保数据安全。

2、统一开发平台

阿里数据开发平台集成了多个子系统来解决实际生产中的各种痛点。围绕MaxCompute计算平台,从任务开发、调试、测试、发布、监控、报警到运维管理,形成了整套工具和产品,既提高了开发效率,又保证了数据质量,并且在确保数据产出时效的同时,能对数据进行有效管理。

数据研发人员完成需求了解和模型设计之后,进入开发环节,开发工作流如图所示。
image.png
图:开发工作流图

对应于开发工作流的产品和工具如下图所示,我们将对其功能进行简要介绍。

1.在云端(D2)

D2是集成任务开发、调试及发布,生产任务调度及大数据运维,数据权限申请及管理等功能的一站式数据开发平台,并能承担数据分析工作台的功能。

image.png
图:对应于开发工作流的产品和工具

用户使用D2进行数据开发的基本流程如下:

——用户使用IDE进行计算节点的创建,可以是SQL/MR任务,也可以是Shell任务或者数据同步任务等,用户需要编写节点代码、设置节点属性和通过输入输出关联节点间依赖。设置好这些后,可以通过试运行来测试计算逻辑是否正确、结果是否符合预期。

——用户点击提交,节点进入开发环境中,并成为某个工作流的其中一个节点。整个工作流可以被触发调度,这种触发可以是人为的(称之为“临时工作流”),也可以是系统自动的(称之为“日常工作流”)。当某个节点满足所有触发条件后,会被下发到调度系统的执行引擎Alisa中,完成资源分配和执行的整个过程。

如果节点在开发环境中运行无误,用户可以点击发布,将该节点正式提交到生产环境中,成为线上生产链路的一个环节。

2.SQLSCAN

SQLSCAN将在任务开发中遇到的各种问题,如用户编写的SQL质量差、性能低、不遵守规范等,总结后形成规则,并通过系统及研发流程保障,事前解决故障隐患,避免事后处理。

SQLSCAN与D2进行结合,嵌入到开发流程中,用户在提交代码时会触发SQLSCAN检查。SQLSCAN工作流程如下图所示。

image.png

图:SQLSCAN工作流程图

用户在D2的IDE中编写代码。

——用户提交代码,D2将代码、调度等信息传到SQLSCAN。

——SQLSCAN根据所配置的规则执行相应的规则校验。

——SQLSCAN将检查成功或者失败的信息传回D2。

——D2的IDE显示OK(成功)、WARNNING(警告)、FAILED(失败,禁止用户提交)等消息。

SQLSCAN主要有如下三类规则校验:

代码规范类规则,如表命名规范、生命周期设置、表注释等。

代码质量类规则,如调度参数使用检查、分母为0提醒、NULL值参与计算影响结果提醒、插入字段顺序错误等。

代码性能类规则,如分区裁剪失效、扫描大表提醒、重复计算检测等。

SQLSCAN规则有强规则和弱规则两类。触发强规则后,任务的提交会被阻断,必须修复代码后才能再次提交;而触发弱规则,则只会显示违反规则的提示,用户可以继续提交任务。

3.DQC

DQC(Data Quality Center,数据质量中心)主要关注数据质量,通过配置数据质量校验规则,自动在数据处理任务过程中进行数据质量方面的监控。

DQC主要有数据监控和数据清洗两大功能。数据监控,顾名思义,能监控数据质量并报警,其本身不对数据产出进行处理,需要报警接收人判断并决定如何处理;而数据清洗则是将不符合既定规则的数据清洗掉,以保证最终数据产出不含“脏数据”,数据清洗不会触发报警。

DQC数据监控规则有强规则和弱规则之分,强规则会阻断任务的执行(将任务置为失败状态,其下游任务将不会被执行);而弱规则只告警而不会阻断任务的执行。常见的DQC监控规则有:主键监控、表数据量及波动监控、重要字段的非空监控、重要枚举字段的离散值监控、指标值波动监控、业务规则监控等。

阿里数据仓库的数据清洗采用非侵入式的清洗策略,在数据同步过程中不进行数据清洗,避免影响数据同步的效率,其过程在数据进入ODS层之后执行。对于需要清洗的表,首先在DQC配置清洗规则;对于离线任务,每隔固定的时间间隔,数据入仓之后,启动清洗任务,调用DQC配置的清洗规则,将符合清洗规则的数据清洗掉,并保存至DIRTY表归档。如果清洗掉的数据量大于预设的阈值,则阻断任务的执行;否则不会阻断。

DQC工作流程如下图所示。
image.png

图:DQC工作流程图

4.在彼岸

数据测试的典型测试方法是功能测试,主要验证目标数据是否符合预期。其主要有如下场景:

(1)新增业务需求

新增产品经理、运营、BI等的报表、应用或产品需求,需要开发新的ETL任务,此时应对上线前的ETL任务进行测试,确保目标数据符合业务预期,避免业务方根据错误数据做出决策。其主要对目标数据和源数据进行对比,包括数据量、主键、字段空值、字段枚举值、复杂逻辑(如UDF、多路分支)等的测试。

(2)数据迁移、重构和修改

由于数据仓库系统迁移、源系统业务变化、业务需求变更或重构等,需要对现有的代码逻辑进行修改,为保证数据质量需要对修改前后的数据进行对比,包括数据量差异、字段值差异对比等,保证逻辑变更正确。为了严格保证数据质量,对于优先级(优先级的定义见“数据质量”章节)大于某个阈值的任务,强制要求必须使用在彼岸进行回归测试,在彼岸回归测试通过之后,才允许进入发布流程。

在彼岸则是用于解决上述测试问题而开发的大数据系统的自动化测试平台,将通用的、重复性的操作沉淀在测试平台中,避免被“人肉”,提高测试效率。

在彼岸主要包含如下组件,除满足数据测试的数据对比组件之外,还有数据分布和数据脱敏组件。

数据对比:支持不同集群、异构数据库的表做数据对比。表级对比规则主要包括数据量和全文对比;字段级对比规则主要包括字段的统计值(如SUM、AVG、MAX、MIN等)、枚举值、空值、去重数、长度值等。

数据分布:提取表和字段的一些特征值,并将这些特征值与预期值进行比对。表级数据特征提取主要包括数据量、主键等;字段级数据特征提取主要包括字段枚举值分布、空值分布、统计值(如SUM、AVG、MAX、MIN等)、去重数、长度值等。

数据脱敏:将敏感数据模糊化。在数据安全的大前提下,实现线上数据脱敏,在保证数据安全的同时又保持数据形态的分布,以便业务联调、数据调研和数据交换。

使用在彼岸进行回归测试的流程如下图所示。
image.png
图:使用在彼岸进行回归测试流程图

注:本书中出现的部分专有名词、专业术语、产品名称、软件项目名称、工具名称等,是淘宝(中国)软件有限公司内部项目的惯用词语,如与第三方名称雷同,实属巧合。

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真的有无人工厂吗,IoT 怎么在产业界落地?| 赠书

责编 | 寇雪芹头图 | 下载于视觉中国出品 | CSDN云计算(ID:CSDNcloud)明天,工厂里没有人智能工厂可以灵活应对各种情况的新时代智能化工厂,即便没有人的参与,智能工厂也可以通过联网的制造设备完成信息交换…

开放下载!基于PAI个性化推荐系统开发指南

亚马逊的CEO Jeff Bezos曾经说过,他的梦想是“如果我有100万个用户,我就要为他们做100万个亚马逊网站”。而智能推荐系统的出现,就是为了实现这个梦想,智能推荐系统解决的是一个信息比对的问题,怎么样基于用户的信息和…

抖音实战~搜索页面~扫描二维码

文章目录一、二维码扫描1. api2. 前端源码3. 实现原理二、、作品鉴赏2.1. 短视频二维码2.2. 微信扫描2.3. 抖音扫描一、二维码扫描 uni.scanCode(OBJECT) 1. api 自己发布的短视频会有“保存到相册、复制链接、二维码、转为私密” 2. 前端源码 // 搜索扫码scan() {uni.scanC…

发力公有云的用友YonSuite,云原生实力到底如何?

作者 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于视觉中国 在云原生吞噬一切的口号下,云计算厂商和企业用户对云原生的关注度达到空前的高度。不过,在容器、微服务、DevOps等云原生概念被普及后,CSDN的2020-2021年度开发者大调查显示&#…

云原生语境下,如何重新解读微服务?

最近,O’Reilly 公布了一份关于企业微服务市场现状的数据调研。报告显示,在访问了全球 1,502 名软件工程师、系统和技术架构师、工程师以及决策者后,有 77% 的组织反馈采用了微服务,其中 92% 的组织成功使用…

抖音实战~公开/私密短视频互转

文章目录一、需求分析1. 公开转私密~流程图2. 公开转私密~流程简述3. 私密转公开~流程图4. 私密转公开~流程简述二、代码实战2.1. 公开转私密2.2. 私密转公开2.3. 公开转私密2.4. 短视频详情2.5. 私密转公开三、作品鉴赏3.1. 公开短视频转私密3.2. 私密短视频转公开一、需求分析…

超详细Netty入门,看这篇就够了!

思维导图 前言 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。 一、Netty概述 官方的介绍: Netty is an asynchronous event-drive…

申通的云原生实践之路:如何实现应用基于容器的微服务改造?

随着云计算的普及与云原生的广泛应用,越来越多的从业者、决策者清晰地认识到「云原生化将成为 企业技术创新的关键要素,也是完成企业数字化转型的最短路径」。 因此,具有前瞻思维的互联网企业从应用诞生之初就扎根于云端,谨慎稳重…

安迈云加入GDCA全球分布式云联盟,携手业内共建新生态

编辑 | 宋 慧 出品 | CSDN云计算 面对全球百年未有之大变局,以“新基建”为核心的宏观战略,正在加速波澜壮阔的数字时代到来。分布式存储与去中心化云计算作为Web3.0的重要基础设施,将加快推动千行百业数字化转型进程,构建商业新…

抖音实战~关注博主

文章目录一、关注我需求分析1. 关注我流程图2. 关注我流程简述3. 表结构设计二、关注我源码分析2.1. 前端2.2. 后端三、账号1关注实战3.1. 关注前数据记录3.2. 账号1关注账号23.3. 账号1关注后数据变化四、. 账号2关注实战4.1. 账号2关注账号14.2. 关注后数据变化4.3. redis存储…

ClickHouse 源码阅读 —— SQL的前世今生

注:以下分析基于开源 v19.15.2.2-stable 版本进行,社区最新版本代码改动较大,但是总体思路是不变的。 用户提交一条查询SQL背后发生了什么? 在传统关系型数据库中,SQL处理器的组件主要包括以下几种: • …

史上最全的支付宝二维码扫码优化技术方案

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。 设备扫描二维条码,通…

抖音实战~取关博主

文章目录一、需求分析1. 取关流程图2. 取关流程简述二、源码实战2.1. 取关~前端2.2. 取关~后端三、5217取关实战3.1. 取关前资料分析3.2. 账号5217取关四、账号0009取关实战4.1. 账号0009取关4.2. 数据变化一、需求分析 1. 取关流程图 2. 取关流程简述 1.前端携带用户ID和短视…

终于有人把Python讲清楚了!

Python入门从哪开始,90%以上的书上都是这样讲的:先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构,然后再介绍字符串处理和正则表达式,介绍文件等IO操作.... 就这样一点一点往下说。然而这种按部就班的学习方法&#…

MaxCompute 实现增量数据推送(全量比对增量逻辑)

ODPS 2.0 支持了很多新的集合命令(专有云升级到3版本后陆续支持),简化了日常工作中求集合操作的繁琐程度。增加的SQL语法包括:UNOIN ALL、UNION DISTINCT并集,INTERSECT ALL、INTERSECT DISTINCT交集,EXCEPT ALL、EXCEPT DISTINCT…

uniapp 引入iconfont的方法

文章目录1. 加入购物车2. 下载代码3. 创建静态目录4. 样式字体复制5. 字体转码6. 转码内容替换7. 样式引入7. 使用8. 个性化使用阿里图标库:https://www.iconfont.cn/ 1. 加入购物车 选中自己需要的图标依次加入购物车 2. 下载代码 打开购物车-下载代码到本地 …

独家下载 |《领军行业大数据及AI实战》解锁九大行业领军企业云上大数据及AI实战

飞天大数据平台不仅是阿里经济体大数据生产的基石,更为各行业客户提供大数据整体解决方案和强劲算力。上一册介绍阿里巴巴内部大数据实战的电子书《阿里巴巴大数据及AI实战》推出后,受到了广大开发者的认可。本次带来不同行业下企业的大数据&AI案例和…

从日志入手,保障 Kubernetes 稳定性

作者 | 悟鹏、沉醉来源 | 阿里巴巴云原生头图 | 下载于视觉中国不论对于软件的用户还是开发者,日志都是很重要的信息源。日志可以用来表征软件的运行状态,在软件运行不符合预期时提供丰富的信息,也可以用在开发阶段调试软件,方便定…

抖音实战~我关注的博主列表、关注、取关

文章目录一、关注模块1. 关注流程图2. 关注流程简述二、前端关注相关2.1. 查询我关注博主列表2.2. 取消关注2.2. 关注我2.4. 上滑分页粉丝列表2.5. 状态刷新三、后端关注相关3.1. 查询我关注的博主列表3.2. 取关3.3. 关注一、关注模块 1. 关注流程图 暂未上,敬请期…

灵魂拷问,上 Kubernetes 有什么业务价值?

上 Kubernetes 有什么业务价值? 今天要演讲的主题是跟应用管理或者说是云原生应用交付是相关的。首先我们想要先回答这么一个问题:为什么我们要基于 Kubernetes 去构建一个应用管理平台? 上图是一个本质的问题,我们在落地 K8s 经…