2021-05-12 14:32:11
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相關教學見以下內容:
CentOS 7.0下安裝並設定Spark http://www.linuxidc.com/Linux/2015-08/122284.htm
Spark1.0.0部署指南 http://www.linuxidc.com/Linux/2014-07/104304.htm
Spark2.0安裝設定文件 http://www.linuxidc.com/Linux/2016-09/135352.htm
Spark 1.5、Hadoop 2.7 叢集環境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
Spark官方文件 - 中文翻譯 http://www.linuxidc.com/Linux/2016-04/130621.htm
CentOS 6.2(64位元)下安裝Spark0.8.0詳細記錄 http://www.linuxidc.com/Linux/2014-06/102583.htm
Spark2.0.2 Hadoop2.6.4全分散式設定詳解 http://www.linuxidc.com/Linux/2016-11/137367.htm
Ubuntu 14.04 LTS 安裝 Spark 1.6.0 (偽分散式) http://www.linuxidc.com/Linux/2016-03/129068.htm
相關文章