您的位置:首页 > 其它

spark on yarn-client 奇怪问题

2016-05-06 20:25 579 查看
运行spark 程序 以 yarn-client 就报错, 以 yarn-cluster 就不报错。

报错如下:

16/05/06 16:46:24 WARN cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: ApplicationMaster has disassociated: 10.60.104.147:37086

16/05/06 16:46:24 WARN remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkYarnAM@10.60.104.147:37086] has failed, address is now gated for [5000] ms. Reason: [Disassociated]

16/05/06 16:46:24 WARN cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: ApplicationMaster has disassociated: 10.60.104.147:37086

16/05/06 16:46:46 INFO cluster.YarnClientSchedulerBackend: SchedulerBackend is ready for scheduling beginning after waiting maxRegisteredResourcesWaitingTime: 30000(ms)

Exception in thread "main" java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext

    at org.apache.spark.SparkContext.org$apache$spark$SparkContext$$assertNotStopped(SparkContext.scala:103)

    at org.apache.spark.SparkContext$$anonfun$parallelize$1.apply(SparkContext.scala:715)

    at org.apache.spark.SparkContext$$anonfun$parallelize$1.apply(SparkContext.scala:714)

看不到 明显原因,只是说 sparkContext stop了。 在 localhost:8088 yarn 上看  spark的 运行的 具体 history 日志,发现是 :

is running beyond virtual memory limits.

超过 虚拟内存限制。

google 大法: + stackoverflow 大法,    英文搜

I solved the issue by setting yarn.nodemanager.vmem-check-enabled to false in yarn-site.xml,    

 在 yarn-site.xml 中 改了这个 就成功了。

<property>

  <name>yarn.nodemanager.vmem-check-enabled</name>

  <value>false</value>

</property>

(  如何保存 history 日志,在

mapred-site.xml 中 增加以下配置:

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop2:10020</value>

  </property>

  <property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop2:19888</value>

  </property>

通过web浏览器查看 hdfs上 数据:  http://localhost:50070/
)

总结: 当运行自己的程序出错时, 先 排查是否是 环境问题:

那么就运行 spark官方的 示例程序:
http://spark.apache.org/docs/latest/running-on-yarn.html
结果运行如下 不报错:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
lib/spark-examples*.jar \
10


将deploy-mode 改成 client 就出错, 说明的确是 环境有问题。  如果环境 无问题后,再检查自己的 逻辑代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: