众所周知,默认最小容器大小为1024MB
考虑这个场景:
我已经设置了一个Hadoop群集< 1
- Master& 3
- 的Datanode>在VIRTUAL BOX。
Namenode:master(3GB
RAM)
数据节点:data1(512MB
RAM),
data2(512MB RAM)
,
data3(1GB RAM)
。
输入文件大小:500MB
,复制因子为3
(所有节点都包含所有块)
问题:
1。现在假设我要运行Mapreduce程序,容器是否会在data1,data2上分配? 根据我的结果,Job在所有三个数据节点上创建了容器。
2. 我们有什么方法可以指定在特定节点上运行的作业吗?
答案 0 :(得分:0)
我们有什么方法可以指定在特定节点上运行的作业吗?
你不应该控制它。 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作业