CDH5.13.0版本叢集安裝更新spark2部署及問題彙總(史上最全,無坑)

海邊撿貝殼的老頭發表於2020-12-23

一、簡介:
在我的CDH5.13.0叢集中,預設安裝的spark是1.6版本,這裡需要將其升級為spark2.x版本。
經查閱官方文件,發現spark1.6和2.x是可以並行安裝的,也就是說可以不用刪除預設的1.6版本,
可以直接安裝2.x版本,它們各自用的埠也是不一樣的。這裡做一下安裝spark2.1版本的步驟記錄。

二、安裝準備
csd包:http://archive.cloudera.com/spark2/csd/
SPARK2_ON_YARN-2.2.0.cloudera2.jar

parcel包:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera2/
SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957-el7.parcel
SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957-el7.parcel.sha1
manifest.json
注意,下載對應版本的包,比如:CentOS7系統,下載el7的包,若是CentOS6,就要下el6的包。

特別注意,如果你安裝spark2.1,按照上面下載就是了,注意一下作業系統的版本;如果你不打算安裝spark2.1,想安裝其他版本,比如2.0,那麼一定要注意下面的事項:
如果你仔細瀏覽過這些路徑,會發現下圖中,csd和parcel包會有.clouderal1和.clouderal2之分,和2.0與2.1版本之分,那麼在下載parcel時也要注意,下載對應的包。即如果下載到的是.clouderal1的csd包,下載parcel包也要下載檔名中是.clouderal1的包,不能下載.clouderal2的包,同時csd2.0的包也不能用於parcel2.1的包,不然很可能安不上

三、開始安裝
1.安裝前可以停掉叢集和Cloudera Management Service(可以不用停掉)

2.下面的操作在每個CDH節點都要進行。
3.上傳CSD包到機器的/opt/cloudera/csd目錄,
並且修改檔案的使用者和組。注意如果本目錄下有其他的jar包,把刪掉或者移到其他目錄
chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.1.0.cloudera3.jar3

4.上傳parcel包到機器的/opt/cloudera/parcel-repo目錄下。

注意。如果有其他的安裝包,不用刪除 。但是如果本目錄下有其他的重名檔案比如manifest.json檔案,把它重新命名備份掉。然後把那3個parcel包的檔案放在這裡。

SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957-el7.parcel.sha1
更名為:
SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957-el7.parcel.sha

其中,SPARK2-2.2.0.cloudera2-1.cdh5.12.0.p0.232957-el7.parcel.torrent是CDH分配時候自動生成的

5.如果剛剛沒有停掉CM和叢集,現在將他們停掉。然後執行命令。
備註: 我啟動了server,沒有啟動agent,網上有說法是server和agent全部啟動
主節點
/opt/cloudera/cm-5.13.0/etc/init.d/cloudera-scm-server restart

所有節點
/opt/cloudera/cm-5.13.0/etc/init.d/cloudera-scm-agent restart

6.把CM和叢集啟動起來。然後點選主機->Parcel頁面,看是否多了個spark2的選項。如下圖,你這裡此時應該是分配按鈕,點選,等待操作完成後,點選啟用按鈕

7.啟用後,點選你的群集-》新增服務,新增spark2服務。注意,如果你這裡看不到spark2服務,就請檢查你的CSD包和parcel包是否對應,上面的步驟是否有漏掉。正常情況下,應該是能用了。

問題彙總********
1.安裝完畢後需要拷貝檔案
#拷貝檔案
cp /opt/cloudera/parcels/CDH/etc/spark/conf.dist/* /opt/cloudera/parcels/SPARK2/etc/spark2/conf.dist/
#配置spark-env.sh檔案
vim /opt/cloudera/parcels/SPARK2/etc/spark2/conf.dist/spark-env.sh
#新增如下內容
export SPARK_DIST_CLASSPATH=$(hadoop classpath) //指定hadoop class檔案目錄
export HADOOP_CONF_DIR=/etc/hadoop/conf //指定hadoop配置檔案目錄
2.不用配置環境變數(否則配置不好的話 自己找罪受),CDH5.13叢集環境自帶spark1.6版本,如果要配置spark2環境變數的話,
可以設定(設定後只有2.2.0版本), 也可以不設定(spark-shell,spark1-shell),這樣配置
vim /etc/profile
#新增如下內容

export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2
export PATH= S P A R K H O M E / b i n : SPARK_HOME/bin: SPARKHOME/bin:PATH

#export HADOOP_CONF_DIR=/etc/hadoop_conf #這裡千萬不要配置,否則會報錯(Retrying connect to server: 0.0.0.0/0.0.0.0:8032 ;org.apache.spark.SparkException: Yarn application already ended,might be killed or not able to launch application master.
),


這是個大坑,我折騰了將近一天才排查出來,現在都凌晨了,睡覺了,大家謹記!!!!!!


相關文章