博客
关于我
浅谈分布式集群管理系统的一些细节【二】
阅读量:458 次
发布时间:2019-03-06

本文共 1145 字,大约阅读时间需要 3 分钟。

分布式集群资源管理系统原理

今天是分布式专题的第12篇文章,我们继续深入探讨集群资源管理系统的核心原理。本文将重点分析局部优先原则、资源分配细节以及饿死与死锁问题等关键内容。

局部优先的原则

在大数据应用中,局部优先原则是一项核心设计理念:计算任务应尽量执行在存储数据的节点上,而非通过网络远程调用。这背后的逻辑清晰:局部执行可以显著减少网络通信开销,在大规模数据下尤为重要。这种理念可以被总结为“局部性原则”,即越靠近数据节点的任务执行越优。

根据局部性可以划分为三种级别:节点局部性(所有任务在单节点完成)、机架局部性(任务分布在同一机架的节点)以及全局局部性(任务分布在不同机架)。系统设计时需平衡这些因素,以最大化资源利用率并减少网络负担。

资源分配的细节

资源分配看似简单,但实际运用中涉及诸多复杂因素。例如,当新任务到来时,如果资源不足,系统应采取什么策略?等待还是抢占?这种决策直接影响系统性能。另外,不同任务对资源需求差异也需谨慎处理。例如,机器学习任务通常需要一批资源,而Spark等框架则具备资源弹性。这些细节需要精心设计,否则可能导致资源浪费或任务长时间未调度。

饿死与死锁的风险

如果资源分配策略不当,可能导致饿死或死锁。饿死指任务长时间无调度,如因优先级过低而被挤压。死锁则是多个任务相互等待资源,无法继续执行的状态。解决这些问题需要系统设计和团队协作,例如制定任务优先级规则和资源分配策略。此外,调度器架构的选择(集中式、两级式或状态共享式)也直接影响系统性能。

调度器架构对比

集中式调度器

集中式调度器通过单一中央节点管理整个集群资源,简单易维护,但存在明显缺陷:资源分配受限,容易成为性能瓶颈,且需人工干预解决资源冲突问题。多路径集中调度器通过增加条件判断提升灵活性,但整体性能仍不理想。

两级调度器

两级调度器由中央调度器和多个框架调度器组成。中央调度器按粗粒度分配资源,而框架调度器执行细粒度任务分配。YARN和Mesos等工具采用此架构,提升了集群的并发能力和资源利用率。然而,中央调度器使用悲观锁,导致资源加锁开销较大。

状态共享调度器

状态共享调度器取消中央调度器,所有框架调度器可直接访问集群资源,采用乐观锁机制,减少资源竞争开销。然而,任务公平性难以保证,高优先级任务可能抢占资源,导致低优先级任务饿死。这种架构灵活性高,但需权衡公平性和性能。

总结

集群调度系统的优化是一个不断探索的过程。集中式调度器提供公平性,两级调度器提升性能,状态共享调度器实现灵活性。选择哪种架构需结合实际场景,权衡公平性与性能。技术进步不仅仅是系统设计的提升,更是团队协作和制度约定的结果。今天的文章就到此,希望对您有所启发。如有需讨论或建议,欢迎在评论区留言。

转载地址:http://qaqfz.baihongyu.com/

你可能感兴趣的文章
Nutch + solr 这个配合不错哦
查看>>
NuttX 构建系统
查看>>
NutUI:京东风格的轻量级 Vue 组件库
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>
NutzWk 5.1.5 发布,Java 微服务分布式开发框架
查看>>
NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
查看>>
Nuxt Time 使用指南
查看>>
NuxtJS 接口转发详解:Nitro 的用法与注意事项
查看>>
NVelocity标签使用详解
查看>>
NVelocity标签设置缓存的解决方案
查看>>
Nvidia Cudatoolkit 与 Conda Cudatoolkit
查看>>
NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
查看>>
NVIDIA-cuda-cudnn下载地址
查看>>
nvidia-htop 使用教程
查看>>
nvidia-smi 参数详解
查看>>
Nvidia驱动失效,采用官方的方法重装更快
查看>>
nvmw安装node-v4.0.0之后版本的临时解决办法
查看>>
nvm切换node版本
查看>>
nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
查看>>
ny540 奇怪的排序 简单题
查看>>