基于多用户共享的Spark集群弹性扩缩容

举报
霞光 发表于 2020/12/28 23:32:32 2020/12/28
【摘要】 DLI数据湖探索服务通过动态资源分配的开启、以及多用户共享default集群弹性扩缩容使用,在充分使用计算资源的基础上,节省了用户的成本。同时,对于用户按需专属队列,DLI已经支持用户指定扩缩容计划的定时扩缩容。用户根据自己的业务繁忙周期,制定自己所需的队列扩缩容计划,定时预置满足业务所需的计算资源,同时节省了成本。

1. 背景介绍

    Apache Spark是专门为大规模数据处理而设计的快速、通用的并行数据处理框架引擎,能够帮助用户开发快速、统一的大数据应用。和传统的Hadoop相比,Spark通过内存计算方式来避免一个MapReduce工作中多个任务对同一个数据集进行计算时的I/O瓶颈。Spark作为一个内存计算框架,具有批处理、流处理、SQL查询、文本处理、机器学习等多种能力。当前Spark集群通常以ECS+磁盘(云盘或者本地盘)配合一系列开源组件组成。集群创建后,在业务高峰期会存在资源不足情况,需要扩容来满足业务需求;在业务低峰期,需要根据业务量及时的缩容资源,避免资源的浪费和成本的增加。

2. 传统Spark集群存在的问题

    对于用户业务量不是很大或者业务存在周期性的场景:如果该用户一直占有集群的所有资源,则会造成很大的计算资源浪费和成本的增加;如果对该用户的集群资源回收,下次再利用的时候需要重新创建集群并安装业务所需的镜像,则会浪费很大的时间去准备环境,造成了很大的不便。

    对于多个用户使用同一个集群的场景:比如用户A使用的资源比较少,但是使用资源的业务是持续的。用户B使用的资源量大,但是业务是间断性的。当B用户使用大量计算资源时,A用户提交的作业任务有可能会一直处于请求资源状态,不能及时的处理作业任务,造成任务的积压。


1 多用户共享集群作业串行执行情况

         如何将上述两种场景融合在一起,不同的用户作业之间不相互受影响,同时能够快速的为用户分配所需资源,是衡量集群弹性伸缩方案优劣的重要指标,也是用户非常关心和头疼的问题。

3. DLI多租户共享default队列自动扩缩容方案

    DLI服务预置了名称为“default”的SQL队列,当用户在不确定所需队列容量或者没有可创建队列空间的情况下,可以使用该队列执行作业。使用该队列时,按扫描量计费。该队列的集群基于华为云CCE创建,在继承了spark on k8s各种特性的同时,相较于Hadoop集群,在集群扩缩容性能、资源隔离等方面做了很大优化。


2 多用户共享集群作业并行执行情况

 

  3.1 用户不需要单独购买队列,按需秒级分配资源

    当用户提交作业在队列上时,立即分配计算资源开始执行作业。传统的共享集群计算资源有限,而且按照先来先占有的方式分配资源,导致用户经常获取不到计算资源,作业长期处理等待状态。优化后的资源池更大,同时预留了资源池缓冲区,用户计算资源分配方式变为每个用户单独分配资源,不再等待其它用户先提交的作业执行完再执行后续用户提交的作业。如果用户对计算资源使用不是很频繁的场景,该方案在保障用户计算资源的同时,为用户节省了集群创建时间,减少了用户作业等待时间。

  3.2 多用户计算资源安全隔离,互不影响

    在default队列上,DLI为不同用户分配了不同的计算资源,各个用户的计算资源互不干扰。这就避免了不同用户之间计算资源的相互竞争和影响,让用户申请到的计算资源“全心”为申请者服务。

  3.3 集群计算资源不足,快速扩容


3 多用户共享集群作业触发集群扩容

    当用户很多即将用完DLI为用户预留的计算资源时,DLI提供了基于阈值的弹性扩缩容能力。比如:当集群资源被占用90%时,DLI会启动集群物理资源扩容,该物理节点扩容会预置安装用户的公共镜像、DLI的管理调度镜像等,一般2分钟内即可完成。由于是提前预置资源,而新用户提交作业时,是从资源缓存池取出所需资源,不用等待十几分钟甚至更长时间的物理资源扩容等待,为用户提供了很好的作业执行体验。即使大量用户同时请求资源,DLI后台的物理集群也能够在几分钟内完成大量物理机器节点的扩容,用户不用担心长时间的等待。

  3.4 集群计算资源过于充足,触发缩容

    当用户资源过于充足时,DLI会触发基于阈值的缩容。比如:当集群资源被占用60%时,DLI会启动集群物理资源缩容,节省了大量的非必须计算成本。在缩容时,集群节点并不是立即释放,而且首先将没有运行作业的节点放入释放缓冲池,如果在一定时间内,没有新的作业到来触发扩容,则释放缓冲池中的计算节点。如果有新的作业到来触发扩容,则将释放缓冲池中的节点重新加入计算资源池。


4 多用户共享集群空闲时触发缩容

4. 总结

    华为云DLI数据湖探索服务在开源Spark基础上进行了大量的性能优化与服务化改造,兼容Apache Spark生态和接口,动态资源分配的开启和多用户共享default集群弹性扩缩容使用,在充分使用计算资源的基础上,节省了用户的成本,优化了用户使用体验。同时,对于用户按需专属队列,DLI已经支持用户指定扩缩容计划的定时扩缩容。用户根据自己的业务繁忙周期,制定自己所需的队列扩缩容计划,定时预置满足业务所需的计算资源,同时节省了成本。下一步DLI即将放开基于用户资源负载的用户专属集群自动扩缩容能力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。