- 前言
- 一、安装Spark
- 1. 下载压缩包并解压
- 2. 安装Spark
- 3. 配置环境变量
- 4. 修改配置文件
- 二、验证Spark安装及错误处理
- 1. 运行Spark实例
- 2. 启动Spark shell
- 三、总结
前言
Spark 的安装需要建立在 Hadoop 的之上(类似于 Hbase 和 Hive),关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客:
- Ubuntu下单机安装Hadoop详细教程(附所需安装包下载)
- Ubuntu下伪分布式安装Hadoop详细教程
本文安装的 Hadoop 及 Java 环境基于林子雨老师的《大数据技术原理与应用(第3版)》中所要求,其中 Java 版本为1.8.0_301,Hadoop 版本为3.2.2,这里我的操作系统环境是 Ubuntu 20.04,此安装方法同样适用于低版本。
一、安装Spark 1. 下载压缩包并解压
官网下载目录如下:https://spark.apache.org/downloads.html
建议清华镜像网站下载:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.2.0/
注意这里建议下载 without-hadoop 版本,此版本适用于所有 Hadoop 版本,若是官网下载,则需要选择 Pre-build with user-provided Hadoop 类型即可下载。
下载文件如下:spark-3.2.0-bin-without-hadoop.tgz,进入下载目录,解压压缩包:
cd ~/Downloads sudo tar -zxf ./spark-3.2.0-bin-without-hadoop.tgz -C /usr/local2. 安装Spark
进入到 /usr/local 目录下,更改文件夹名,赋予用户权限:
cd /usr/local sudo mv ./spark-3.2.0-bin-without-hadoop/ ./spark sudo chown -R hadoop ./spark3. 配置环境变量
修改 ~/.bashrc 文件:
vim ~/.bashrc
增添下面几行:
export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin export HADOOP_HOME=/usr/local/hadoop
运行如下命令使配置立即生效:
source ~/.bashrc4. 修改配置文件
创建 spark-env.sh 文件:
cd /usr/local/spark/conf sudo cp spark-env.sh.template spark-env.sh
修改配置 spark-env.sh 文件:
sudo vim spark-env.sh
将以下内容写入文件:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
按下 ESC 键,:wq,保存并退出。
二、验证Spark安装及错误处理 1. 运行Spark实例
在终端下,运行以下命令:
cd /usr/local/spark bin/run-example SparkPi 2>&1 | grep "Pi is"
输出如下,运行成功!
hadoop@fzqs-Laptop:/usr/local/spark$ cd /usr/local/spark hadoop@fzqs-Laptop:/usr/local/spark$ bin/run-example SparkPi 2>&1 | grep "Pi is" Pi is roughly 3.1437557187785942. 启动Spark shell
由于之前已经配置了环境变量,所以这里不需要加上路径也可使用命令:
spark-shell
正常启动界面如下:
注意启动若出现如下警告:
hadoop@fzqs-Laptop:/usr/local$ spark-shell 2021-12-09 23:49:14,625 WARN util.Utils: Your hostname, fzqs-Laptop resolves to a loopback address: 127.0.1.1; using 10.132.13.98 instead (on interface wlo1) 2021-12-09 23:49:14,626 WARN util.Utils: Set SPARK_LOCAL_IP if you need to bind to another address Setting default log level to "WARN". ......
参考此篇博客:Spark启动:WARN util.Utils: Your hostname, … resolves to a loopback address: …; using … instead
简单执行一下命令:
scala> 12345 + 54321 res0: Int = 66666 scala>
退出 spark-shell 界面:
:quit
三、总结
尽管 Spark 相对 Hadoop 具有较大优势,但 Spark 并不能完全替代Hadoop,其主要用于替代 Hadoop 中的 MapReduce 计算模型。实际上,Spark 已经很好地融入了 Hadoop 生态系统,并成为其中的重要一员,它可以借助于 YARN 实现资源调度管理,借助于HDFS 实现分布式存储。此外, Hadoop可以使用廉价的、异构的机器来做分布式存储与计算,但是Spark对硬件(内存、CPU等)的要求稍高一些。



