Spark集群配置(3):安装Spark

前言

本文是《Spark集群配置》的第三篇。主要讲解安装Spark的步骤。其他的几篇传送门:

. Spark集群配置(1):基础配置
. Spark集群配置(2):安装Hadoop
. Spark集群配置(4):其他填坑杂项

本文要求读者有一定的Linux命令基础,并且在多台机器上完成了前篇中的基础配置。下面我们开始正文。

下载Spark

请到Spark官网下载。下载时唯一需要注意的是要选择与之前安装的Hadoop版本对应。
我安装的是Hadoop 2.7.3,因此我选择Pre-bulit for Hadoop 2.7 and later。建议选择最新版本的Spark,我这里使用的是Spark 2.0.1
你也可以下载源码然后自己编译,但不推荐这么做。

安装Spark

在所有机器上执行以下命令安装:

1
2
3
$ tar -xzvf spark-2.0.1-bin-hadoop2.7.tgz
$ mv spark-2.0.1-bin-hadoop2.7 /usr/spark
$ sudo chown spark:spark /usr/spark

添加环境变量

在所有机器上修改/etc/profile文件,添加以下内容:

1
2
3
4
5
6
export SPARK_HOME="/usr/spark"
export PATH="/usr/spark/bin:$PATH"
export PATH="/usr/spark/sbin:$PATH"
# 指定pyspark使用Python3+版本执行
export PYSPARK_PYTHON="python3"

添加完后执行命令立即更新记录。

1
$ source /etc/profile

配置Spark

Spark的配置文件在spark/conf/中。我们主要配置以下几个文件:

log4j.properties

这是Spark的日志输出配置文件。它是由模板文件log4j.properties.template生成的。
执行以下命令将模板文件复制一份并重命名:

1
$ cp log4j.properties.template log4j.properties

编辑log4j.properties,修改log4j.rootCategory属性如下:

1
log4j.rootCategory=WARN, console

spark-env.sh

Spark的环境配置文件。来源于模板文件spark-env.sh.template
同样复制一份并重命名:

1
cp spark-env.sh.template spark-env.sh

编辑文件,添加或修改以下内容:

1
2
3
4
5
6
7
# 指定Hadoop的配置文件目录,必须是绝对路径
export HADOOP_CONF_DIR=/usr/hadoop/etc/hadoop
# 指定Spark各个Worker节点的运行最大内存
export SPARK_WORKER_MEMORY=6g
export JAVA_HOME=/usr/jdk

slaves

Hadoop中的slaves文件一样,可以直接拷贝过来。内容如下:

1
2
3
master
slave1
slave2

Spark集群的启动

如果只想启动单机版Spark,在添加完环境变量后,无需配置可以直接执行:

1
2
3
4
5
# scala版
$ spark-shell
# python版
$ pyspark

如果想启动Spark集群,则需要在配置完成后带master参数执行:

1
$ start-all.sh

此时集群即启动完成,正在待命。可以使用spark-submit命令提交程序在集群上运行:

1
$ spark-submit --master spark://master:7077 my_script.py

也可以在启动spark shell连接集群运行:

1
2
3
4
5
# scala 版
$ spark-shell master spark://master:7077
# python 版
$ pyspark master spark://master:7077

如果要停止集群,可以执行命令来停止:

1
stop-all.sh

到此我们完成了Spark的基本配置。但是在使用过程中会遇到很多坑,因此在这里将我目前遇到的坑整理在一起:Spark集群配置(4):其他填坑杂项