二、用IDEA导入spark源码,并在本地运行standlone

上面我们编译了源码,然后我们接下来用idea将源码导入到开发工具,并在idea上启动standlone的master和slave,方便我们调试。

1将项目导入到idea当中

二、用IDEA导入spark源码,并在本地运行standlone_第1张图片然后open as project即可。我看网上很多说,导入了,然后让maven自动导入依赖就行,但是不知道可能是我的网络问题,我遇到了很多问题,这里我分享出来,看是否能对你们有帮助。

2遇到的问题

1.导入到idea当中,spark-parent当中的pom文件一堆冒红。
二、用IDEA导入spark源码,并在本地运行standlone_第2张图片
明明依赖都下完了,可还是冒红,让强迫症的我很不爽,所以首先就是要解决不冒红,多次点
二、用IDEA导入spark源码,并在本地运行standlone_第3张图片

这个不行后,我就决定,自己动手解决。

首先第一类冒红是找不到${spark.test.home}等这些测试的目录,像这些的我基本都注释掉了,然后自然而然也不会冒红了。

还有的是有的依赖下不下来,这就很奇怪了,为什么下不下来呢,我都编译通过了,然后我就去maven 仓库看下,仓库地址:https://mvnrepository.com/
我举个例子。
二、用IDEA导入spark源码,并在本地运行standlone_第4张图片

比如这个依赖,version版本是2.12.10,那么我就去仓库搜一下这个仓库到底有没有这个依赖的2.12.10版本呢。
二、用IDEA导入spark源码,并在本地运行standlone_第5张图片
发现根本没有,那怎么可能下的下来,只能自己手动改一下版本
二、用IDEA导入spark源码,并在本地运行standlone_第6张图片

类似于这样的就需要自己去排查。
方法就是我上面举的例子那样的,还有的是仓库当中有,但是他就是硬是下不来,这时我建议你手动小改一下版本号,也是同样可以达到效果的。

就是比如
二、用IDEA导入spark源码,并在本地运行standlone_第7张图片
这个,他的版本是2.10,我发现
二、用IDEA导入spark源码,并在本地运行standlone_第8张图片
仓库当中有,但是就是下不下来,所以只能手动改成2.9.8就可以了。很奇怪。。

还有一种情况。
二、用IDEA导入spark源码,并在本地运行standlone_第9张图片
这个jar包根本在仓库中找不到
二、用IDEA导入spark源码,并在本地运行standlone_第10张图片
所以我只能曲线救国,把依赖换成了core
二、用IDEA导入spark源码,并在本地运行standlone_第11张图片
这个样子,后面多加了个core,我想应该没问题吧。。

经过这样对spark-parent中pom的修修补补,最终pom中不报红了,完成了万里长征的第一步。

其实pom中某些依赖爆红,可能会遇到各种各样问题,所以见招拆招吧,灵活解决,我只是提供了一种思路。

2.解决了依赖,我们是不是要启动master了。
二、用IDEA导入spark源码,并在本地运行standlone_第12张图片
右键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
这个问题需要打断点定位下。

二、用IDEA导入spark源码,并在本地运行standlone_第13张图片打个断点,一步一步往下走,你就可以看到异常了,一般是缺少了google的某项依赖,我是缺少了一个叫CacheLoder的依赖。

改这里,打开spark-parent的pom文件。

二、用IDEA导入spark源码,并在本地运行standlone_第14张图片

将provided改为compile(版本号我改是因为觉得之前的自带版本号太老了,改个比较新的试试~),对了,改了后记得从新打包!

第三个问题:
这次我又run了,还是8行,啥问题呢:
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 的解决办法

二、用IDEA导入spark源码,并在本地运行standlone_第15张图片打开core的pom文件,然后注释掉个东西(xml-apis)
二、用IDEA导入spark源码,并在本地运行standlone_第16张图片将test注释掉,然后git bash进入到core目录,单独打包core即可!
二、用IDEA导入spark源码,并在本地运行standlone_第17张图片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目录下的。
二、用IDEA导入spark源码,并在本地运行standlone_第18张图片然后添加环境变量,重启电脑。
二、用IDEA导入spark源码,并在本地运行standlone_第19张图片问题解决。

3总结

经过上述的努力,终于可以起来了
启动master
二、用IDEA导入spark源码,并在本地运行standlone_第20张图片启动worker
二、用IDEA导入spark源码,并在本地运行standlone_第21张图片端口自己设定,自己对得上就行!
二、用IDEA导入spark源码,并在本地运行standlone_第22张图片大功告成,standlone模式本机起来啦!

最后我想总结一下,我看了网上许多搭建文档,以及自己搭建了无数次,其实每个人遇到的问题相同但也不同,我也不可能把所有错误列举出来,但是提供了一些方法,希望你们举一反三,遇到错误的时候不要惊慌,一步一步分析,错误终将解决。

授人以鱼不如授人以渔。所以还是要学会思路和解决问题的方法鸭!

你可能感兴趣的:(spark,spark)