type
status
date
summary
slug
tags
category
password
icon

CDH 6.3.2 升级 Spark 3

由于 CDH6.3.2版本以上已不开源,目前常用组件只能自编译升级,比如 Spark 。
看网上的资料,有人说 Spark3 的 SQL 运行性能比 Spark2 可提升 20%,本人未验证,但是 Spark3 的 AE 功能的确很香,能自适应解决 Spark SQL 的数据倾斜。
notion image

准备工作

  • 环境及软件版本
    • jdk-1.8.0_181
    • maven-3.8.4
    • scala-2.12.15
    • spark-3.3.0
说明:maven 和 scala 请不要改变小版本,如果要改变,请改动 pom 中相应的版本号,否则编译时会有版本错误
  • 下载tar
  • 解压
  • 移至/opt /mod/目录
  • 设置jdkscalamaven的环境变量
添加如下内容
  • 应用

编译 Spark3

修改spark3pom配置,增加cloudera maven仓库
repositories标签下,新增
notion image
修改/opt/mod/spark-3.3.0/pom.xml文件中的Hadoop版本
notion image
打开make-distribution.sh
修改如下内容
重置 scala 版本
  • 这里出现下面报错的话,进入/opt/mod/spark-3.3.0目录后再运行就好
    • build/mvn: 没有那个文件或目录
notion image
开始编译
用的是sparkmake-distribution.sh脚本进行编译,这个脚本其实也是用maven编译的
  • –tgz
    • 指定以tgz结尾
  • –name
    • 后面跟的是Hadoop的版本,在后面生成的tar包带的版本号
  • Pyarn
    • 是基于yarn
  • Dhadoop.version=3.0.0-cdh6.3.2
    • 指定Hadoop的版本。
经过漫长的编译:
notion image
编译成功后的目录:
notion image

部署 Spark3 客户端

上传到要部署spark3的客户端机器
将 CDH 集群的spark-env.sh复制到/opt/cloudera/parcels/CDH/lib/spark3/conf下:
修改spark-env.sh
添加以下内容
gateway节点的hive-site.xml复制到spark3/conf目录下,不需要做变动:

创建 spark-sql

创建spark-sql文件
填写以下内容
增加spark-sql执行权限
配置spark-sql快捷方式
  • alternatives --install <link> <name> <path> <priority>
    • install 表示安装
    • link 符号链接
    • name 标识符
    • path 执行文件的路径
    • priority 优先级

配置 conf

进入conf目录
开启日志
拷贝spark-defaults.conf配置
修改spark-defaults.conf
  • 删除以下三条
  • 添加
上传相关jar包到HDFS
notion image

创建 spark3-submit

创建spark3-submit
填写如下内容
增加spark3-submit执行权限sh
配置spark3-submit快捷方式
测试spark3-submit
notion image
notion image

注意事项

如果有启用动态资源分配(Spark Dynamic Allocation),此时会有下列报错
需要在spark-defaults.conf中添加useOldFetchProtocol配置
这样Hadoop集群即有了CDH版本的Spark-2.4.0又有了 apache 版本的Spark-3.3.0
HDFS 报错Permission denied user=dr.whoCDH 6.3.2 升级 Hive 2.3.9
Loading...