文章目录
零、本讲学习目标
搭建Spark Standalone模式的集群
能够启动Spark Standalone模式的集群
学会Spark应用程序的提交
Spark的两种集群运行模式:Spark Standalone模式和Spark On YARN模式。Standalone模式需要启动Spark集群,而Spark On YARN模式不需要启动Spark集群,只需要启动YARN集群即可。先来搭建Spark Standalone模式的集群。
一、Spark Standalone架构
Spark Standalone模式为经典的Master/Slave(主/从)架构,资源调度是Spark自己实现的。在Standalone模式中,根据应用程序提交的方式不同,Driver(主控进程)在集群中的位置也有所不同。应用程序的提交方式主要有两种:client和cluster,默认是client。可以在向Spark集群提交应用程序时使用–deploy-mode参数指定提交方式。
(一)client提交方式
当提交方式为client时,运行架构如下图所示
集群的主节点称为Master节点,在集群启动时会在主节点启动一个名为Master的守护进程,类似YARN集群的ResourceManager;从节点称为Worker节点,在集群启动时会在各个从节点上启动一个名为Worker的守护进程,类似YARN集群的NodeManager。
Spark在执行应用程序的过程中会启动Driver和Executor两种JVM进程。
Driver为主控进程,负责执行应用程序的main()方法,创建SparkContext对象(负责与Spark集群进行交互),提交Spark作业,并将作业转化为Task(一个作业由多个Task任务组成),然后在各个Executor进程间对Task进行调度和监控。通常用SparkContext代表Driver。在上图的架构中,Spark会在客户端启动一个名为SparkSubmit的进程,Driver程序则运行于该进程。
Executor为应用程序运行在Worker节点上的一个进程,由Worker进程启动,负责执行具体的Task,并存储数据在内存或磁盘上。每个应用程序都有各自独立的一个或多个Executor进程。在Spark Standalone模式和Spark on YARN模式中,Executor进程的名称为CoarseGrainedExecutorBackend,类似运行MapReduce程序所产生的YarnChild进程,并且同时与Worker、Driver都有通信。
(二)cluster提交方式
当提交方式为cluster时,运行架构如下图所示
Standalone cluster提交方式提交应用程序后,客户端仍然会产生一个名为SparkSubmit的进程,但是该进程会在应用程序提交给集群之后就立即退出。当应用程序运行时,Master会在集群中选择一个Worker进程启动一个名为DriverWrapper的子进程,该子进程即为Driver进程,所起的作用相当于YARN集群的ApplicationMaster角色,类似MapReduce程序运行时所产生的MRAppMaster进程。
二、Spark集群拓扑
(一)集群拓扑
一个主节点,两个从节点
(二)集群角色分配
Spark Standalone模式的集群搭建需要在集群的每个节点都安装Spark,集群角色分配如下表所示。
三、搭建三节点集群
(一)在私有云上创建三台虚拟机
创建配置过程,参看本博《在OpenStack私有云上创建与配置虚拟机》
(二)利用FinalShell登录三台虚拟机
在宿主机win7上启动FinalShell
1、创建SSH连接
创建三个SSH连接,连接master、slave1和slave2三个节点
1、登录master虚拟机
单击连接管理器里的master,登录master虚拟机
测试能否ping通百度 - www.baidu.com
2、登录slave1虚拟机
单击连接管理器里的slave1,登录slave1虚拟机
测试能否ping通百度 - www.baidu.com
3、登录slave2虚拟机
单击连接管理器里的slave2,登录slave2虚拟机
测试能否ping通百度 - www.baidu.com
(三)查看三台虚拟机主机名
查看master虚拟机主机名
查看slave1虚拟机主机名
查看slave2虚拟机主机名
设置主机名命令:hostnamectl set-hostname <主机名>
(四)配置三台虚拟机IP-主机名映射
在三台虚拟机上安装vim编辑器,执行命令:yum -y install vim
1、配置master虚拟机IP-主机名映射
执行命令:vim /etc/hosts
查看主机映射配置文件
2、配置slave1虚拟机IP-主机名映射
执行命令:vim /etc/hosts
查看主机映射配置文件
3、配置slave2虚拟机IP-主机名映射
执行命令:vim /etc/hosts
查看主机映射配置文件
(五)关闭与禁用防火墙
1、了解相关命令
(1)关闭防火墙命令
systemctl stop firewalld
(2)禁用防火墙命令
systemctl disable firewalld
(3)查看防火墙状态
systemctl status firewalld
2、关闭与禁用防火墙
(1)关闭与禁用master虚拟机防火墙
关闭防火墙
禁用防火墙
查看防火墙状态
(2)关闭与禁用slave1虚拟机防火墙
关闭防火墙
禁用防火墙
查看防火墙状态
(3)关闭与禁用slave2虚拟机防火墙
关闭防火墙
禁用防火墙
查看防火墙状态
(六)关闭SeLinux安全机制
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
SELinux 有三种工作模式,分别是enforcing:强制模式;permissive:宽容模式;disabled:关闭 SELinux。
/etc/sysconfig/selinux 文件里SELINUX=enforcing,将enforcing改成disabled,就可以关闭SeLinux安全机制
1、在master虚拟机上关闭SeLinux安全机制
执行命令:vim /etc/sysconfig/selinux
2、在slave1虚拟机上关闭SeLinux安全机制
执行命令:vim /etc/sysconfig/selinux
3、在slave2虚拟机上关闭SeLinux安全机制
执行命令:vim /etc/sysconfig/selinux
(七)设置三台虚拟机免密登录
1、master虚拟机免密登录master
执行命令:ssh-keygen,生成密钥对
执行命令:ssh-copy-id root@master,将公钥拷贝到master
测试master节点是否免密登录自己
2、master虚拟机免密登录slave1
执行命令:ssh-copy-id root@slave1,将公钥拷贝到slave1
测试master节点是否免密登录slave1
3、master虚拟机免密登录slave2
执行命令:ssh-copy-id root@slave2,将公钥拷贝到slave2
测试master节点是否免密登录slave2
(八)上传大数据相关软件到虚拟机
在win7虚拟机上查看相关软件
上传到master虚拟机/opt目录
(九)在三台虚拟机上安装配置JDK
1、在master虚拟机上安装配置JDK
进入/opt目录