环境介绍:
在我的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>