環境介紹:
在我的CDH5.11.1的叢集中,預設已經安裝的spark是1.6版本,這裡需要将其更新為spark2.1版本。經查閱官方文檔,發現spark1.6和2.x是可以并行安裝的,也就是說可以不用删除預設的1.6版本,可以直接安裝2.x版本,它們各自用的端口也是不一樣的。我嘗試了安裝spark2.0版本和spark2.1版本,均告成功。這裡做一下安裝spark2.1版本的步驟記錄。
官網釋出
Cloudera釋出Apache Spark 2概述(可以在這裡面找到安裝方法和parcel包的倉庫,不過待會我會給出位址和安裝方法):https://www.cloudera.com/documentation/spark2/latest/topics/spark2_installing.html
Cloudera Manager及5.11版本的介紹:
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_parcels.html#cmug_topic_7_11_5__section_sd4_bzx_bm
一、安裝準備
所需軟體
①csd包:http://archive.cloudera.com/spark2/csd/
下載下傳版本如下:
②parcel包:http://archive.cloudera.com/spark2/parcels/2.1.0.cloudera1/
注意: SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el7.parcel.sha1 下載下傳下來之後将字尾改為.sha
說明:
下載下傳對應版本的包,我的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的包,不然很可能安不上
csd包所在的目錄:
parcel包所在的目錄
二、開始安裝
1.安裝前可以停掉叢集和Cloudera Management Service,也可以不停,但是待會還是要停止重新開機的。
2.下面的操作在Cloudera Manager Server節點進行。
3.上傳CSD包到機器的/opt/cloudera/csd目錄,并且修改檔案的使用者群組。注意如果本目錄下有其他的jar包,把删掉或者移到其他目錄
[root@server cloudera]# cd csd/
[root@server csd]# ll
總用量
-rw-r--r-- root root 月 09: SPARK2_ON_YARN-..cloudera1.jar
[root@server csd]# chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.1.0.cloudera1.jar
[root@server csd]# ll
總用量
-rw-r--r-- cloudera-scm cloudera-scm 月 09: SPARK2_ON_YARN-..cloudera1.jar
[root@server csd]# chmod 644 SPARK2_ON_YARN-2.1.0.cloudera1.jar
[root@server csd]# ll
總用量
-rw-r--r-- cloudera-scm cloudera-scm 月 09: SPARK2_ON_YARN-..cloudera1.jar
4.上傳parcel包到機器的/opt/cloudera/parcel-repo目錄下。注意,。如果有其他的安裝包,不用删除 ,但是如果本目錄下有其他的重名檔案比如manifest.json檔案,把它重命名備份掉。然後把那3個parcel包的檔案放在這裡。
[[email protected] cloudera]# cd parcel-repo
[[email protected] parcel-repo]# ll
總用量
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel.sha
-rw-r----- cloudera-scm cloudera-scm 月 : CDH--cdh5.p0-el7.parcel.torrent
-rw-r--r-- root root 月 manifest.json
[[email protected] parcel-repo]# mv manifest.json manifest.json.bak
[[email protected] parcel-repo]# ll
總用量
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel.sha
-rw-r----- cloudera-scm cloudera-scm 月 : CDH--cdh5.p0-el7.parcel.torrent
-rw-r--r-- root root 月 manifest.json.bak
上傳剛剛下載下傳的spark包在本目錄下:
[[email protected] parcel-repo]# ll
總用量
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel.sha
-rw-r----- cloudera-scm cloudera-scm 月 : CDH--cdh5.p0-el7.parcel.torrent
-rw-r--r-- root root 月 manifest.json.bak
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel.filepart
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel.sha1
[[email protected] parcel-repo]#
[[email protected] parcel-repo]# ll
總用量
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel.sha
-rw-r----- cloudera-scm cloudera-scm 月 : CDH--cdh5.p0-el7.parcel.torrent
-rw-r--r-- root root 月 : manifest.json
-rw-r--r-- root root 月 manifest.json.bak
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel.sha1
[[email protected] parcel-repo]# mv SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el7.parcel.sha1 SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904-el7.parcel.sha
[[email protected] parcel-repo]# ll
總用量
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel
-rw-r--r-- root root 月 CDH--cdh5.p0-el7.parcel.sha
-rw-r----- cloudera-scm cloudera-scm 月 : CDH--cdh5.p0-el7.parcel.torrent
-rw-r--r-- root root 月 : manifest.json
-rw-r--r-- root root 月 manifest.json.bak
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel
-rw-r--r-- root root 月 : SPARK2-.cloudera1-cdh5.p0-el7.parcel.sha
5.如果剛剛沒有停掉CM和叢集,現在将他們停掉。然後運作指令。
[[email protected]server parcel-repo]# service cloudera-scm-server restart
Restarting cloudera-scm-server (via systemctl):
[ 确定 ]
[[email protected]server parcel-repo]#
6.把CM和叢集啟動起來。然後點選主機->Parcel頁面,看是否多了個spark2的選項。如下圖,你這裡此時應該是配置設定按鈕,點選配置設定按鈕,等待操作完成後,點選激活按鈕
7.激活後,點選你的群集 > 添加服務,添加spark2服務。注意,如果你這裡看不到spark2服務,就請檢查你的CSD包和parcel包是否對應,上面的步驟是否有漏掉。正常情況如下圖:
8.添加成功後,我的叢集如下:
運作Spark2:
[[email protected] ~]# spark2-shell
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
// :: WARN spark.SparkContext: Support for Java is deprecated as of Spark
// :: WARN util.Utils: Service 'SparkUI' could not bind on port Attempting port
Spark context Web UI available at http://:
Spark context available as 'sc' (master = yarn, app id = application_1520998888517_0002).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version .cloudera1
/_/
Using Scala version (Java HotSpot(TM) -Bit Server VM, Java _67)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
scala>