阿里强大的大数据建设方法论是怎样的?(组图)
优采云 发布时间: 2021-08-16 19:16阿里强大的大数据建设方法论是怎样的?(组图)
阿里强大的大数据建设方法论是什么?作者从数据技术、数据模型和数据管理三个部分开始介绍,这将开阔你的视野,也对你有所启发。
最近看了阿里巴巴数据技术与产品部的《大数据之路》一书。本书无论是底层数据技术的沉淀,还是满足各种数据应用场景的产品形态,还是实践中提取的数据。管理理念有助于开阔视野,也可作为自己结合实际情况进行数据建设的参考和参考。
接下来,我们将介绍三个部分:数据技术、数据模型和数据管理。
一、数据技术篇1.1 log采集
阿里巴巴的log采集程序包括两大系统:基于Web的日志采集program Aplus.JS和基于APP的日志采集program UserTrack。
以下是页面浏览日志的采集进程:
浏览器点击链接;浏览器解析请求并按照标准协议向服务器发送HTTP请求(标准HTTP请求包括请求行、请求头和请求体。请求行将包括请求方法是get还是post,以及请求资源URL如HTTP版本协议号,cookie等附加信息会在请求头中体现);服务器接收并解析请求,将处理结果以HTTP响应的形式发送给浏览器(标准HTTP响应包括状态行和响应头、响应体。状态行是一个3位的状态码,用于标识处理服务端的结果,如200/404,响应头中的cookie等附加信息。响应体是可选的,但大多是非空的,包括HTML文档和图片,脚本等);浏览器接收服务器响应,解析并呈现页面。
这是从请求到页面最终显示的标准全过程。浏览器解析服务器的响应如下:
HTML文档解析到某个节点时,JavaScript脚本采集当前页面参数,浏览行为的上下文信息,HTML文档中嵌入的运行环境信息; 采集 完成后发送到日志服务器,通常通过 URL 参数形式体现在请求行中;日志服务器收到日志请求后,立即向请求发送成功响应,并将日志内容写入日志缓冲区;服务端日志处理程序读取日志,解析,保存到标准日志文件中,并注入实时消息通道,供后续程序消费使用。
除了普通的页面浏览日志采集,还有页面交互日志采集,比如采集页面鼠标移动变化,用于准确的用户行为分析。
流程大致如下:
采集代码植入目标页面,绑定到被监控的交互行为;当指定的交互行为产生时,采集代码和正常的业务交互响应代码一起触发; 采集 被发送到采集Server。 1.2数据同步
除了日志采集,数据库同步也是数据访问层的重要组成部分。
数据同步的三种方式:
直接连接同步:通过ODBC或JDBC直接采用标准化统一的标准接口。优点是配置简单,易于实施。但是也有缺点,比如降低了目标系统的性能。建议采用主备策略从备份数据库中提取数据。数据文件同步:约定格式,从源系统生成文本文件,通过FTP服务器传输到目标系统。非常适合收录多个异构数据库系统的数据源,简单实用,另外日志数据通常是文本文件。但是,在上传和下载过程中可能会出现丢包或错误的情况。建议上传时添加验证文件,注明数据量、文件大小等验证信息。数据库日志分析与同步:源系统的日志文件通过TCP/IP三路握手机制依次传输到目标系统。目标系统通过数据加载模块完成数据的导入。数据可实时或准时同步,延迟低,对业务系统影响小。适用于业务系统到数据仓库的增量同步。但缺点是投资较大,需要部署中间系统提取数据,同时存在数据漂移和遗漏问题。
阿里数据仓库同步有两种方式:
1.3线下数据平台
在整体架构中,数据计算层包括数据存储计算平台(MaxCompute、Stream Compute)、数据集成与管理系统(OneData)。
MaxCompute 收录四个部分:
Client:Web,提供restful API的离线数据处理服务;软件开发工具包;客户端工具CLT,可以提交命令完成项目管理、DDL等操作; IDE,上层可视化ETL和BI工具,可完成数据同步、任务调度、报表生成等操作。接入层:提供HTTP服务、Cache、负载均衡,实现用户认证和服务级访问控制。逻辑层:又称控制层,是核心部分,实现命令的分析与执行、数据对象的访问控制与授权等功能。其中,Worker处理所有的RESTful请求; Scheduler 负责 Instance 任务的调度和反汇编;而 Excutor 负责 Instance 的执行。计算层:Apsara Core,包括分布式文件系统、资源调度系统、监控系统等模块。
对于Max Compute,阿里巴巴根据不同场景集成了多个子系统作为统一的开发平台:
除了统一的开发平台,任务调度系统还负责任务的统一调度和管理。它由调度引擎和执行引擎组成。
任务调度系统具有以下特点:
1.4 数据服务
数据服务架构的演进:
SmartDQ的元数据模型和处理流程如下:
SmartDQ 只是满足简单的查询服务。在Oneservice的统计数据服务层中,有如下三个模块:
二、数据模型篇2.1 大数据建模概述
数据模型定义:数据模型是一种数据组织或存储的方法,强调从业务、数据存储和数据使用的角度对数据进行合理的存储。
数据模型的意义:
性能方面,提高查询性能,降低IO吞吐量;在成本方面,减少冗余,结果重用,降低数据存储和计算成本;在效率方面,可以提高数据使用效率;在质量方面,改善统计不一致性。
数据仓库建模方法:
2.2 数据集成与管理系统
Onedata 是阿里巴巴数据公共层建设的指导方法。其定位和价值在于:通过数据服务和数据产品,完成数据公共层的建设,建立标准化、共享的数据服务能力,降低数据互通成本,释放数据计算、存储、人力资源等资源,并消除业务和技术。痛苦。
指标命名约定:
派生指示符 = 时间段 + 修饰符 + 原子指示符
例如,过去7天的新APP用户数。
指标类型可分为:交易指标(如新注册会员数)、存量指标(如产品总数)、综合指标(如比例、变化、变化率、排名,平均值/分位数)统计)。
2.3 维度设计
度量是“事实”,维度是“环境”。维度用于描述事实发生的各种环境,并可用于约束查询、小计和排序。
维度通常使用主键来标识其唯一性。主键有两种类型:具有业务意义的自然键和具有自增列或全局唯一标识符的代理键。
数据仓库的重要特征是反映历史变化,所以如何处理维度变化是维度设计的关键任务。对于缓慢变化的维度,通常有如下三种处理方法:
阿里巴巴使用快照维度表来记录维度变化:基于计算周期,每天可以保留一个完整的快照数据。优点是简单高效,开发维护成本低;缺点是存储成本高。于是阿里提出了一种极限存储的方法。
极限存储采用历史拉链存储的方式,即新的时间字段(start_dt和end_dt)。与全存储相比,优点是不变的数据不会重复存储。
但是历史拉链存储也有缺点,就是下游使用和理解成本高;时间分区可能会超过数据库的分区限制。
所以可以具体优化两点:
透明(即上层对用户进行视图操作和映射关联,用户感知不到极限存储表的存在);每月制作历史拉链表(与每天相比,可以大大减少分区数量)。 2.4事实表设计
事实用于衡量业务流程。常用的事实有以下三种类型:
根据产生方式,事实表可分为以下三种:
事实表的一些设计原则:
事实表的设计方法:选择业务流程→声明粒度→确定维度→确定事实。该方法也适用于采集数据分析需求。
三、数据管理3.1元数据
元数据是数据的数据,记录了数据从生产到消费的全过程:数据仓库中模型的定义,各层级之间的映射关系,监控数据的数据状态,运行状态ETL 任务等。
根据用途,元数据可以细分为技术元数据和业务元数据:
构建统一元数据体系的目标:打通数据访问、处理、消费全环节,提供统一规范的元数据服务出口,保证元数据输出的稳定性和质量。
构建统一元数据系统的目标过程:
结合底层数据,对元数据进行分类,减少数据构建的重复,丰富表和字段的使用说明;构建中间层,在计算、存储、质量、安全等治理领域提供数据支持;为外部服务导出提供统一的元数据。
元数据被广泛使用:
阿里的应用主要有以下几个方面:
(1)Data Profile
建立数据血缘关系图,解决研发前期数据搜索、算法确定、数据处理的复杂困境,节约研发成本,更高效地理解和使用数据,通过标签标记、组织和归档数据。
数据标签主要分为四类:
(2)元数据门户
通过数据地图检索和理解数据,通过数据管理进行计算、存储和安全管理。
(3)血缘关系分析
表级血缘关系、领域血缘关系、间接使用表应用血缘关系用于影响分析、重要性分析、离线分析、离线分析、链接分析、故障排除等。
(4)数据建模
可以实现从经验建模到元数据驱动的升级,提供基于数据的指导,提高建模效率。使用的元数据有:表的基本元数据,比如表的下游情况、查询/关联/聚合的数量;表的关联元数据:关联表、关联类型、关联数、关联字段等;字段的基本元数据,如字段名称、评论、查询/关联/关联/聚合/过滤次数。
(5)drive ETL 开发
OneClick 可用于日常数据运维,如任务查询定位、添加字段、表删除、表备份、任务离线、任务删除等,例如Data Profile判断数据可以离线后,OneClick触发数据离线工作流,直接自动删除数据、删除元数据、离线调度任务、离线DQC监控。
3.2计算管理
计算管理的目的是减少计算资源消耗,提高任务执行性能。计算优化可以分为任务优化和系统优化。
3.3存储和成本管理
从以下几个方面介绍存储优化:
3.4数据质量
数据质量是所有分析有效和准备好的基础和前提,因此数据质量的保证是数据仓库建设的重要环节。
数据质量保证的原则主要有四个方面:
阿里巴巴的数据质量构建方法包括以下几个方面:
摩萨德可以提供强有力的保障监控和自定义警报。围绕运维目标即业务监控设计强保障监控,业务预警时间受到威胁报警。比如业务人员每天的离线数据任务,业务输出时间为9点。 Summer可以根据当前业务中所有任务最近7天的平均运行时间,设置预警时间,如果7点数据没有输出就发出预警。另外,当任务失败时,可以自定义告警配置。