CHD Spark1.6升級爲Spark2.1安裝步驟

Caused by: java.lang.AbstractMethodError: spark.WordCount$1.call(Ljava/lang/Object;)Ljava/lang/Iterable;

Spark編譯版本與運行環境的版本不一致導致


                                                          CHDspark1.6升級2.1

1、下載csd安裝包(注意版本及校驗文件一致)

http://archive.cloudera.com/spark2/csd/




2、下載parcels包

http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/



3、開始安裝,集羣可以停也可以不停

上傳csd包到集羣所有機器的/opt/cloudera/csd下,如果沒有,就新建;如果有其他安裝包,可以刪掉

# cd /opt/cloudera/csd         #目錄下修改文件權限

# chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.1.0.cloudera2.jar

# chmod 644 SPARK2_ON_YARN-2.1.0.cloudera2.jar



4、上傳parcel包到主節點機器(master)的/opt/cloudera/parcel-repo下,該目錄下的其他安裝包不可刪除!一般都會有manifest.json,把它改名備份即可。用剛下載的替代,然後SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha1一定記得改爲SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658-el7.parcel.sha



5、在主節點執行重啓命令

# service cloudera-scm-agent restart

# service cloudera-scm-server restart


6、CM主節點啓動後,點擊主機->Parcel頁面,就會有spark2的選項。選擇後點擊分配,等待分配完成後激活




7、如果報一下配置問題,是Jdk版本與快捷方式,這裏簡要說明記錄一下




8、添加spark2服務



此時再看,就會顯示2.1.0





======================啓動配置分割線================================

                                                  Spark2的啓動問題:



此時可能啓動會有問題,需要配置相應的環境變量以及依賴關係,大家通過spark2-env.sh文件也能看到依賴的classpath文件的jar包。

# cd /etc/spark2/conf.cloudera.spark2_on_yarn    把classpath文件複製

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 目錄下

# cp /etc/spark2/conf.cloudera.spark2_on_yarn/classpath.txt /opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist



然後通過spark2-shell啓動




再次執行提交的jar包,



至此,CDH spark1.6 升級爲spark2.1 成功!


====================華麗的補充,spark操作數據庫時的依賴包問題=============

Exception in thread "main" java.sql.SQLException: No suitabledriver




方法1:     修改spark-env.sh 配置環境變量的jar包路徑,根據實際數據庫配,我這裏是oracle的

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/java/ojdbc7.jar


此時再次執行時就可以看到(可以順利運行,警告信息是說過時方式)




方法2:     上面記得應該是把路徑配置文件複製到

/opt/cloudera/parcels/SPARK2-2.1.0.cloudera2-1.cdh5.7.0.p0.171658/etc/spark2/conf.dist 下的

裏面的classpath.txt配置的文件,看加載的信息我們也知道會加載裏面的jar包,在裏面配置也可以(需要注意的是默認路徑,不要隨便放。在classpath.txt裏面有的路徑下放置)

把需要的jar包複製到/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ 目錄下並修改 classpath.txt文件

/opt/cloudera/parcels/CDH-5.8.2-1.cdh5.8.2.p0.3/jars/ojdbc7.jar


在末尾加上jar包路徑即可

這時候執行也沒有警告信息。如果大家仔細看加載的類包就可以看到我們的驅動加進來了的



方法3:    最後一個,就是大傢什麼配置都沒有改,那只有改shell腳本了



這樣配置執行也是沒有警告信息的。



注意:沒事做也不要都設置,2和3同時配置沒問題,但是1和3同時配置就會報錯Found bothspark.driver.extraClassPath and SPARK_CLASSPATH. Use only the former.。這裏也可以看出1的方式是過時的了。




最後,如果spark提交運行的方式是整改集羣,當然jar也要分發到集羣的每一臺機器




好了,關於CDH spark1.6升級爲spark2.1,以及spark2.1的一些配置和依賴包的添加配置都說完了。正式開啓spark2.1的應用吧大笑









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