如何在 Ubuntu 20.04 上安装 Apache Spark
在此页
- 先决条件
- 开始
- 安装Java
- 安装 Scala
- 安装 Apache Spark
- 启动 Spark 主服务器
- 启动 Spark 工作进程
- 使用 Spark Shell
- 结论
Apache Spark 是一个开源框架和通用集群计算系统。 Spark 在支持通用执行图的 Java、Scala、Python 和 R 中提供高级 API。它带有用于流式处理、SQL、机器学习和图形处理的内置模块。它能够分析大量数据并将其分布在集群中并并行处理数据。
在本教程中,我们将介绍如何在 Ubuntu 20.04 上安装 Apache Spark 集群计算栈。
先决条件
- 一台运行 Ubuntu 20.04 服务器的服务器。
- 为服务器配置了根密码。
入门
首先,您需要将系统包更新到最新版本。您可以使用以下命令更新所有这些:
apt-get update -y
更新所有包后,您可以继续下一步。
安装Java
Apache Spark 是一个基于 Java 的应用程序。因此,您的系统中必须安装 Java。您可以使用以下命令安装它:
apt-get install default-jdk -y
安装 Java 后,使用以下命令验证已安装的 Java 版本:
java --version
您应该看到以下输出:
openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
安装 Scala
Apache Spark 是使用 Scala 开发的。所以你需要在你的系统中安装 Scala。您可以使用以下命令安装它:
apt-get install scala -y
安装 Scala 后。您可以使用以下命令验证 Scala 版本:
scala -version
您应该看到以下输出:
Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL
现在,使用以下命令连接到 Scala 界面:
scala
您应该得到以下输出:
Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8).
Type in expressions for evaluation. Or try :help.
现在,使用以下命令测试 Scala:
scala> println("Hitesh Jethva")
您应该得到以下输出:
Hitesh Jethva
安装 Apache Spark
首先,您需要从其官方网站下载最新版本的 Apache Spark。在编写本教程时,Apache Spark 的最新版本是 2.4.6。您可以使用以下命令将其下载到 /opt 目录:
cd /opt
wget https://archive.apache.org/dist/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz
下载后,使用以下命令解压缩下载的文件:
tar -xvzf spark-2.4.6-bin-hadoop2.7.tgz
接下来,将提取的目录重命名为 spark ,如下所示:
mv spark-2.4.6-bin-hadoop2.7 spark
接下来,您需要配置 Spark 环境,以便轻松运行 Spark 命令。您可以通过编辑 .bashrc 文件来配置它:
nano ~/.bashrc
在文件末尾添加以下行:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
保存并关闭文件,然后使用以下命令激活环境:
source ~/.bashrc
启动 Spark 主服务器
此时,Apache Spark 已安装并配置。现在,使用以下命令启动 Spark 主服务器:
start-master.sh
您应该看到以下输出:
starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-ubunt4.out
默认情况下,Spark 监听 8080 端口。您可以使用以下命令检查它:
ss -tpln | grep 8080
您应该看到以下输出:
LISTEN 0 1 *:8080 *:* users:(("java",pid=4930,fd=249))
现在,打开您的 Web 浏览器并使用 URL http://your-server-ip:8080 访问 Spark Web 界面。您应该看到以下屏幕:

启动 Spark 工作进程
如您所见,Spark master 服务运行在 spark://your-server-ip:7077 上。因此,您可以使用以下命令使用此地址启动 Spark 工作进程:
start-slave.sh spark://your-server-ip:7077
您应该看到以下输出:
starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-ubunt4.out
现在,转到 Spark 仪表板并刷新屏幕。您应该在以下屏幕中看到 Spark 工作进程:

使用 Spark 外壳
您还可以使用命令行连接 Spark 服务器。您可以使用 spark-shell 命令连接它,如下所示:
spark-shell
连接后,您应该会看到以下输出:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:35:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://ubunt4:4040
Spark context available as 'sc' (master = local[*], app id = local-1598711719335).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.4.6
/_/
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
如果你想在 Spark 中使用 Python。您可以使用 pyspark 命令行实用程序。
首先,使用以下命令安装 Python 版本 2:
apt-get install python -y
安装后,您可以使用以下命令连接 Spark:
pyspark
连接后,您应该得到以下输出:
Python 2.7.18rc1 (default, Apr 7 2020, 12:05:55)
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:36:40 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 2.4.6
/_/
Using Python version 2.7.18rc1 (default, Apr 7 2020 12:05:55)
SparkSession available as 'spark'.
>>>
如果你想停止主从服务器。您可以使用以下命令执行此操作:
stop-slave.sh
stop-master.sh
结论
恭喜!您已经在 Ubuntu 20.04 服务器上成功安装了 Apache Spark。现在您应该能够在开始配置 Spark 集群之前执行基本测试。如果您有任何问题,请随时问我。