1、Initial job has not accepted any resources
16/08/13 17:05:42 INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
16/08/13 17:05:57 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
这个信息就是告诉我们,初始化的作业不能接受到任何资源,spark只会寻找两件资源:Cores和Memory。所以,出现这个信息,肯定是这两种资源不够,我们可以打开Spark UI界面看看情况:
从图中可以发现,cores已经被用完了,也就是有其他任务正在占用这些资源,也或者是spark-shell,所以,才会出现上述警告信息。
参考:
http://www.datastax.com/dev/blog/common-spark-troubleshooting
2、Exception in thread “main” java.lang.ClassNotFoundException
Exception in thread "main" java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.util.Utils$.classForName(Utils.scala:174)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:56)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
当我们在提交spark-submit的时候,经常会遇到这个异常,但导致这个异常的原因真的很多,比如,在你的JAR包中,真的没有这个类,这个异常与其他找不到类的异常有个区别,区别在于,这里找不到类,是找不到主类,而不是找不到其他引用的类,如果找不到其他引用的类的话,很可能是类路径有问题,或没引入相应的类库,这里是没有找到主类,当时我也很奇怪,同样在一个JAR里,为什么有的主类可以找到,有些主类无法找到,后面发现当我用package把那个主类放在某个包下面时,这个主类就无法找到了,然后把这个主类放到源代码的根目录下,就能找到,所以,主类找不到的解决方法可以试试把主类放到源代码的根目录下,至少,我的情况是这样的,然后成功解决了,毕竟,每个人遇到的情况不一样,所以,good luck to you!
解决方法:
把主类放到源代码的根目录,即src下。