for my darling!

1、前言

CDH安装的是较新版本的CDH-5.13.0,但是CDH-5.13.0默认支持的还是spark1.6版本。这里需要将spark升级到spark2.x版本,以方便使用spark程序读取kafka0.10.x的数据。根据官网上的介绍可知CDH5.13是支持spark2.x的。这里讲spark2的安装做一个记录。

首先贴出一些官方的网址,有兴趣的可以去看看:Cloudera发布Apache Spark 2概述(可以在这里面找到安装方法和parcel包的仓库,不过待会我会给出地址和安装方法)

2、安装准备

parcel包下载 http://archive.cloudera.com/spark2/parcels/


2.png


3.png

注:1、下载parcel包时要下载对应的版本,这里系统使centOS 7,所以下载el7

2、CSD和parcel包都有cloudera1和cloudera2之分,因此在下载CSD和parcel包时两者版本必须一致。

3、安装spark2

在所有节点进行下面操作

上传CSD包到机器的/opt/cloudera/csd目录。注意如果本目录下有其他的jar包,把删掉或者移到其他目录

修改SPARK_ON_YARN-2.2.0.cloudera1.jar的用户和组

chown cloudera-scm:cloudera-scm SPARK_ON_YARN-2.2.0.cloudera1.jar

将parcel包上传到机器的/opt/cloudera/parcel-repo目录。注意: 如果有其他的安装包,不用删除 ,但是如果本目录下有其他的重名文件比如manifest.json文件,把它重命名备份掉。然后把那3个parcel包的文件放在这里。

停掉CM和集群,现在将他们停掉。然后运行命令

service cloudera-scm-agent restart

service cloudera-scm-server restart

把CM和集群启动起来。然后点击主机->Parcel页面,看是否多了个spark2的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮


4.png


5.png

激活后,点击你的群集-》添加服务,添加spark2服务。注意,如果你这里看不到spark2服务,就请检查你的CSD包和parcel包是否对应,上面的步骤是否有漏掉。正常情况下,应该是能用了。

4、文件配置

1、前提交代

- CDH安装目录 /opt/cloudera/parcels/CDH/

- SPARK2安装目录 /opt/cloudera/parcels/SPARK2

- 启动spark2用户名为hadoop

- 所有配置文件目录为 /etc/

2、将CDH中spark配置文件拷贝到SPARK2的配置文件中,并配置spark-env.sh文件

#拷贝文件
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配置文件目录

3、配置启动账户hadoop .bashrc文件

#打开文件
vim /home/hadoop/.bashrc
#添加如下内容
export HADOOP_CONF_DIR=/etc/hadoop_conf
export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2
export PATH=$SPARK_HOME/bin:$PATH

4、在运行spark on yarn程序时会报错,如下


6.png

查了网上的博客,大多数是说yarn-site.xml文件未配置 yarn.resourcemanager.address 参数。但是在CDH中这个参数已经配置了。直接将yarn.resourcemanager.address写入程序中


7.png

仍无法解决问题。找到在spark的依赖包中含有一个yarn-default.xml文件。该文件配置了yarn.resourcemanager.address 参数。那么在spark依赖包中找到yarn-default.xml文件,该文件在/opt/cloudera/parcels/CDH/jars/hadoop-yarn-common-2.6.0-cdh5.13.0.jar包中(参考博客中说yarn-default.xml文件在spark-core-assembly-0.4-SNAPSHOT.jar中,这里有些不同)。修改该文件的yarn-default.xml文件

#打开该jar包
vim /opt/cloudera/parcels/CDH/jars/hadoop-yarn-common-2.6.0-cdh5.13.0.jar
#搜索yarn-default.xml文件
/yarn-default.xml
#按快车键进入yarn-default.xml文件,修改参数并保存


8.png

这里修改为yarn运行所在的节点IP

5、验证

启动spark-shell


9.png

运行spark on yarn程序

spark-submit
--class com.bmkp.Main
--master yarn //这里master必须为 yarn
--deploy-mode cluster //这里可以有cluster和client两种方式
--executor-memory 2g
--num-executors 10
/data/xu/read_hive-1.0-SNAPSHOT.jar