我们知道,默认的最小容器大小是 1024MB
考虑以下情况:
我已经安装了一个hadoop集群< 1
-母版和 3
-虚拟盒中的datanodes>。
名称节点:主节点( 3GB
公羊)
数据节点:数据1( 512MB
ram), data2(512MB RAM)
, data3(1GB RAM)
.
输入文件大小: 500MB
带复制因子 3
(具有所有块的所有节点)
问题:
1现在假设我想运行一个mapreduce程序,容器会在data1和data2上分配吗?
根据我的结果,job在所有三个datanode上创建了容器。
2有没有办法指定一个作业在特定节点上运行?
1条答案
按热度按时间ttp71kqs1#
有没有办法指定一个作业在特定节点上运行?
你不需要控制这个。hadoop将容器发送到块所在的datanode,因此您应该询问如何控制块的放置位置,我也不知道您为什么要这样做。
yarn有一个叫做“节点标签”的东西,它可以将特定的节点分配给特定的调度程序队列,然后告诉mapreduce/tez/spark作业在哪个队列中运行,从而使用哪个节点。
https://hadoop.apache.org/docs/r2.7.4/hadoop-yarn/hadoop-yarn-site/nodelabel.html
假设我想运行一个mapreduce程序,容器会在data1和data2上分配吗?
如果存在块,并且在datanode上运行的节点管理器至少有一个容器的足够内存,那么是的。
没有nodemanager和resourcemanager,就不会运行mapreduce作业