一、Spark集群安装部署
Spark集群有多种部署方式,比较常见的有Standalone模式和ON YARN模式
1、Standalone模式
Standalone模式就是说部署一套独立的Spark集群,后期开发的Spark任务就在这个独立的Spark集群中执行
2、ON YARN模式
ON YARN模式是说使用现有的Hadoop集群,后期开发的Spark任务会在这个Hadoop集群中执行,此时这个Hadoop集群就是一个公共的了,不仅可以运行MapReduce任务,还可以运行Spark任务,这样集群的资源就可以共享了,并且也不需要再维护一套集群了,减少了运维成本和运维压力,一举两得。
所以在实际工作中都会使用Spark ON YARN模式
不过为了考虑到大家可能会有一些特殊场景确实要使用standalone模式部署独立的spark集群,所以在这,针对这两种部署模式我们都讲一下。
3、下载安装包
那在具体安装部署之前,需要先下载Spark的安装包。
如果不想去官网下载,spark-2.4.3-bin-hadoop2.7.tgz
版本百度网盘链接如下:
链接:/s/1T0lkgadUAnO3fjqREUprbw?pwd=b1w7 提取码:b1w7
进到spark的官网,点击download按钮。
在这里可以选择Spark的版本和Hadoop的版本。
但是这里面只有Spark的最新版本,一般不建议选择最新版本,可以在最新版本往下面回退一两个小版本。
那我们想要下载其它版本的话就需要到archive里面下载了。
目前spark有三大版本,1.x,2.x和3.x,其中3.x是一个预览版本,不能在生产环境中使用,所以目前使用最多的就是2.x的版本了。
在这我们下载spark-2.4.3版本。
在这需要注意选择合适的安装包
因为我们使用Spark的时候一般都是需要和Hadoop交互的,所以需要下载带有Hadoop依赖的安装包。
这个时候就需要选择Hadoop版本对应的Spark安装包,我们的Hadoop是3.2的,里面Hadoop的版本只有2.6和2.7的,那就退而求其次选择hadoop2.7对应的这个Spark安装包,其实也是没什么问题的,如果有强迫症的话,就需要下载Spark的源码包,自己编译配套版本的安装包了。
其实在Spark3.0的那个预览版本里面是有和Hadoop3.2配套的版本的,不过那个不是稳定版本,不建议在生产环境下使用,所以就不考虑了。
所以最终我们就下载这个版本:
spark-2.4.3-bin-hadoop2.7.tgz
二、Standalone模式安装部署
由于Spark集群也是支持主从的,在这我们使用三台机器,部署一套一主两从的集群
主节点:bigdata01
从节点:bigdata02,bigdata03
注意:需要确保这几台机器上的基础环境是OK的,防火墙、免密码登录、还有JDK因为这几台机器我们之前已经使用过了,基础环境都是配置过的,所以说在这就直接使用了
1、先在bigdata01上进行配置
(1)上传安装包
将spark-2.4.3-bin-hadoop2.7.tgz上传到bigdata01的/data/soft目录中
(2)解压
解压
[root@bigdata01 soft]# tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
(3)重命名spark-env.sh.template
[root@bigdata01 soft]# cd spark-2.4.3-bin-hadoop2.7/conf/[root@bigdata01 conf]# mv spark-env.sh.template spark-env.sh
(4)修改spark-env.sh
在文件末尾增加这两行内容,指定JAVA_HOME和主节点的主机名
export JAVA_HOME=/data/soft/jdk1.8export SPARK_MASTER_HOST=bigdata01
(5)重命名slaves.template
[root@bigdata01 conf]# mv slaves.template slaves
(6)修改slaves
将文件末尾的localhost去掉,增加bigdata02和bigdata03这两个从节点的主机名
bigdata02bigdata03
(7)将修改好配置的spark安装包,拷贝到bigdata02和bigdata03上
[root@bigdata01 soft]# scp -rq spark-2.4.3-bin-hadoop2.7 bigdata02:/data/soft/[root@bigdata01 soft]# scp -rq spark-2.4.3-bin-hadoop2.7 bigdata03:/data/soft/
(8)启动Spark集群
[root@bigdata01 soft]# cd spark-2.4.3-bin-hadoop2.7[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# sbin/start-all.sh starting org.apache.spark.deploy.master.Master, logging to /data/soft/spark-2.4.3-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-bigdata01.outbigdata02: starting org.apache.spark.deploy.worker.Worker, logging to /data/soft/spark-2.4.3-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-bigdata02.outbigdata03: starting org.apache.spark.deploy.worker.Worker, logging to /data/soft/spark-2.4.3-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-bigdata03.out
(9)验证
在bigdata01上执行jps,能看到Master进程即可
[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# jps1731 Master
在bigdata02和bigdata03上执行jps,能看到Worker进程即可
[root@bigdata02 ~]# jps1714 Worker[root@bigdata03 ~]# jps1707 Worker
还可以访问主节点的8080端口来查看集群信息
http://bigdata01:8080/
这就是Spark的独立集群
(10)提交任务
那我们尝试向这个Spark独立集群提交一个spark任务
提交任务的命令该如何写呢?
来看一下Spark的官方文档
需要使用bin目录下的spark-submit脚本提交任务
--class 指定需要指定的入口类,表示计算π值--master指定集群的地址
接着指定需要提交的任务jar包,最后的一个参数是计算π值这个任务自身需要的
[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://bigdata01:7077 examples/jars/spark-examples_2.11-2.4.3.jar 2
提交之后可以到Spark的8080 web界面查看任务信息
(11)停止Spark集群
在主节点 bigdata01上执行
[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# sbin/stop-all.shbigdata03: stopping org.apache.spark.deploy.worker.Workerbigdata02: stopping org.apache.spark.deploy.worker.Workerstopping org.apache.spark.deploy.master.Master
三、ON YARN模式
ON YARN模式很简单,
先保证有一个Hadoop集群,然后只需要部署一个Spark的客户端节点即可,不需要启动任何进程,
注意:Spark的客户端节点同时也需要是Hadoop的客户端节点,因为Spark需要依赖于Hadoop
我们的Hadoop集群是bigdata01、bigdata02、bigdata03
那我们可以选择把Spark部署在一个单独的节点上就可以了,其实就类似于我们之前部署Hadoop的客户端节点。
在这我们使用bigdata04来部署spark on yarn,因为这个节点同时也是Hadoop的客户端节点。
1、上传安装包
将spark-2.4.3-bin-hadoop2.7.tgz上传到bigdata04的/data/soft目录中
2、解压
[root@bigdata04 soft]# tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
3、重命名spark-env.sh.template
[root@bigdata04 soft]# cd spark-2.4.3-bin-hadoop2.7/conf/[root@bigdata04 conf]# mv spark-env.sh.template spark-env.sh
4、修改spark-env.sh
在文件末尾增加这两行内容,指定JAVA_HOME和Hadoop的配置文件目录
export JAVA_HOME=/data/soft/jdk1.8export HADOOP_CONF_DIR=/data/soft/hadoop-3.2.0/etc/hadoop
5、提交任务
那我们通过这个spark客户点节点,向Hadoop集群上提交spark任务
[root@bigdata04 spark-2.4.3-bin-hadoop2.7]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster examples/jars/spark-examples_2.11-2.4.3.jar 2
6、可以到YARN的8088界面查看提交上去的任务信息
此时就可以使用ON YARN模式来执行Spark任务了。