spark on yarn-client 奇怪问题

运行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://[email protected]: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 中 改了这个 就成功了。


  yarn.nodemanager.vmem-check-enabled
  false





(  如何保存 history 日志,在

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



    mapreduce.jobhistory.address
    hadoop2:10020
 

 
    mapreduce.jobhistory.webapp.address
    hadoop2:19888
 




通过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 就出错, 说明的确是 环境有问题。  如果环境 无问题后,再检查自己的 逻辑代码。





你可能感兴趣的:(spark on yarn-client 奇怪问题)