上面我們編譯了源碼,然後我們接下來用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模式本機起來啦!
最後我想總結一下,我看了網上許多搭建文檔,以及自己搭建了無數次,其實每個人遇到的問題相同但也不同,我也不可能把所有錯誤列舉出來,但是提供了一些方法,希望你們舉一反三,遇到錯誤的時候不要驚慌,一步一步分析,錯誤終將解決。
授人以魚不如授人以漁。所以還是要學會思路和解決問題的方法鴨!