一、资源准备
先要准备Spark安装包和Scala安装包,安装包可以在阿里和网易的资源站下载
1,Spark 下载:https://mirrors.aliyun.com/apache/spark/ ,需要按照自己HDFS的版本选择对应的安装包,我的HDFS是2.7版本,可以选择:spark-2.4.6-bin-hadoop2.7.tgz,也可以选择基于hadoop2.7版本的其他版本
2,Scala 下载:先去spark官网查看文档,找到对应的scala版本 https://spark.apache.org/documentation.html
之后去Scala官网下载安装包 https://www.scala-lang.org/download/ ,现在已经是2.13了,找到之前的版本进行下载:https://www.scala-lang.org/download/2.12.0.html。下载tgz给集群使用,下载zip给windows使用
二、搭建集群
Scala部分
1,把scala-2.12.0.tgz上传到linux的/software目录下
2,解压scala-2.12.0.tgz到/module/目录下面:tar -zxvf scala-2.12.0.tgz -C /module/
3,配置环境变量 vi /etc/profile
# SCALA_HOME
export SCALA_HOME=/module/scala-2.12.0
export PATH=$PATH:$SCALA_HOME/bin
4,source /etc/profile 属性配置
5,验证版本号:scala -version
Spark部分
1,把spark-2.4.6-bin-hadoop2.7.tgz上传到linux的/software目录下
2,解压spark-2.4.6-bin-hadoop2.7.tgz到/module/目录下面:tar -zxvf spark-2.4.6-bin-hadoop2.7.tgz -C /module
3,进入module目录下,重命名:mv spark-2.4.6-bin-hadoop2.7 spark-2.4.6
4,进入spark/conf目录下,重命名: mv spark-env.sh.template spark-env.sh
5,修改spark-env.sh配置文件
# JAVA_HOME
export JAVA_HOME=/module/jdk1.8.0_144
# 设置Master的主机名
export SPARK_MASTER_IP=node1
# 提交Application的端口,默认就是这个,万一要改呢,改这里
export SPARK_MASTER_PORT=7077
# 每一个Worker最多可以使用的cpu core的个数,我虚拟机就一个,真实服务器如果有32个,你可以设置为32个
export SPARK_WORKER_CORES=1
# 每台机器上运行的worker数量,默认一个
export SPARK_WORKER_INSTANCES=1
# 每一个Worker最多可以使用的内存,我的虚拟机就1g,真实服务器如果有128G,你可以设置为100G
export SPARK_WORKER_MEMORY=1g
# 一般来说,spark任务有很大可能性需要去HDFS上读取文件,所以配置上(配置调度为hadoop的yarn),如果说你的spark就读取本地文件,也不需要yarn管理,不用配
export HADOOP_CONF_DIR=/module/hadoop-2.7.2/etc/hadoop
6,重命名:mv slaves.template slaves
7,vi slaves 修改slaves配置文件,添加Worker的主机列表,把localhost改成node1,node2,node3
8, 把SPARK_HOME/sbin下的start-all.sh和stop-all.sh这两个文件重命名
分别把这两个文件重命名为start-spark-all.sh和stop-spark-all.sh:
cd../sbin
mv start-all.sh start-spark-all.sh
mv stop-all.sh stop-spark-all.sh
原因:
如果集群中也配置HADOOP_HOME,那么在HADOOP_HOME/sbin目录下也有start-all.sh和stop-all.sh这两个文件,当你执行这两个文件,系统不知道是操作hadoop集群还是spark集群。修改后就不会冲突了,当然,不修改的话,你需要进入它们的sbin目录下执行这些文件,这肯定就不会发生冲突了。我们配置SPARK_HOME主要也是为了执行其他spark命令方便。
9,往yarn提交任务需要增加两个配置。
进入/module/hadoop-2.7.2/etc/hadoop目录下,在yarn-site.sh里增加这2个
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
10,配置SPARK_HOME环境变量
# SPARK_HOME
export SPARK_HOME=/module/spark-2.4.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
11,发送系统配置文件、修改后的yarn-site.xml 、spark文件夹到其他集群,并刷新配置信息
12,关闭yarn:stop-yarn.sh,并重启yarn:start-yarn.sh(因为刚才修改了配置信息)
13,在master节点启动Spark:start-spark-all.sh 注意:启动spark之前需要先启动hadoop集群
注:修改yarn-site.xml配置文件之后,存在一个问题:用start-all.sh 命令启动hdfs集群时,resouremanager会启动不了,需要自己去node3节点手动启动yarn,原因没找到,只能先保留疑问。
14,执行 spark-shell 命令,看是否显示版本,并进入到shell模式
spark-shell --master yarn