异构集群,统一计算 在微博机器学习平台的应用

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 内容简要:一、微博机器学习平台简介二、异构集群,多计算引擎–Before三、异构集群,统一计算–Now四、解决方案五、机器学习流程自动化

内容简要:

一、微博机器学习平台简介

二、异构集群,多计算引擎–Before

三、异构集群,统一计算–Now

四、解决方案

五、机器学习流程自动化

 

 

一、微博机器学习平台简介

微博机器学习平台为业务方在各种推荐场景下,提供端到端、一站式、自动化机器学习流程的解决方案,整体流程图如下:

image.png

二、异构集群,多计算引擎–Before

image.png

由上图可见,异构集群和多计算引擎的问题与痛点非常明显,接下来分别做出分析。

 

(一)异构集群

异构集群三大特性:入口分散、存储资源割裂、计算资源割裂

 

1.入口分散

当算法工程师想做一个数据处理或者机器学习时,他首先要知道要在哪个集群上,然后找到相应的Gateway,接着去申请登录权限,最后登录上去进行相应的操作。这样就会非常的分散,造成用户体验感混乱。

 

2.存储资源割裂

Hadoop集群、云上Hadoop集群、EMR还有MaxCompute的集群,都有自己的存储和云数据,这就造成了一个个的数据孤岛,数据无法共享。当一个集群生成的数据要在其它的集群上使用时,需要做一个数据搬运的工作,非常浪费时间,相应地对机器学习流程的自动化也会造成割裂。

 

3.计算资源割裂

各个集群的计算资源无法互相弹性使用,这样就会造成部分集群异常繁忙,部分集群较为空闲,使得计算资源无法得到最优化的利用。

 

(二)多计算引擎

多计算引擎存在三大痛点:学习成本高、开发效率低和维护难度大。

 

 

三、异构集群,统一计算–Now

针对以上的问题与痛点,我们进行了一系列建设和改造,完成了四个统一:

-   统一入口;

-   统一调度;

-   统一SQL计算引擎;

-   统一存储/元数据。

image.png

如上图所示,当一个SQL任务经过调度中心,会按需灵活调度到各个异构集群上,各个异构集群都是统一的SQL计算引擎,这样就大幅降低了算法工程师的学习成本,提升开发效率,提升代码的共享。

统一的方法是让各个异构集群都支持SQL计算引擎,然后建设了一个统一的元数据中心,做湖/仓一体化,让各个异构集群之间使用同一份元数据,实现了数据共享。

 

 

四、解决方案

由于每个异构集群的特点不同,所以对每个集群也有不同的解决方案。因此针对各个的异构集权采取分而治之的方式,根据问题自身的特点提出了相应的解决方案,方案如下:

l  统一入口、统一调度;

l  统一SQL计算引擎、统一存储/元数据:

1MaxCompute – 湖仓一体;

2)自建Hadoop – 统一元数据;

3Kubernetes – 批流混跑;

4EMR SQL计算引擎优化。

 

(一)统一入口、统一调度

image.png

如上图所示,统一入口主要是支持WebUICLI两种方式,调度中心主要有两个特点。

第一个特点就是每接入一个新的异构集群,支持Weibox即插即用,配置方式十分灵活。

第二点是调度中心支持按需做作业、排布的事情,然后根据异构集群之间计算引擎资源的使用情况来决策,将SQL计算作业提交到相应集群执行,相关的策略除了计算资源方面的还有集群之间的网络带宽。

如何实现异构集群接入实验室,精髓就在中间一排weibox。每个集群在接入调度系统的时候都有一套组件,称之为weibox

每个weibox上都部署了一些异构集群,它会把前端用户发送过来的作业根据调度中心调到相应的集群上,不仅把作业提交上去,而且能将返回作业的状态信息以及所产生的日志数据让用户看到。

经过统一入口和统一调度,让各个异构集群实现了统一的管理和调度

 

(二)统一SQL计算引擎、统一存储/元数据

1.Maxcompute - 湖仓一体

image.png/仓一体主要是让数据库和数据仓一体化、统一化。

平台有一个特点是所有的数据都是基于EMR存储展开的,有各种各样的结构化、非结构化的数据,做一些数据分析以及AI计算。EMR存储相当于一个数据湖,其他的各种服务和应用都围绕着数据湖去展开。

基于MaxCompute的集群上,有一些较高性能的深度学习的组件和机器学习的组件,比如TFgnn等。

如果使用数据湖中丰富的数据资源?MaxCompute的集群和EMR集群是两个完全异构的集群,它们之间的存储资源与计算资源完全割裂,这种数据同步方式非常低效,需要人工的介入,使用起来较为复杂,使得算法工程师做数据同步时效率低下。

基于痛点,提出了一个湖/仓一体的概念,让它的数据湖和数据仓库统一化、一体化。经过一系列的措施,如通过语言数据透视的功能、开放数据库API的能力,在MaxCompute的集群上的各种深度学习的组件,开放数据湖API的能力,使得能直接访问和读写数据湖当中的数据,建设了一个统一的元数据中心,实现了数据共享。

 

数据共享带来了什么收益?

第一点是实现了SQL跨级群的联邦计算。在MaxCompute的集群上,有一个高性能的SQL计算引擎odpsSQL。由于现在湖/仓已经达到了一体化,因此SQL语句的表无论是落在数据湖还是MC数仓上,都是可以进行跨集群计算。但是在计算的过程还存在跨集群之间网络专线性的问题,所以我们会定期分析两个集群当中SQL作业的历史实行情况,然后分析出一些热表,将比较大的热表利用网络空闲时段同步到 MC数仓当中,让它们之间的网络传输最小化。

SQL跨集群联邦计算的能力也解决了之前一大痛点,使用odpsSQL以后可以高效分布式地同步数据。有时MaxCompute集群上的组件虽然具备了直接访问数据湖的能力,但有时一些高性能的API还是会直接读取MC数上的Table。所以如果还是想使用数仓里面的数据,可以使用odpsSQL直接高效同步数据。

第二点就是MaxCompute集群上的各种深度学习和机器学习的组建可以直接读写数据湖当中的数据,生成的模型文件还有各种Check Point也可以直接写入数据湖。后续模型上线的各种服务也是围绕数据湖展开,不再需要做数据中转,大幅提升深度学习的效率与业务效果。

 

2.Hadoop - 统一元数据

Hadoop集群的痛点和问题与湖/仓一体类似,它也存在内置存储、语言数据的问题,都是基于EMR的数据湖,导致Hadoop集群的存储形成了一个数据孤岛。

image.png

如上图所示, 解决Hadoop集群问题的方法也是统一语言数据,将它的元数据和存储并入到之前已经开始建设统一的元数据系统当中,然后解决一些HDFS网络、权限、域名互通的问题。

经过统一的建设以后,在这两个集群之间实现了SQL跨集群的联邦计算。例如在SQL语句当中就一个联邦计算的简单示例,这条SQL无论放在A集群还是B集群上,都是可以进行计算。但是这种方法也存在集群之间的网络带宽问题,所以基于这个问题同样有冷热数据的分析,热数据定期同步的功能,也会分析出一些比较热的表,然后定期同步到对应的两个集群上,尽量实现本地化的计算,让计算更加的经济化。

由于网络带宽是这两个问题的最敏感点,因此会在此基础上增加一层关于网络专线最优使用的策略。这个策略本质上是通过作业以及云数据的分析,让数据跨专线的量最小化,使得作业都在本地执行。通过这样一个操作,加上Hadoop集群本身支持HiveSQLSparkSQL,因此也实现了统一。

 

3.Kubernetes - 批流混跑

Kuberenetes集群主要是做一些实时计算和在线服务的作业。

image.png

如上图所示,基于微博流量的特点,随着用户逐渐的减少,流量就会陷入一个低谷期。这时集群的CPU内存资源相对空闲。而反观做离线计算的Hadoop集群、YARN集群,当时间过了0点,开始计算昨天的各种定时作业、批处理计算数据,此时Hadoop集群异常繁忙。基于这个因素,想让两个集群之间的计算资源能够互相弹性使用,从而实现交通低谷,既缓解了Hadoop集群的计算压力,同时也能让Kuberenetes集群计算资源得到更加充分的使用,让计算资源得到一个最优化的使用。

image.png

SparkSQLFlinkSQL调度到Kuberenetes上执行,选择SparkSQLFlink SQL的原因是它们在支持SQL计算引擎的同时,开源对Kuberenetes的支持性也较高。

SparkSQLFlinkSQL计算引擎有一个非常重要的问题,就是如何同时保证在线和实时作业以及批作业的稳定性?

首先,不能因为批作业调度而影响实时在线作业的稳定性。其次,如果保证实时和在线作业的高优先级,那么如何保证批作业的稳定性。

基于上述的问题,我们将实时作业和在线作业设置最高的优先级。接着在批作业上面,分了两层的优先级的设置。

针对SparkSQL作业,对它的Driver设置的是第二层优先级。相应的Flink SQL,针对它优先级设置它的Driver对应的是JobManagerExcutor对应的是Manager角色。 通过上述操作,将实时在线作业的优先级设置成了最高。

 

第二个解决方案是保证批作业的优先级。由于批作业的优先级不如实时作业高,调度中心是基于工作流重试的机制。如果出错的话,首先会在K8S集群上开启出错重试,如果出错的次数超过一个设定的值,会将它调度回YARN集训进行重试,最终完成正确执行。 通过上述二层机制,保证了批作业也同样的稳定。

第三个需特别强调,由于批作业调度过来之后是要做Shuffle,如果Shuffle数据量较大,会影响实时在线作业的稳定性。针对这个问题,我们独立部署了一套脱离于Kuberenetes集群的Shuffle Server,让Shuffle数据单独写到一套服务器上,上述操作同时解决了关于作业稳定性的问题。

以上策略不仅实现了计算资源的最优化使用,而且在这个集群上也稳定支持了SQL计算引擎,实现SQL计算引擎的统一。

 

4.EMR SQL计算引擎优化

Hadoop集群统一的元数据中心是基于EMR的,它支持各种计算引擎,例如HiveSQL以及SparkSQL。由于需要它高效的性能,因此进行SQL计算引擎优化。

image.png

image.png

在算法工程做各种数据处理的时候最青睐Hive on MR,因为算法工程师比较专注于实现业务效果和业务逻辑,不关注计算引擎的底层原理优化。

在选型的原则上有如下三个原则:

第一是新的计算引擎一定要让用户做到无感知,用户的代码不需要做任何的改变,让用户感知不到发生了改变。

第二是迁移过程稳定且不需要太多的人工干预。刚使用Tez时并不清楚它的稳定性,所以在验证的过程中采取逐步放量灰度的方式。

第三个是执行,通过上面的图中可以看到Tez的执行时长,Tez的性能较MR有一个明显的提升。这个提升除了体现在时间有明显的缩短,同时在VcoreSeconsMemSecons计算资源的使用、Shuffle数据量上也有大幅减少,所以在EMR的云上Hadoop集群做了一个SQL计算引擎的优化,使其在统一计算平台的路上也优化了本身。

 

 

五、机器学习流程自动化

上图为图计算样例,首先进行的图训练生成一个Embedding,然后进行相似度计算做向量的召回,最终召回的向量会写入到物料库当中,供后续推荐场景召回使用。

通过对比之前与现在的流程操作,可以明显感受到在异构集群,统一计算平台的过程当中,给机器学习流程自动化做出了很大的正向推进作用。

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
23小时前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI
人工智能平台PAI
4 0
|
5天前
|
机器学习/深度学习 数据采集 算法
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度
|
5天前
|
机器学习/深度学习 算法 数据挖掘
【C 言专栏】C 语言与机器学习的应用
【5月更文挑战第6天】C语言在机器学习中扮演关键角色,以其高效性、灵活性和可移植性实现底层算法、嵌入式系统和高性能计算。在神经网络、决策树和聚类算法等领域的实现中不可或缺。C语言被用于TensorFlow和OpenCV等知名库的底层,常与C++、Python结合使用。尽管面临开发难度和适应新算法的挑战,但C语言在机器学习领域的价值和潜力将持续展现,为科技进步贡献力量。
【C 言专栏】C 语言与机器学习的应用
|
9天前
|
机器学习/深度学习 运维 自然语言处理
探索机器学习在金融欺诈检测中的应用
【5月更文挑战第3天】 随着金融科技的迅猛发展,机器学习作为其核心推动力之一,正逐渐改变着我们对金融服务安全与效率的理解。本文将深入探讨机器学习技术在金融欺诈检测领域内的应用现状与前景。通过分析多种算法和实际案例,我们揭示了如何利用机器学习提高识别欺诈行为的准确率,降低金融机构的风险损失。同时,文章还将讨论在此过程中遇到的挑战及未来的发展趋势,为读者提供一个全面而深入的视角。
|
9天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
10天前
|
机器学习/深度学习 算法 自动驾驶
探索机器学习在图像识别中的应用
【5月更文挑战第1天】 随着人工智能技术的飞速发展,机器学习已成为其最活跃的分支之一。特别是在图像识别领域,机器学习技术已展现出强大的能力与广泛的应用前景。本文将深入探讨机器学习在图像识别中的关键作用,从基础原理到实际应用案例,剖析其背后的算法和模型。同时,我们将讨论当前面临的挑战和未来的发展趋势,为读者提供一个全景式的技术分享。
19 3
|
11天前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习在金融欺诈检测中的应用
【4月更文挑战第30天】 随着金融科技的迅猛发展,机器学习技术在金融行业中的应用变得日益广泛。特别是在金融欺诈检测领域,机器学习以其强大的数据处理能力和智能识别功能,正逐渐成为防范和打击金融欺诈的重要工具。本文将深入探讨机器学习在金融欺诈检测中的关键作用,分析其优势及面临的挑战,并提出未来发展趋势。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用与挑战探索机器学习中的自然语言处理技术
【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经成为计算机视觉领域的核心动力。本文将探讨深度学习在图像识别任务中的关键技术、应用实例以及面临的主要挑战。我们将重点讨论卷积神经网络(CNN)的架构优化、数据增强技术以及迁移学习的策略,并通过具体案例分析其在医疗影像、自动驾驶和面部识别等领域的应用成效。同时,我们也将指出当前模型泛化能力不足、对抗性攻击以及算力资源需求等挑战,并提出潜在的解决方向。 【4月更文挑战第30天】 在人工智能领域,自然语言处理(NLP)是赋予机器理解和响应人类语言能力的关键技术。本文将深入探讨NLP的发展历程、核心技术及其在不同领域的应用案例。我们将从
|
11天前
|
机器学习/深度学习 数据采集 算法
【Python 机器学习专栏】机器学习在医疗诊断中的前沿应用
【4月更文挑战第30天】本文探讨了机器学习在医疗诊断中的应用,强调其在处理复杂疾病和大量数据时的重要性。神经网络、决策树和支持向量机等方法用于医学影像诊断、疾病预测和基因数据分析。Python作为常用工具,简化了模型构建和数据分析。然而,数据质量、模型解释性和伦理法律问题构成挑战,需通过数据验证、可解释性研究及建立规范来应对。未来,机器学习将更深入地影响医疗诊断,带来智能和精准的诊断工具,同时也需跨学科合作推动其健康发展。
|
11天前
|
机器学习/深度学习 自然语言处理 搜索推荐
【Python机器学习专栏】迁移学习在机器学习中的应用
【4月更文挑战第30天】迁移学习是利用已有知识解决新问题的机器学习方法,尤其在数据稀缺或资源有限时展现优势。本文介绍了迁移学习的基本概念,包括源域和目标域,并探讨了其在图像识别、自然语言处理和推荐系统的应用。在Python中,可使用Keras或TensorFlow实现迁移学习,如示例所示,通过预训练的VGG16模型进行图像识别。迁移学习提高了学习效率和性能,随着技术发展,其应用前景广阔。

热门文章

最新文章