当前位置: 首页 > news >正文

大数据之路:阿里巴巴大数据实践——元数据与计算管理

元数据

元数据概述
  • 核心定义:“描述数据的数据”——记录数据的结构、含义、血缘、生命周期等核心属性。

  • 元数据分类

    类型描述典型数据平台工具
    技术元数据数据的物理存储与结构信息表结构、文件路径、压缩格式DataWorks
    业务元数据数据的业务含义与规则指标定义(GMV)、业务术语OneData
    管理元数据数据的运维与治理信息负责人、访问权限、生命周期Data Catalog
  • 关键技术创新

    • 实时血缘捕获:解析Flink SQL语法树 → 自动生成字段级血缘。
    • 智能元数据推荐:基于历史访问模式,自动推荐表关联关系。
    • 冷热数据分级:根据last_access_time自动迁移存储介质。
元数据应用
  • Data Profile
    • 基础标签 :针对数据的存储情况、访问情况、安全等级等进行打标。
    • 数仓标签:针对数据是增量还是全量、是否可再生、数据的生命周期来进行标签化处理。
    • 业务标签:根据数据归属的主题域、产品线、业务类型为数据打上不同的标签。
    • 潜在标签:这类标签主要是为了说明数据潜在的应用场景, 比如社交、媒体、广告、电商、金融等。
  • 元数据门户
    • 数据地图:拥有功能强大的血缘信息,包括字段结构、分区信息、数据血缘、数据任务产出以及数据表索引、存储等配置信息。
    • 数据管理:提供个人和 BU 全局资产管理、成本管理和质量管理等。
    • 应用链路:一种是通过 MaxCompute 任务日志进行解析;一种是根据任务依赖进行解析。
  • 数据建模
    • 表的基础元数据:包括下游情况、查询次数、关联次数、聚合次数、产出时间等。
    • 表的关联关系元数据:包括关联表、关联类型、关联字段、关联次数等。
    • 表的字段基础元数据:包括字段名称、字段注释、查询次数、 关联次数、聚合次数、过滤次数等。

计算管理

系统优化
  • 业务背景

    • 资源分配失衡:MaxCompute集群日均运行200万 + 任务,传统Hadoop基于输入数据量的静态资源分配导致。
    • Map阶段:小文件过多引发Instance负载不均,部分Instance处理仅4MB数据,部分超4GB。
    • Reduce阶段:输入依赖Map输出,静态评估误差大,造成小任务资源浪费、大任务长尾(完成时间延迟)。
    • 统计信息成本高:传统CBO(如Oracle)需全量收集统计信息,在大数据场景下资源消耗过大。
  • 优化目标:提升资源利用率(CPU/内存/Instance并发);缩短任务执行时长,支持流量峰值场景。

  • HBO(History-Based Optimizer):基于历史的优化器

    • 核心原理:动态结合任务历史执行数据与集群状态,通过基础资源估算 + 加权资源追加分配资源。

    • 基础资源估算

      Map Task:按输入数据量及预设处理量计算初始Instance数,分层控制防止超大任务独占资源。

      Reduce Task:取最近7天Map输出的平均数据量作为Reduce输入基准,避免Map输入量估算偏差。

    • 加权资源追加:对比历史处理速度与系统期望值,若平均速度低于期望值,按比例追加Instance。

  • CBO(Cost-Based Optimizer):基于代价的优化器

    • 架构设计:基于Volcano模型,构建多模块协同优化引擎。

    • Meta Manager:提供表结构、分区信息等元数据,支持分区裁剪(如过滤条件排除无效分区)。

    • Statistics

      低成本统计:采用抽样算法(如Distinct值估算)替代全量扫描,资源消耗降低90%。

      关键指标:行数(Count)、唯一值(Distinct)、高频值(TopN)。

    • Rule Set:Substitute Rule——确定性优化(如过滤条件下推);Explore Rule——多路径探索(如Join重排序)。

    • Volcano Planner Core:基于代价模型,综合CPU、I/O、内存开销,选择总代价最低的执行计划。

    Meta Manager
    提供表/分区元数据
    Statistics
    收集统计信息
    Rule Set
    执行优化规则
    Volcano Planner Core
    生成最小代价计划
任务优化
  • 业务背景

    问题类型具体表现优化目标
    数据倾斜少数Reduce处理超大数据量(如某个用户行为日志占比90%)负载均衡,避免单点长尾
    小文件过多Map任务处理大量KB级文件,启动开销>计算耗时合并文件,提升处理效率
    长尾任务99%的Task在5分钟内完成,剩余1%耗时超1小时动态分裂+备份执行
    资源浪费空任务(如过滤后无输出)、重复计算消除无效计算
  • 数据倾斜优化

    • Map倾斜:通过上游小文件合并或者使用DISTRIBUTE BY rand()打乱数据分布防止Map端的倾斜。

    • Join倾斜优化

      MapJoin优化: Join 操作提前到 Map 端执行, 将小表读人内存, 顺序扫描大表完成 Join 。

      空值Key优化:将小表的空值Key处理成随机值。

      热点Key优化:倾斜Key添加随机前缀,分桶打散后Join。

    • Reduce倾斜优化:一般由Count Distinct引起,可以对热点Key进行单独处理,通过UNION ALL合并,或通过小文件合并解决。

    • Group By倾斜优化(二次聚合):第一阶段进行局部聚合,对热点枚举值进行Map和Reduce,第二阶段轻量级汇总中间结果。

  • 小文件优化

    策略适用场景实现方式收益
    写入时合并实时写入场景(Flink/Spark)设置文件滚动策略:128MB或10分钟从源头杜绝小文件
    Compaction服务离线数仓(Hive/MaxCompute)定时任务合并小于128MB的文件文件数减少90%
    查询时合并Ad-hoc查询SELECT /*+ MERGE_FILES */ * FROM table查询I/O降低70%
  • 计算效率提升:四类无效任务治理

    问题类型检测方法优化方案
    空任务输出文件大小为0过滤条件前置,避免进入计算链
    重复计算血缘分析发现相同逻辑多任务执行建立中间层复用结果(DWS汇总层)
    低效SQL扫描全表却仅返回10行谓词下推+索引优化
    过度聚合UV计算使用COUNT(DISTINCT)全扫描改用HyperLogLog(误差<1%)
数据倾斜
小文件
长尾
无效计算
原始任务
优化分析
随机前缀/二次聚合
Compaction服务
任务分裂+备份执行
空任务过滤+中间层复用
高效任务
http://www.dtcms.com/a/313511.html

相关文章:

  • 【分析学】Hilbert 空间的分离性
  • 分布式事务Seata AT模式设计分析篇
  • 41.安卓逆向2-frida hook技术-过firda检测(五)-利用ida分析app的so文件中frida检测函数过检测
  • 关于Manus AI与多语言手写识别的技术
  • Linux驱动学习(六)一些函数
  • 【canvas】
  • 从WebShell 与 ShellCode 免杀技术 打造适合自己的免杀技术链
  • 设计模式 - 组合模式:用树形结构处理对象之间的复杂关系
  • 攻防世界-web-csaw-mfw
  • 【C++】封装,this指针
  • C++高阶笔记第四篇:STL-函数对象
  • 【Leetcode】2106. 摘水果
  • Yakit热加载魔术方法模版插件语法JSRpc进阶调用接口联动
  • 【Bluedroid】btif_av_handle_event 流程源码解析
  • 更换KR100门禁读头&主机
  • UART串口常用库函数(STC8系列)
  • LLM大模型开发-SpringAI:ChatClient、Ollama、Advisor
  • greenfoot主要api
  • 广东省省考备考(第六十五天8.3)——判断推理:图形推理(数量规律题目总结)
  • 使用C++实现日志(3)
  • sqli-labs:Less-23关卡详细解析
  • C的数据类型与变量
  • 2025 Java开发真实试题-阿里面试题分析
  • C语言与数据结构:从基础到实战
  • 机器学习——过采样(OverSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测
  • 前端工程化:Vue3(一)
  • 2025年EAAI SCI1区TOP,森林救援调度与路径规划:一种新型蚁群优化算法应用,深度解析+性能实测
  • 智能化门禁常见问题处理思路
  • Linux mount挂载选项详解(重点关注nosuid)
  • 使用Perl和库WWW::Curl的爬虫程序!