我有一个集群,其中有1个主节点和4个从节点。这是我的配置:
nodemanager
yarn.nodemanager.resource.memory-mb
= 13.5G 容器
yarn.scheduler.minimum-allocation-mb
= 32M yarn.scheduler.maximum-allocation-mb
= 13.5G mapreduce:
mapreduce.map.memory.mb
= 1696M mapreduce.map.java.opts
= -Xmx1356m mapreduce.reduce.memory.mb
= 3392M mapreduce.reduce.java.opts
= -Xmx2713m 我运行一个简单的配置单元查询:
select count(1) from my_table;
我得到189个映射器和1个减少器。
192个容器。
以我的理解,containers = sum(mappers,reduces,appmaster),但是mappers + reducers = 190,2个appmasters?
另一个问题是,我的表在HDFS中有比189大得多的许多文件。据我了解,输入文件=映射器,但不是。所以我想文件在输入之前就已经合并了。如何获得输入文件的大小?
我找到一个设置:
mapred.max.split.size=256000000
但189 * 256MB!= 52GB(HDFS中的表大小)。实际上,我设置了mapred.max.split.size = 2048000000,并且映射器的数量更改为27。我想知道它是如何工作的。
最后一个问题是,我想知道这种形式的含义:
我希望你能理解我说的话。非常感谢你!