上面我们编译了源码,然后我们接下来用idea将源码导入到开发工具,并在idea上启动standlone的master和slave,方便我们调试。
然后open as project即可。我看网上很多说,导入了,然后让maven自动导入依赖就行,但是不知道可能是我的网络问题,我遇到了很多问题,这里我分享出来,看是否能对你们有帮助。
1.导入到idea当中,spark-parent当中的pom文件一堆冒红。
明明依赖都下完了,可还是冒红,让强迫症的我很不爽,所以首先就是要解决不冒红,多次点
这个不行后,我就决定,自己动手解决。
首先第一类冒红是找不到
还有的是有的依赖下不下来,这就很奇怪了,为什么下不下来呢,我都编译通过了,然后我就去maven 仓库看下,仓库地址:https://mvnrepository.com/
我举个例子。
比如这个依赖,version版本是2.12.10,那么我就去仓库搜一下这个仓库到底有没有这个依赖的2.12.10版本呢。
发现根本没有,那怎么可能下的下来,只能自己手动改一下版本
类似于这样的就需要自己去排查。
方法就是我上面举的例子那样的,还有的是仓库当中有,但是他就是硬是下不来,这时我建议你手动小改一下版本号,也是同样可以达到效果的。
就是比如
这个,他的版本是2.10,我发现
仓库当中有,但是就是下不下来,所以只能手动改成2.9.8就可以了。很奇怪。。
还有一种情况。
这个jar包根本在仓库中找不到
所以我只能曲线救国,把依赖换成了core
这个样子,后面多加了个core,我想应该没问题吧。。
经过这样对spark-parent中pom的修修补补,最终pom中不报红了,完成了万里长征的第一步。
其实pom中某些依赖爆红,可能会遇到各种各样问题,所以见招拆招吧,灵活解决,我只是提供了一种思路。
2.解决了依赖,我们是不是要启动master了。
右键master,然后点run,然后问题就来啦
第一个问题:
java.lang.ClassNotFoundException: scala.runtime.LazyRef
这是因为你可能修改了pom当中的scala version这个选项
我不是本地安装的是scala 2.11版本的吗,然后我画蛇添足的改了这个,把这个改成了2.11的依赖版本,不能手贱。。改回去,这个最好不要碰,你下下来的spark源码scala.version写的是好多,就是好多,不要改,我以为改个次版本号没关系的,没想到出问题了。感觉scala对版本还是很严格的。
第二个问题:
改好了之后,我从右键RUN,这次出现了个贼诡异的问题。控制台没有任何输出,直接冒出了如下的话。
process finished with exit code 52 或者process finished with exit code 51
这个问题需要打断点定位下。
打个断点,一步一步往下走,你就可以看到异常了,一般是缺少了google的某项依赖,我是缺少了一个叫CacheLoder的依赖。
改这里,打开spark-parent的pom文件。
将provided改为compile(版本号我改是因为觉得之前的自带版本号太老了,改个比较新的试试~),对了,改了后记得从新打包!
第三个问题:
这次我又run了,还是8行,啥问题呢:
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 的解决办法
打开core的pom文件,然后注释掉个东西(xml-apis)
将test注释掉,然后git bash进入到core目录,单独打包core即可!
mvn -DskipTests clean package
第四个问题:
Could not find spark-version-info.properties
这个问题就是你之前吧core执行了mvn clean了,所以你从新打包下core就行啦。
git bash 直接进入到spark-core
mvn -DskipTests clean package
第五个问题:
感觉马上就成功了,出现了这么个问题。
Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
这就很简单啦,下载一个winutils.exe(git上有)
我是把它放到HADOOP_HOME/bin目录下的。
然后添加环境变量,重启电脑。
问题解决。
经过上述的努力,终于可以起来了
启动master
启动worker
端口自己设定,自己对得上就行!
大功告成,standlone模式本机起来啦!
最后我想总结一下,我看了网上许多搭建文档,以及自己搭建了无数次,其实每个人遇到的问题相同但也不同,我也不可能把所有错误列举出来,但是提供了一些方法,希望你们举一反三,遇到错误的时候不要惊慌,一步一步分析,错误终将解决。
授人以鱼不如授人以渔。所以还是要学会思路和解决问题的方法鸭!