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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值