Spark集群安装部署
前面我们对Spark有一个整体概念之后,下面我们来安装部署一下Spark,spark也是支持集群模式的
Spark集群安装部署
Spark集群有多种部署方式,比较常见的有Standalone模式和ON YARN模式
Standalone模式就是说部署一套独立的Spark集群,后期开发的Spark任务就在这个独立的Spark集群中执行
ON YARN模式是说使用现有的Hadoop集群,后期开发的Spark任务会在这个Hadoop集群中执行,此时这个Hadoop集群就是一个公共的了,不仅可以运行MapReduce任务,还可以运行Spark任务,这样集群的资源就可以共享了,并且也不需要再维护一套集群了,减少了运维成本和运维压力,一举两得。
所以在实际工作中都会使用Spark ON YARN模式
不过为了考虑到大家可能会有一些特殊场景确实要使用standalone模式部署独立的spark集群,所以在这,针对这两种部署模式我们都讲一下。
那在具体安装部署之前,需要先下载Spark的安装包。
进到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
安装包百度网盘链接地址获取方式如下:
注意:为了保证下载链接地址一直可用,在这里通过微信公众号【大数据1024】获取,失效的话可以在公众号中随时动态更新。
扫码关注之后回复spark即可获取下载地址。
Standalone
由于Spark集群也是支持主从的,在这我们使用三台机器,部署一套一主两从的集群
主节点:bigdata01
从节点:bigdata02,bigdata03
注意:需要确保这几台机器上的基础环境是OK的,防火墙、免密码登录、还有JDK
因为这几台机器我们之前已经使用过了,基础环境都是配置过的,所以说在这就直接使用了
先在bigdata01上进行配置
将spark-2.4.3-bin-hadoop2.7.tgz上传到bigdata01的/data/soft目录中
解压
[root@bigdata01 soft]# tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
- 重命名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
- 修改
spark-env.sh
在文件末尾增加这两行内容,指定JAVA_HOME和主节点的主机名
export JAVA_HOME=/data/soft/jdk1.8
export SPARK_MASTER_HOST=bigdata01
- 重命名slaves.template
[root@bigdata01 conf]# mv slaves.template slaves
- 修改slaves
将文件末尾的localhost去掉,增加bigdata02和bigdata03这两个从节点的主机名
bigdata02
bigdata03
- 将修改好配置的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/
- 启动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.out
bigdata02: 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.out
bigdata03: 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
- 验证
在bigdata01上执行jps,能看到Master进程即可
[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# jps
1731 Master
在bigdata02和bigdata03上执行jps,能看到Worker进程即可
[root@bigdata02 ~]# jps
1714 Worker
[root@bigdata03 ~]# jps
1707 Worker
还可以访问主节点的8080端口来查看集群信息
这就是Spark的独立集群
- 提交任务
那我们尝试向这个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界面查看任务信息
- 停止Spark集群
在主节点 bigdata01上执行
[root@bigdata01 spark-2.4.3-bin-hadoop2.7]# sbin/stop-all.sh
bigdata03: stopping org.apache.spark.deploy.worker.Worker
bigdata02: stopping org.apache.spark.deploy.worker.Worker
stopping 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的客户端节点。
将spark-2.4.3-bin-hadoop2.7.tgz上传到bigdata04的/data/soft目录中
解压
[root@bigdata01 soft]# tar -zxvf spark-2.4.3-bin-hadoop2.7.tgz
- 重命名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
- 修改
spark-env.sh
在文件末尾增加这两行内容,指定JAVA_HOME和Hadoop的配置文件目录
export JAVA_HOME=/data/soft/jdk1.8
export HADOOP_CONF_DIR=/data/soft/hadoop-3.2.0/etc/hadoop
- 提交任务
那我们通过这个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
- 可以到YARN的8088界面查看提交上去的任务信息
此时就可以使用ON YARN模式来执行Spark任务了。