YARN 的内存和 CPU 怎么配,真的是个细活儿。配置得好,任务跑得顺;配错了,不是 OOM 就是跑得像蜗牛。我最近翻到一篇挺实用的配置指南,讲得蛮细,尤其适合经常折腾大数据集群的你。
YARN 的资源调度机制里,Container
就是分配的基本单位,既管内存也管 CPU。要搞清楚内存怎么分,得预留一点给系统,不然节点都卡死就尴尬了。文章还列了一张预留内存的对照表,挺贴心。
比如说,你有台 128GiB 内存的机器,得先预留 24GiB 出来。剩下的 104GiB 怎么用?文里给了个公式,照着算就行:containers = min(2 * CORES, 1.8 * DISKS, (RAM-reserved) / MIN_CONTAINER_SIZE)
,有例子,有解释,动手快的直接写个脚本套进去都行。
还有RAM-per-container
怎么配?别一刀切,得看你要跑的作业内存需求。默认值 256MB 一般太小,建议 2GiB 起步。作者还加了个 Python 脚本,帮你自动算这些参数,省心多了。
CPU 那块也别忽略,尤其是Container 数跟核心数
的比例,文里建议两个 Container 配一个 CPU 核心,蛮合理的。磁盘数量也得考虑进来,毕竟 I/O 要是堵了,再多核心也白搭。
,这篇文章思路清晰,公式也靠谱,适合 YARN 调优的新手和老鸟。如果你最近在搭 YARN 集群,或者任务老是 OOM,不妨看看这篇,试着用用文里的公式和脚本,说不定就能问题。