我正在为一个项目评估 YARN。我正在尝试让简单的分布式 shell 示例工作。我已将申请提交到提交阶段,但它从未开始。这是从这一行报告的信息:
ApplicationReport report = yarnClient.getApplicationReport(appId);
应用程序已添加到调度程序,但尚未激活。跳过 AM 分配,因为集群资源为空。详细信息:AM 分区 = DEFAULT_PARTITION; AM 资源请求 = 内存:1024,vCores:1; AM 的队列资源限制 = 内存:0,vCores:0;队列的用户AM资源限制=内存:0,vCores:0;队列 AM 资源使用 = memory:128, vCores:1;
其他开发人员的解决方案似乎必须增加 yarn-site.xml 文件中 yarn.scheduler.capacity.maximum-am-resource-percent
的默认值 。 1。我尝试了 .2 和 .5 的值,但似乎没有帮助。
最佳答案
看起来您没有以正确的方式配置分配给 Yarn 的 RAM。如果您尝试根据自己的安装从教程中推断/改编,这可能是 ..... 中的一个引脚。我强烈建议您使用 this one 等工具:
wget http://public-repo-1.hortonworks.com/HDP/tools/2.6.0.3/hdp_manual_install_rpm_helper_files-2.6.0.3.8.tar.gz
tar zxvf hdp_manual_install_rpm_helper_files-2.6.0.3.8.tar.gz
rm hdp_manual_install_rpm_helper_files-2.6.0.3.8.tar.gz
mv hdp_manual_install_rpm_helper_files-2.6.0.3.8/ hdp_conf_files
python hdp_conf_files/scripts/yarn-utils.py -c 4 -m 8 -d 1 false
-c
每个节点的核心数-m
每个节点的内存量 (Giga)-d
每个节点的磁盘数量-bool
如果安装了 HBase,则为“True”;如果不是,则为“假”
这应该给你这样的东西:
Using cores=4 memory=8GB disks=1 hbase=True
Profile: cores=4 memory=5120MB reserved=3GB usableMem=5GB disks=1
Num Container=3
Container Ram=1536MB
Used Ram=4GB
Unused Ram=3GB
yarn.scheduler.minimum-allocation-mb=1536
yarn.scheduler.maximum-allocation-mb=4608
yarn.nodemanager.resource.memory-mb=4608
mapreduce.map.memory.mb=1536
mapreduce.map.java.opts=-Xmx1228m
mapreduce.reduce.memory.mb=3072
mapreduce.reduce.java.opts=-Xmx2457m
yarn.app.mapreduce.am.resource.mb=3072
yarn.app.mapreduce.am.command-opts=-Xmx2457m
mapreduce.task.io.sort.mb=614
相应地编辑您的yarn-site.xml
和 mapred-site.xml
。
nano ~/hadoop/etc/hadoop/yarn-site.xml
nano ~/hadoop/etc/hadoop/mapred-site.xml
此外,你应该在你的 yarn-site.xml
中有这个
<property>
<name>yarn.acl.enable</name>
<value>0</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>name_of_your_master_node</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
这在你的 mapred-site.xml
中:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
然后,使用 scp
将您的 conf 文件上传到每个节点(如果您将 ssh key 上传到每个节点)
for node in node1 node2 node3; do scp ~/hadoop/etc/hadoop/* $node:/home/hadoop/hadoop/etc/hadoop/; done
然后,重启yarn
stop-yarn.sh
start-yarn.sh
并检查您是否可以看到您的节点:
hadoop@master-node:~$ yarn node -list
18/06/01 12:51:33 INFO client.RMProxy: Connecting to ResourceManager at master-node/192.168.0.37:8032
Total Nodes:3
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
node3:34683 RUNNING node3:8042 0
node2:36467 RUNNING node2:8042 0
node1:38317 RUNNING node1:8042 0
这可能会解决问题(祝你好运)( additional info )
关于HADOOP YARN - 应用程序已添加到调度程序,但尚未激活。跳过 AM 分配,因为集群资源为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579156/