Spark 部署
注:这是我对外发布的第一个博客,作者水平极为有限,如有问题请尽情指出。
此文档是我参加第一期傲来操作系统训练营,项目阶段大数据生态组优秀后,获得的实习期间所作,感觉官网上的教程里,Spark版本有点古老了,于是就结合实习期间任务,写了这个博客。
在Arm架构下,Spark 的部署大体有两种方式,源码编译和解压直装。
构建环境,Spark-2.x 需要 maven,Spark-3.x 不仅需要 maven,还需要 SBT:
大体流程 && 目录
- 源码编译篇
- 准备依赖
- 下载 Spark 源码
- 编译 Spark 源码
- 解压直装篇
- 下载预编译版本
- 解压直装
- 环境配置
- 编译参数
- 参考文献
源码编译篇
准备依赖
经过查找一定量的资料,大致的依赖情况如下图 可能有错: 
所以,需要依次准备相关依赖。经汇总,除了 R,在发布此文章时,其它都支持 yum 安装。
想要安装这部分依赖,一部分需要使用 yum。但有个小问题是,yum 不 sudo 无法进行,使用 sudo 则会默认为全部用户安装。这一点,我能想到的解决方法,貌似仅有通过源码编译 + 配置环境变量来解决。
Gcc 工具链 以及 cmake
使用 yum 进行安装。
注:一般 yum 前不加上 sudo,都会执行不了。
OpenJDK
使用 yum 安装。
Maven
使用 yum 安装。
Python
使用 yum 安装。
Scala
使用 yum 安装。
R
经过尝试,R 语言无法使用 yum 安装,故采用源码安装方式。
然后要配一下环境变量:
最后:
Protoc
可以直接使用 yum 安装。
SBT
经过尝试,在 Arm 下,可以直接使用 yum 进行安装:
Spark-3.x 极可能需要 SBT,在下图最后一行可以明显看到有一个 .sbt 文件夹: 
下载 Spark 源码
编译 Spark 源码
注:按现有的官方教程来,要安装 Spark-2.x 的版本时,走如下修改 pom.xml 流程来加速编译。而安装 Spark-3.x 时,经尝试,在准备环境之后,直接开始编译即可。
先修改 pom.xml,将 true 改为 false:
可以用如下流程:
实际上,刚刚的流程是需要对 Spark-2.x 进行的,到了 Spark-3.x,已经不再使用 Zinc 服务器,所以 pom.xml 中不再存在这部分内容。
经查资料,Spark-3.x 使用到 SBT 进行管理。
注:如果想要指定无编译优化行为的编译命令,见最后“编译参数”部分。
由于使用 Google 的 Maven 仓库,所以下载会很慢,所以,编译时要等很长时间,用于服务器下载(可能大约需要 3 到 4 小时左右)。解决这个问题的方法是,引入华为源,如下操作: 在编译前,还需要进行换源,国外 google 的 maven 拉取太慢,参照官方文档内容,操作如下:
开始编译(仍然位于 spark-3.5.1 目录内):
注:出现下图,且较长时间不动,是正常现象!(在编译 Spark-3.5.1 时,在这里足足卡了 40min,才继续!) 
在命令行里,会时不时出现下图所示内容,框起来的部分,就是组件的编译进度的提示,例,34/34 代表,共 34 个,正在进行第 34 个:

解压直装篇
下载预编译版本
在清华镜像站上,可以看到带有 Hadoop 的 Spark 的预编译版本。
版本选择:3.5.1。所以,需要下载 spark-3.5.1-bin-hadoop3.tgz。服务器上的下载命令如下:
注:如果将上面这条命令,和下面的解压命令封装为一个.sh 文件,则实现了“脚本下载”Spark-3.5.1。
下载成功结果如下图所示: 
解压直装
然后,安装完毕,可以选择进一步配置环境变量。但需要注意的是,如下图所示:

可以看到一些 spark 自带的测试用例,它们分别依赖:
- java
- python
- r
- scala
- scripts 文件夹内的,是 shell 脚本
所以,如果想要运行这些测试用例,需要先保证有这些依赖。解压直装版,就此结束。
环境配置
Spark 运行时的工作目录位于,Spark-xxx-bin-xxx.tgz 压缩包解压后的目录内,第一个 xxx 是版本号,第二个 xxx 作用未知,疑似是代表依赖项条目的编号。
因此,需要将环境变量配置为该工作目录。
最终效果,如下图所示: 
编译参数
由于在类似性能比较等场景下,不能开编译优化,汇总后,得到最终的关闭编译优化的编译命令如下:
参考文献
Spark 部署
注:这是我对外发布的第一个博客,作者水平极为有限,如有问题请尽情指出。
此文档是我参加第一期傲来操作系统训练营,项目阶段大数据生态组优秀后,获得的实习期间所作,感觉官网上的教程里,Spark版本有点古老了,于是就结合实习期间任务,写了这个博客。
在Arm架构下,Spark 的部署大体有两种方式,源码编译和解压直装。
构建环境,
Spark-2.x需要maven,Spark-3.x不仅需要maven,还需要SBT:大体流程 && 目录
源码编译篇
准备依赖
经过查找一定量的资料,大致的依赖情况如下图 可能有错:
所以,需要依次准备相关依赖。经汇总,除了
R,在发布此文章时,其它都支持yum安装。想要安装这部分依赖,一部分需要使用
yum。但有个小问题是,yum不sudo无法进行,使用sudo则会默认为全部用户安装。这一点,我能想到的解决方法,貌似仅有通过源码编译 + 配置环境变量来解决。Gcc 工具链 以及 cmake
使用
yum进行安装。注:一般
yum前不加上sudo,都会执行不了。OpenJDK
使用
yum安装。Maven
使用
yum安装。Python
使用
yum安装。Scala
使用
yum安装。R
经过尝试,R 语言无法使用
yum安装,故采用源码安装方式。然后要配一下环境变量:
最后:
Protoc
可以直接使用 yum 安装。
SBT
经过尝试,在 Arm 下,可以直接使用
yum进行安装:Spark-3.x极可能需要SBT,在下图最后一行可以明显看到有一个.sbt文件夹:下载 Spark 源码
编译 Spark 源码
注:按现有的官方教程来,要安装
Spark-2.x的版本时,走如下修改pom.xml流程来加速编译。而安装Spark-3.x时,经尝试,在准备环境之后,直接开始编译即可。先修改
pom.xml,将 true 改为 false:可以用如下流程:
实际上,刚刚的流程是需要对
Spark-2.x进行的,到了Spark-3.x,已经不再使用Zinc服务器,所以pom.xml中不再存在这部分内容。经查资料,Spark-3.x 使用到 SBT 进行管理。
注:如果想要指定无编译优化行为的编译命令,见最后“编译参数”部分。
由于使用 Google 的
Maven仓库,所以下载会很慢,所以,编译时要等很长时间,用于服务器下载(可能大约需要 3 到 4 小时左右)。解决这个问题的方法是,引入华为源,如下操作: 在编译前,还需要进行换源,国外 google 的 maven 拉取太慢,参照官方文档内容,操作如下:# 编辑 pom.xml 文件 vi ./pom.xml # 在<repositories>标签的第一位添加鲲鹏 Maven 仓库源 <repository> <id>kunpengmaven</id> <name>kunpeng maven</name> <url>https://mirrors.huaweicloud.com/kunpeng/maven</url> </repository> # 在<pluginRepository>标签第一位添加华为 Maven 源。 <pluginRepository> <id>huaweicloud-plugin</id> <url>https://mirrors.huaweicloud.com/repository/maven</url> </pluginRepository> # 按 Esc, 然后输入 “:wq”来保存退出开始编译(仍然位于 spark-3.5.1 目录内):
注:出现下图,且较长时间不动,是正常现象!(在编译 Spark-3.5.1 时,在这里足足卡了 40min,才继续!)
在命令行里,会时不时出现下图所示内容,框起来的部分,就是组件的编译进度的提示,例,
34/34代表,共34个,正在进行第34个:解压直装篇
下载预编译版本
在清华镜像站上,可以看到带有
Hadoop的Spark的预编译版本。版本选择:3.5.1。所以,需要下载
spark-3.5.1-bin-hadoop3.tgz。服务器上的下载命令如下:注:如果将上面这条命令,和下面的解压命令封装为一个.sh 文件,则实现了“脚本下载”Spark-3.5.1。
下载成功结果如下图所示:
解压直装
然后,安装完毕,可以选择进一步配置环境变量。但需要注意的是,如下图所示:
可以看到一些 spark 自带的测试用例,它们分别依赖:
所以,如果想要运行这些测试用例,需要先保证有这些依赖。解压直装版,就此结束。
环境配置
Spark 运行时的工作目录位于,Spark-xxx-bin-xxx.tgz 压缩包解压后的目录内,第一个
xxx是版本号,第二个xxx作用未知,疑似是代表依赖项条目的编号。因此,需要将环境变量配置为该工作目录。
最终效果,如下图所示:
编译参数
由于在类似性能比较等场景下,不能开编译优化,汇总后,得到最终的关闭编译优化的编译命令如下:
参考文献