在评估大规模 YARN 集群性能时,可以从多个方面进行考量。
首先,定义宏观的性能指标是关键。比如可以观察业务指标中的有效调度情况,以及系统性能指标中的每秒调度 Container 数。
从资源角度来看,对于 CPU 资源调度,YARN 将 CPU 划分为虚拟 CPU,配置参数如 yarn.nodemanager.resource.cpu-vcores 表示该节点服务器上 YARN 可以使用的虚拟的 CPU 个数,默认是 8,推荐配置与核心个数相同,若节点 CPU 核心个数不足 8 个需调小此值,YARN 不会智能检测物理核数,机器性能较好时可配置为物理核数的 2 倍。yarn.scheduler.minimum-allocation-vcores 表示单个任务最小可以申请的虚拟核心数,默认为 1;yarn.sheduler.maximum-allocation-vcores 表示单个任务最大可以申请的虚拟核数,默认为 4,超过此配置会抛出 InvalidResourceRequestException。对于 Memory 资源调度,一般允许用户配置每个节点上可用的物理资源,yarn.nodemanager.resource.memory-mb 设置该节点上 YARN 可使用的内存,默认为 8G,若节点内存不足 8G 要减少这个值,YARN 同样不会智能检测内存资源。
在应用层面,可以定义单个 App 的分配时间是其下所有 Container 分配时间的总和,单个 Container 的分配时间为从发出申请该 Container 到 App 实际拿到该 Container 之间的时间差,优化目标是 App 分配时长占运行时长的比例越小越好。
从集群层面判断调度系统是否成为瓶颈也是重要的评估方式。此外,还可以通过一些工具进行性能优化,如高效的压力测试工具。例如线上业务压测要做到 5 个一样,即一样的线上环境、用户规模、业务场景、业务量级和流量来源,以精准衡量业务承接能力。对于全新生产环境,可以将真实的生产环境数据进行脱敏导入,确保业务数据量维持在半年以上并保证数据关联完整性,基于这些基础数据进行核心业务的流量构建。对于等比性能环境,一般在生产环境单独划分区域,准备等比的容量,共享接入层的性能测试环境