统一计算框架|学习笔记

简介: 快速学习统一计算框架

开发者学堂课程【分布式计算入门:统一计算框架】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/375/detail/4703


统一计算框架


内容介绍

一、内存计算

二、内存计算问题

三、算子类型

四、难点


一、内存计算

关于内存计算,在广义上没有什么不适内存计算,大家所有计算都会用到内存的方式,狭义的定义是最大限度利用内存容量,最大限度可复用内存数据,内存数据可编程,框架内置容错的机制,存在 Replication 和  partition 的机制,这样才构成了狭隘上的内存计算范畴。

Batch : 可大可小

串并行 DAG:Batch 内串行,Batch 间并行

MRM

1.png

所以从内存计算引出到计算,认为计算分为三大要素,第一数据结构,第二功能,三控制逻辑,而  MapReduce  的出现是弱化了数据结构,抽象的功能让你只能去继承  MapReduce  编写程序,大大简化了控制逻辑,只能把控制逻辑编写成 Dag,不能自由组合,在某种程度上,他束缚了整个的编程能力。

思考一下,是不是还是以数据结构为核心(这里指分布式数据结构),数据结构的运算定义了从 a 到 b , b 到 a 的数据对象,他们之间的血缘关系, spark 的出现往传统方向靠近,spark 的问题是 Immutable 有什么好处,缺陷。所以需要提供更多的原语,而不是 mapreduce,需要对用户开放控制逻辑,用户可以在它的程序下面写出任意程序代码,和  sql  有点不同的是,如果用户把所有要做的事表示成  sql ,系统可以知道他要做什么事情,他可以在范围之内做出优化的动作,而且成控制逻辑功能逻辑的方法,很多时候需要用分布式执行,返回到控制层,分布式系统是不知道更高的信息,但是他取的是灵活性。


二、内存计算问题

基本的问题包括用户复杂的控制逻辑,Dag 运行效率,Distributed cache 的扩展问题,迭代计算,实际业务中的 case 问题,任务间如何共享数据,还有如何定义分布式数据结构。进而要考虑一个 adhoc 系统,他需要一线架构索引,基线,流式增量的合并,不同的文件所以加载后摆放到本地,然后再进行在线 service ,如何在各种复杂系统中做迁移,在离线,流式,迭代,在线计算做迁移。

所以换一个维度看计算,尝试从是否需要分批 Shuffle 方式是推还是拉,后世节点是预先拉起还是 Shuffle 拉起,通过这三个维度的组合可以发现,如果―A0B1C0,可以认为它是传统离线模式,―A0B0C1是 service mode ,―A0B0C1是流计算,这些只是模块不同的组合。尝试去 build 以这几种模块去设计系统,如图,

2.png

Application,可以嵌入在任何的用户环境,定义的各种分布式操作以及算子原语,用户可以使用它编写各种单机程序,以及分布式运行。Session,是指不同 job 复用数据的边界,DAGSession 可以复制不同的数据在内存中,DAGSession,不同的逻辑执行计划来复用相同的物理执行计划,BlockSession 支持 job 间复用用数据的全局管理,VertexManage 可以接受更细节的控制逻辑,localAM 保持与 am 数据结构一致的本地 am。


三、算子类型

算子层抽象出了五个基础算子类型:map,reduce,merge,shuffle,union

这五类算子是正交的,但是她的全集能组合出任何复杂算子,这张图是五个算子,在计算结构中的扭转,

3.png


四、难点

RC 的引入引发了一系列的问题,比如看到了资源一致,所以要进行本地调度,灵活的表示层会付出,泛型的代价,非原生的消耗成本是成倍数的增长,包括需要在这一层上面抽象出 schema 的 Table ,大量复用对象池和内存池,因为存在着本地的所以和摆放信息,所以引入了优化器,而不是全部依赖 globa l优化器,在分布式变量引入了 LocalDataSet ,所以用户可以和本地进行交叉式运算。分布式变量引入版本 Version,Partition/replica引入了不同的分布式变量亲缘以及计算的关系,用Tag来组合,Version 的引入使得分布式变量变得可读可写。在 ac 端支持 sql 的时候,执行计划可以简单的,分布式的 .match  来询问这个 DataSet  支持在 a 字段下支持等于的挑选操作。有所以和没有所以,逻辑执行计划经过优化后会变成不同的物理执行计划。

那么引入 CPU  框架,对不同的  join 会生出十几种优化策略,大量使用下推逻辑,希望一个处理逻辑到处运行,上下文运行的 context 不同,可以在离线, stream ,迭代,准实时,实时,在线,图分析复用。对于一个在线的场景,可以建立 dag,提前拉起  pattern 固定,大量执行下沉,利用 Codegen  做本地优化,以及内存优化,长尾控制,本地调度,在线的截断策略。

而分布式变量支持可读改,串并行  DAG 组合,支持  push/pull 模式,Shuffle service 单独抽离,进而会进一步思考 BD 是否进一步与 DB 融合,用户不希望数据拖动出来,所以需要更好的 schema 控制,建立更丰富的 index ,本地调度以及 CBO,目标客户,考虑将 DAG 和 MPP 延合成汇合架构,除了价格的设计,也要从微观的代码方面做到极致的优化。

下面介绍一下在向量化和  Codgen  做出的优化,简单来看,如下的这些代码是行存储,行运算的话,即便是在内存中也存在大量的跳跃,

GetBigint(*record, 0, &c0);  

GetDouble(* record, 1, &c1);

GetBigint(*record, 2, &c2);  

GetDouble(*record,3, &c3);

GetBigint(*record, 4, &c4);  

GetDouble(* record, 5, &c5);

double r0 =c0+ c1;

for (uint32_ _ti= 0;i < input.mView- >GetCount(); ++i){

if(c0== NULL |Ic1 == NULL)

r1 = NULL;

else *(r1++) = *(c0++)+ *(c1++);

}

如果利用列的存储,单指令多数据集  CPU  的优化变成列的计算,那么在内存里一次可以读出多行的这一列,当然存储是混合存储,提高性能。

相关文章
|
缓存 Kubernetes API
K8S 性能优化 - K8S APIServer 调优
K8S 性能优化 - K8S APIServer 调优
|
消息中间件 存储 数据可视化
kafka高可用集群搭建
kafka高可用集群搭建
372 0
|
3月前
|
缓存 并行计算 算法
TensorRT 和 ONNX Runtime 推理优化实战:10 个降低延迟的工程技巧
模型性能优化关键在于细节:固定输入形状、预热、I/O绑定、精度量化、图优化与CUDA Graph等小技巧,无需重构代码即可显著降低延迟。结合ONNX Runtime与TensorRT最佳实践,每个环节节省几毫秒,累积提升用户体验。生产环境实测有效,低延迟从此有据可依。
406 9
|
机器学习/深度学习 存储 并行计算
一篇就够:高性能推理引擎理论与实践 (TensorRT)
本文分享了关于 NVIDIA 推出的高性能的深度学习推理引擎 TensorRT 的背后理论知识和实践操作指南。
15191 9
一篇就够:高性能推理引擎理论与实践 (TensorRT)
|
安全 开发工具 数据安全/隐私保护
图形验证码,守护你的账号安全!
图形验证码能够有效防止恶意攻击,例如暴力破解、垃圾邮件发送和账号滥用行为。图形验证码提供了一个简单而高效的方式来守护你的账号安全。
|
存储 监控 Kubernetes
k8s诊断之记一次pod oom的异常shmem输出
客户反馈java设置xms,xmx参数固定8G内存,而pod的limit则为16G, 三番五次出现了pod oom的情况,且oom的时候他的业务进程输出也是8g, 同时promethus的监控对应pod的working_set_memory也是8个多g, 剩下的几个g的内存到底去哪里了呢?
4773 1
k8s诊断之记一次pod oom的异常shmem输出
|
机器学习/深度学习 资源调度 Kubernetes
进击的Kubernetes调度系统(三):支持批任务的Binpack Scheduling
阿里云容器服务团队结合多年Kubernetes产品与客户支持经验,对Kube-scheduler进行了大量优化和扩展,逐步使其在不同场景下依然能稳定、高效地调度各种类型的复杂工作负载。 《进击的Kubernetes调度系统》系列文章将把我们的经验、技术思考和实现细节全面地展现给Kubernetes用户和开发者,期望帮助大家更好地了解Kubernetes调度系统的强大能力和未来发展方向。
5185 110
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
1891 235
云上数据安全保护:敏感日志扫描与脱敏实践详解
|
机器学习/深度学习 人工智能 调度
【AI系统】推理引擎架构
本文详细介绍了推理引擎的基本概念、特点、技术挑战及架构设计。推理引擎作为 AI 系统中的关键组件,负责将训练好的模型部署到实际应用中,实现智能决策和自动化处理。文章首先概述了推理引擎的四大特点:轻量、通用、易用和高效,接着探讨了其面临的三大技术挑战:需求复杂性与程序大小的权衡、算力需求与资源碎片化的矛盾、执行效率与模型精度的双重要求。随后,文章深入分析了推理引擎的整体架构,包括优化阶段的模型转换工具、模型压缩、端侧学习等关键技术,以及运行阶段的调度层、执行层等核心组件。最后,通过具体的开发流程示例,展示了如何使用推理引擎进行模型的加载、配置、数据预处理、推理执行及结果后处理。
1404 0
|
算法 应用服务中间件 Shell
搭建高可用负载均衡器: haproxy+keepalived
企业业务量比较小的时候,单台服务器就可以满足业务需要了。但是随着业务发展,单服务器的问题就凸显出来了,如何透明的扩展服务器和带宽,增加服务器吞吐量呢?负载均衡器可以解决以上问题。
10367 47