我目前正在尝试在只有4GB内存的虚拟服务器上设置一个小型Hadoop演示系统。我知道,对于Hadoop来说4GB并不是很多 - 但这就是我现在拥有的全部内容。 服务器应该运行HDFS,YARN和Spark(在Yarn上)以及一些与Hadoop无关的其他东西。 所以我的想法是为操作系统和其他东西保留2GB,然后为Hadoop进程留下2GB。 不幸的是,我正在努力寻找适合这种情况的配置。 到目前为止我所拥有的是: 在mapred-site.xml中:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx400m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx400m</value>
</property>
在yarn-site.xml中:
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx400m</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>512</value>
</property>
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx400m</value>
</property>
现在我创建了一个非常基本的Spark应用程序,并且还提供了以下参数:
使用选项--master yarn-client
执行此脚本时一切正常;但是当使用--master yarn-cluster
执行时,作业将永远运行。在纱线工作的日志中,我可以读到:
初次工作没有接受任何资源;检查您的集群UI以确保工作人员已注册并具有足够的资源
对我而言,这听起来似乎没有足够的资源可用!?
现在我的问题:
--master yarn-cluster
?非常感谢和最诚挚的问候!
答案 0 :(得分:0)
如果您在独立本地模式(本地[4]或本地[1])中只有4GB运行火花。你会得到更好的结果。如果您正在运行整个hadoop生态系统(YARN,datanode,YARN节点管理器,Zookeeper等) - 您如何期望为Spark留下任何资源?