Spark2.0源码阅读环境搭建既开发环境搭建图解
Spark2.0源码阅读环境和Spark开发环境,我们选择使用IDEA社区版,所以下载IDEA社区版;并且使用Java8环境。
1 jdk8安装
下载略
解压到当前目录
tar -xzvf jdk-8u101-linux-x64.tar.gz
…………
查看
移动到相应目录(自己新建的目录)
mv jdk1.8.0_101 /home/hjr/develop/java8
2 IDEA 安装
下载略
解压到当前目录
tar -xzvf ideaIC-2016.2.2.tar.gz
…………..
查看
移动到相应目录
mv idea-IC-162.1628.40 /home/hjr/develop
3 IDEA设置
3.1 Scala插件安装
IDEA最新版界面
打开之后选择设置主题,在选择安装插件,我这里已经安装好了Scala插件,就不再截图了
3.2 Git安装
下载地址
https://git-scm.com/downloads/
选择相应的系统下载(我们是Linux)
我们是Ubuntu16.04,所以我们使用以下命令在线安装:
apt-get install git
我们是hjr用户,没有root权限,所以加上sudo
sudo apt-get install git
查看版本
4 Spark2.0源码下载
我们使用Github上的Spark源码作为源码下载地址:(也可以直接到Spark官网上面去下载,然后Import进来,都是可以的)
Spark官方的Github源码地址
https://github.com/apache/spark
Spark官网下载地址
http://spark.apache.org/downloads.html
4.1 Check out from Version Control–GitHub
设置GitHub登录信息
密码验证
设置Spark源码下载地址:
点击Clone,开始下载Spark源码
漫长的等待(时长由自己的网络决定)。。。。。。
4.2 打开项目
打开项目的时候,IDEA会根据Maven工程的POM文件自动下载所需要的Jar包:
等待。。。。。。
终于jar包下载完成,打开了项目,如下图所示:
4.3 设置项目的JDK
打开File–>Project Structure–>Platform settings–>SDKS选择Java的安装路径即可Apply即可
然后选择Setup JDK,就会自动识别我们刚才设置的的JDK
等待项目Updating……
项目更新完之后效果如下图所示:(没有报错了)
4.4 测试运行examples
有问题:(各种找不到呗)
Error:(45, 66) not found: type SparkFlumeProtocol val transactionTimeout: Int, val backOffInterval: Int) extends SparkFlumeProtocol with Logging { Error:(70, 39) not found: type EventBatch override def getEventBatch(n: Int): EventBatch = { Error:(85, 13) not found: type EventBatch new EventBatch("Spark sink has been stopped!", "", java.util.Collections.emptyList())
这是下载jar包的时候,没有下载完全,再来一次就行,或者再来多次就行了。
View –> Tool Windows –> Maven Projects –>Generate Sources and Update Folders For All Projects(两个箭头首尾相连的那个按钮),然后等待…(这个过程如果你需要关闭idea,随意就行,因为重启idea后它会继续)
(我这里来了两次,终于下载完全了,现在是编译的过程,没有报错了,一大堆Warning…不管咯)
编译成功之后,如下图所示:
运行一个Example实例:
运行LocalPi,又报错了:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Function1 at org.apache.spark.examples.LocalPi.main(LocalPi.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) Caused by: java.lang.ClassNotFoundException: scala.Function1 at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 6 more Process finished with exit code 1
错误原因分析:Scala 的版本与 Spark2.0所使用的Scala版本不匹配
这里Spark2.0默认使用的是Scala2.11.8,所以我们也得将我们的Scala调整为Scala2.11.8
IDEA安装的Scala插件里所对应的Scala版本不是2.11.8,具体是哪个版本我们得查看一下。
更多Spark相关教程见以下内容:
Spark 的详细介绍:请点这里
Spark 的下载地址:请点这里