首先 下载Spark安装包,注意如果之前搭建了Hadoop,要选择对应的的版本。
我之前搭建的是Hadoop 3.2.0伪分布式环境,因此下载spark包的时候,要选择Pre-build for Apache Hadoop 2.7 and later.
在/usr/local下创建spark文件夹,然后解压我们刚才下载的包。
[root@DW1 spark]# tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
[root@DW1 spark]# ls
spark-2.4.3-bin-hadoop2.7 spark-2.4.3-bin-hadoop2.7.tgz
然后下载scala安装包(可选),我选择的是scala-2.11.6版本。
Spark虽然是用Scala语言实现的,但其实在搭建过程中并不需要手动安装scala包。这里选择安装是为了后续学习使用方便。
同样在/usr/local下创建scala文件夹,然后解压安装包。
[root@DW1 scala]# tar -zxf scala-2.11.6.tgz
[root@DW1 scala]# ls
scala-2.11.6 scala-2.11.6.tgz
修改/etc/profile,分别添加Scala和spark的环境变量:
[root@DW1 spark]# vi /etc/profile
# 添加以下内容
#scala
export SCALA=/usr/loacl/scala/scala-2.11.6
export PATH=$PATH:$SCALA_HOM/bin:$SCALA_HOM/sbin
注意这里我把$SCALA_HOM/sbin也加进去了,有些博客是不把这一项放进去的,原因后面再解释
#spark
export SPARK_HOME=/usr/loacl/spark/spark-2.4.3-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
[root@DW1 spark]# source /etc/profile
我们可以利用一些命令来检查配置的路径有没有错误,如:
[root@DW1 ~]# cd $SPARK_HOME
[root@DW1 spark-2.4.3-bin-hadoop2.7]#
[root@DW2 ]# echo $SPARK_HOME
/usr/local/spark/spark-2.4.3-bin-hadoop2.7
如果不正确,就会打印错误的路径,或者提示没有此路径
配置完环境后,Scala就安装好了,可以用以下指令进行验证:
[root@DW1 scala]# scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL
将$SPARK_HOME/conf/下的spark-env.sh.template更名为spark-env.sh并添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export HADOOP_CONF_DIR=//usr/local/hadoop/hadoop-3.2.0/etc/hadoop
# 显式配置主机号和端口号
export SPARK_MASTER_HOST=DW1
export SPARK_MASTER_PORT=7077
# 主机内存和核
export SPARK_WORKER_MEMORY=1g
export SPARK_WORKER_CORES=1
将slaves.template更名为slaves并添加以下内容:
# 修改默认的localhost为从节点的主机名
DW2
DW3
修改SPAPK_HOME/sbin下的start-all.sh和stop-all.sh的文件名:
因为集群中也搭建了Hadoop,设置了HADOOP_HOME环境变量,而恰巧hadoop启动和暂停集群的脚本也为命名start-all.sh和stop-all.sh这两个名字。如果不改名的话,操作系统将无法识别是操作hadoop还是spark,因此会发生冲突。
[root@DW1 conf]# cd ../sbin
[root@DW1 sbin]# mv start-all.sh start-spark-all.sh
[root@DW1 sbin]# mv stop-all.sh stop-spark-all.sh
记得前面环境变量我选择把$SCALA_HOM/sbin也配置进去吗?
那就是为了在任意位置下都能用start-spark-all.sh和stop-spark-all.sh来开启关闭spark.
如果不改名且不配置这一路径,每次开启或者关闭spark,就只能cd进入$SCALA_HOM/sbin路径下,手动sh start-all.sh和stop-all.sh这两个脚本,极其麻烦。
[root@DW1 local]# scp -r spark DW2:/usr/local
[root@DW1 local]# scp -r spark DW3:/usr/local
同时不要忘记各从节点的环境变量也要修改。
先开启hadoop集群:
[root@DW1 ~]# start-all.sh
[root@DW1 ~]# jps
9429 SecondaryNameNode
9670 ResourceManager
9165 NameNode
10045 Jps
再开启spark集群:
[root@DW1 ~]# start-spark-all.sh
#主节点
[root@DW1 ~]# jps
9429 SecondaryNameNode
10069 Master
9670 ResourceManager
10188 Jps
9165 NameNode
# 从节点
[root@DW2 ~]# jps
5521 DataNode
5809 Jps
5764 Worker
5629 NodeManager
对比发现主节点多了一项master,从节点多了一项worker。
到这里,spark的环境就搭建完成了。