二、用IDEA導入spark源碼,並在本地運行standlone

上面我們編譯了源碼,然後我們接下來用idea將源碼導入到開發工具,並在idea上啓動standlone的master和slave,方便我們調試。

1將項目導入到idea當中

在這裏插入圖片描述然後open as project即可。我看網上很多說,導入了,然後讓maven自動導入依賴就行,但是不知道可能是我的網絡問題,我遇到了很多問題,這裏我分享出來,看是否能對你們有幫助。

2遇到的問題

1.導入到idea當中,spark-parent當中的pom文件一堆冒紅。
在這裏插入圖片描述
明明依賴都下完了,可還是冒紅,讓強迫症的我很不爽,所以首先就是要解決不冒紅,多次點
在這裏插入圖片描述

這個不行後,我就決定,自己動手解決。

首先第一類冒紅是找不到<spark.test.home>${spark.test.home}</spark.test.home>等這些測試的目錄,像這些的我基本都註釋掉了,然後自然而然也不會冒紅了。

還有的是有的依賴下不下來,這就很奇怪了,爲什麼下不下來呢,我都編譯通過了,然後我就去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目錄下的。
在這裏插入圖片描述然後添加環境變量,重啓電腦。
在這裏插入圖片描述問題解決。

3總結

經過上述的努力,終於可以起來了
啓動master
在這裏插入圖片描述啓動worker
在這裏插入圖片描述端口自己設定,自己對得上就行!
在這裏插入圖片描述大功告成,standlone模式本機起來啦!

最後我想總結一下,我看了網上許多搭建文檔,以及自己搭建了無數次,其實每個人遇到的問題相同但也不同,我也不可能把所有錯誤列舉出來,但是提供了一些方法,希望你們舉一反三,遇到錯誤的時候不要驚慌,一步一步分析,錯誤終將解決。

授人以魚不如授人以漁。所以還是要學會思路和解決問題的方法鴨!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章