写在前面

本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

解答

1. Job需要的资源和需要处理的数据量、过程的复杂度强相关,而这两者在实际的生产系统中都不是一成不变的,所以往往预留的资源要么过大、要么过小
2. 单个Job本身也是一个复杂的过程,需要的资源也不是一成不变的,所以按理想的状态预留资源往往不现实,带来的最终结果是资源利用率不高。

补充

Quasar

Stanford的一篇论文《Quasar:Resource-Efficient and QoS-Aware Cluster Management》,通过简单的分类算法就达到了Job资源的预测和自动分配,解决了上面提到的两个资源分配难题。

Quasar的基本思路如下:

Quasar不是基于资源预留和匹配的模式。

Quasar提供一个高层次的接口让用户为调度器描述其性能约束条件。不同类型的workload,接口也不一样。

比如,对于延迟苛刻的workload,限制条件为QPS(查询次数秒);分布式框架,如Hadoop,限制条件是执行时间;对于单机里面的单线程或者多线程workload,限制条件为低层次的IPS(每秒执行的指令数)。

Quasar使用快速分类技术评估不同的资源分配导致的不同 workload性能。

一个新进的workload和数据集,需要从一些 Server上采集一段时间(从几秒到几分钟)这些有限的采集信息和已有的被分类离线的 workload、已经被调度过的 workload组合起来。

分类的结果准确地估计了应用的性能,考虑各种不同类型和数量的服务器及单服务的资源量,排除了其他一些干扰。

Quasar将workload资源分配问题简化成4种主要资源的分配,分配的服务器类型和干扰的程度。这大大降低了分类的复杂性问题。

Quasar将分类的结果直接用于资源的分配,消除了分配和匹配的二次无效性。

Quasar使用贪心算法结合4个主要资源的分类结果,综合选择数量或具体的资源集,来尽量满足业务提出的性能要求。

Quasar同时监视系统性能。如果在有空闲资源的情况下约束没有得到满足,即使 workload 发生了变化(如Job内部阶段发生了变化),则说明分类是不正确的,或者使用贪婪算法的次优解。

因此,只要条件允许, Quasar会重新分配资源。

Q.E.D.


Apache Spark Contributor