阿里经济体核心调度系统Fuxi( 六 )
本文插图
在云上和阿里集团的大数据实践中 , 我们发现对于计算调度需要同时具备超大规模和智能化的需求 , 以此为基本诉求我们开了Fuxi计算调度2.0的研发 。 下面就为大家从DAG调度和数据shuffle两个方面分别介绍计算调度2.0的工作 。
4.1 Fuxi DAG 2.0--动态、灵活的分布式计算生态
4.1.1 DAG调度的挑战
传统的分布式作业DAG , 一般是在作业提交前静态指定的 , 这种指定方式 , 使得作业的运行没有太多动态调整的空间 。 放在DAG的逻辑图与物理图的背景中来说 , 这要求分布式系统在运行作业前 , 必须事先了解作业逻辑和处理数据各种特性 , 并能够准确回答作业运行过程 , 各个节点和连接边的物理特性问题 , 然而在现实情况中 , 许多和运行过程中数据特性相关的问题 , 都只有个在执行过程中才能被最准确的获得 。 静态的DAG执行 , 可能导致选中的是非最优的执行计划 , 从而导致各种运行时的效率低下 , 甚至作业失败 。 这里我们可以用一个分布式SQL中很常见的例子来说明:
SELECT a.spend, a.userid, b.age FROM( SELECTspend, userid FROMorder_data WHEREspend > 1000 ) a JOIN( SELECTuserid, age FROMuser WHEREage > 60 ) b ONa.userid = b.userid;上面是一个简单的join的例子 , 目的是获取60岁以上用户花费大于1000的详细信息 , 由于年纪和花费在两张表中 , 所以此时需要做一次join 。 一般来说join有两种实现方式:
一是Sorted Merge Join(如下图左侧的所示):也就是对于a和b两个子句执行后的数据按照join key(userid)进行分区 , 然后在下游节点按照相同的key进行Merge Join操作 , 实现Merge Join需要对两张表都要做shuffle操作——也就是进行一次数据狡猾 , 特别的如果有数据倾斜(例如某个userid对应的交易记录特别多) , 这时候MergeJoin过程就会出现长尾 , 影响执行效率;
二是实现方式是Map join(Hash join)的方式(如下图右侧所示):上述sql中如果60岁以上的用户信息较少 , 数据可以放到一个计算节点的内存中 , 那对于这个超小表可以不做shuffle , 而是直接将其全量数据broadcast到每个处理大表的分布式计算节点上 , 大表不用进行shuffle操作 , 通过在内存中直接建立hash表 , 完成join操作 , 由此可见map join优化能大量减少 (大表) shuffle同时避免数据倾斜 , 能够提升作业性能 。 但是如果选择了map join的优化 , 执行过程中发现小表数据量超过了内存限制(大于60岁的用户很多) , 这个时候query执行就会由于oom而失败 , 只能重新执行 。
本文插图
但是在实际执行过程中 , 具体数据量的大小 , 需要在上游节点完成后才能被感知 , 因此在提交作业前很难准确的判断是否可以采用Map join优化 , 从上图可以看出在Map Join和Sorted Merge Join上DAG图是两种结构 , 因此这需要DAG调度在执行过程中具有足够的动态性 , 能够动态的修改DAG图来达到执行效率的最优 。 我们在阿里集团和云上海量业务的实践中发现 , 类似map join优化的这样的例子是很普遍的 , 从这些例子可以看出 , 随着大数据平台优化的深入进行 , 对于DAG系统的动态性要求越来越高 。
由于业界大部分DAG调度框架都在逻辑图和物理图之间没有清晰的分层 , 缺少执行过程中的动态性 , 无法满足多种计算模式的需求 。 例如spark社区很早提出了运行时调整Join策略的需求(Join: Determine the join strategy (broadcast join or shuffle join) at runtime) , 但是目前仍然没有解决 。
除此上述用户体感明显的场景之外 , 随着MaxCompute计算引擎本身更新换代和优化器能力的增强 , 以及PAI平台的新功能演进 , 上层的计算引擎自身能力在不断的增强 。 对于DAG组件在作业管理 , DAG执行等方面的动态性 , 灵活性等方面的需求也日益强烈 。 在这样的一个大的背景下 , 为了支撑计算平台下个10年的发展 , 伏羲团队启动了DAG 2.0的项目 , 在更好的支撑上层计算需求 。
推荐阅读
- 行业|高增长+高回撤!请收好这份“补票”名单,11只核心资产股入围,百亿科技股已跌出“深坑”
- 快科技|阿里辟谣:不会高薪聘请黑阿里网站的人 直接交给警方
- 美搭说说大文|巴萨核心将转会尤文,身价8000万,梅西公开欢迎新队友到来
- 核心|高增长+高回撤!请收好这份“补票”名单,11只核心资产股入围,百亿科技股已跌出“深坑”
- 腾讯|原创 腾讯如果想冻结阿里的资金,阿里除了束手就擒还有办法反制么?
- 马云下死命令留他?当事人辟谣:不要再消费我和阿里来赚流量了
- 黑猫的游戏人生|王者“射手榜”史诗级更新,5位T0射手同时登场,宣告S20核心稳了
- 金色光|产销低迷还扩产4.25倍,奥来德:未披露核心技术人员重大变化,
- 这有港澳台|贸易政策更加开放,国际视野丨G20经济体多条措施与疫情相关
- :当年阿里的前台,马云给她0.2%股份,20年过去她怎样了?
