CDH 5.13安装spark2

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包的仓库,不过待会我会给出地址和安装方法)
https://www.cloudera.com/documentation/spark2/latest/topics/spark2_installing.html

2、安装准备

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的选项。如下图,你这里此时应该是分配按钮,点击,等待操作完成后,点击激活按钮

    《CDH 5.13安装spark2》 4.png
    《CDH 5.13安装spark2》 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程序时会报错,如下

《CDH 5.13安装spark2》 6.png

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

《CDH 5.13安装spark2》 7.png

仍无法解决问题。找到一篇博客
https://www.cnblogs.com/vikings-blog/p/3918266.html 说是架构问题。在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文件,修改参数并保存

《CDH 5.13安装spark2》 8.png

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

5、验证

  • 启动spark-shell

    《CDH 5.13安装spark2》 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
    原文作者:bigdata_er
    原文地址: https://www.jianshu.com/p/6acd6419f697
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞