背景
大数据平台常见的是使用hadoop集群为基础进行搭建,当然大厂商比如阿里、腾讯也会进行自建,但是中小企业更多使用的还是hadoop平台居多,当然还有目前已经相对稳定的spark。这种大规模计算集群虽然计算能力强大,但是并发存在很大的问题。因为其担负的计算任务一般对计算能力的要求也会很大,在有多个任务并发时会产生资源争抢。尤其是Impala系统,在多个任务并发并且所需要内存总量超过系统总量时还会造成任务的全部失败。所以基于大数据平台的系统开发模型和常规的高并发模型有着差异。
方案
方案1:串行队列
将所有任务全部排队,按照请求顺序以及优先级进入集群进行计算。
优势:
能良好解决任务失败的问题。
劣势:
没有并发,处理能力大幅度下降,可计算任务数和平均计算时间有关,比较浪费资源。
方案2:任务分类计算
对任务的计算资源占用量进行估算,挑选任务继续并发计算,大型任务则是用专属集群采用串行队列计算。时刻监控并发集群的资源用量,可以留空额,不能用尽。
优势:
提高并发量,保证任务不会因为资源用尽失败。
劣势:
集群的投入会增大,有一部分资源的浪费。
集群运维
- 计算节点虚拟化,便于升级与计算能力调整
- 节点职责单一化,便于节点替换与切换
- 服务端口路由屏蔽,不让客户端直连服务器,提高集群的高可用