待 Hadoop 安装好之后,我们再开始安装 Spark。
1、软件准备:官网下载地址:Downloads | Apache Sparkhttp://spark.apache.org/downloads.html
2、环境准备:此步骤是基于 Hadoop 集群已经能够无碍的运行, 并且 Linux 的防火墙和 SELinux 已经关闭, 时钟也已经同步。
3、下载解压
下载 Spark 安装包(注意Spark包名称中的hadoop版本要和安装的Hadoop 版本一致),直接上传至集群 Master 节点下的/root/package/目录下。
# 解压Spark安装包到/usr/local/
tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz -C /usr/local/
# 进到/usr/local/
cd /usr/local/
# 修改spark-2.4.7-bin-hadoop2.7目录为spark
mv spark-2.4.7-bin-hadoop2.7/ spark
4、节点配置
4.1 master配置
修改配置文件 spark-env.sh , 以指定运行参数:
修改配置文件 slaves , 指定从节点, 使用 sbin/start-all.sh 启动集群的时候, 可以一键启动整个集群所有的 Worker。
# 进入master
cd /usr/local/spark/conf
cp slaves.template slaves
vi slaves
打开后,插入下面的内容:
4.2 配置 HistoryServer:
1.默认情况下, Spark 程序运行完毕后, 就无法再查看运行记录的 Web UI 了, 通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程。
2.复制 spark-defaults.conf
cd /usr/local/spark-2.4.7/conf
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
3.将以下内容复制到spark-defaults.conf末尾处, 通过这段配置, 可以指定 Spark 将日志输入到 HDFS中。
spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/spark-eventlog
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 512m
4.将以下内容复制到spark-env.sh的末尾, 配置 HistoryServer 启动参数, 使得 HistoryServer 在启动的时候读取 HDFS 中写入的 Spark 日志。
# 指定 Spark History 运行参数
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -
Dspark.history.retainedApplications=3 -
Dspark.history.fs.logDirectory=hdfs://master:9000/spark-eventlog"
5.为 Spark 创建 HDFS 中的日志目录。
hdfs dfs -mkdir -p /spark_log
4.3 设置环境变量,并使之生效
vi /etc/profile
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
source /etc/profile
4.4 分发/etc/profile和Spark安装目录到其他机器
1. 将 Spark 安装包分发给集群中其它机器:
cd /usr/local/
scp -r spark slave1:$PWD
scp -r spark slave2:$PWD
scp -r /etc/profile slave1:/etc/
scp -r /etc/profile slave2:/etc/
- 让所有服务器的Spark环境变量生效,在所有节点执行source /etc/profile
先启动Zookeeper,三个节点均执行如下命令:
5、Spark集群启动
5.1 启动Spark
cd $SPARK_HOME/sbin
./start-all.sh
或者:cd /usr/local/spark/sbin
./start-all.sh
分别在master、slave1、slave2上执行 jps,可以发现:
master:Master、Worker
slave1:Worker
slave2:Worker
备注:此时 Spark 运行在 StandAlone 模式下。
5.2 Web UI管理界面
在浏览器中输入:http://master:8080/
可以看见如下 Spark 的 Web 界面:
测试Spark-shell启动:
cd /usr/local/spark/bin/
./spark-shell