Spark学习笔记[3]-Spark安装部署
1、下载对应版本的spark
官网我始终都下不下来,推荐一个国内的镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/spark
2、概述
2-1 安装模式
虽然Spark是一个分布式计算框架,但是其不属于Hadoop Project,它有自己的资源层管理和文件系统,可以不依赖Hadoop的HDFS和Yarn,所以安装部署的时候可以只安装spark,对应的就是standalone集群, 但是一般都会使用HDFS作为数据存储层,使用Yarn进行资源管理(spark on yarn模式),这样就可以进行资源的复用,除了Yarn,还支持k8s等资源管理模块
StandAlone模式和Yarn模式资源层对应的角色如下:
StandAlone | Yarn | |
---|---|---|
主节点(管理集群计算资源) | Master | resourceManager |
工作节点(具体负责计算的节点) | Worker | nodeManager |
2-2 作业执行大致流程
从官网down了一张图:
排除资源层的角色,剩下的就是计算层角色,主要是Driver和Executor,除了这两个角色,其实还有一个角色Client,只是Client的功能比较少,下结合这个图,介绍一下作业的执行流程:
- 1)、启动client,client的主要功能就是负责启动Driver,Driver可以是一个单独的jvm进程,也可以运行在Client进程中,分别对应我们使用Spark-submit提交程序时指定的客户端模式(client)和集群模式(cluster),无论哪种模式,driver启动后,后续的工作都主要由Driver负责,两个模式的主要区别是:
- 在客户端模式,driver运行在client内部,和client率属于同一个jvm进程
- 在集群模式,Client会先向资源管理主节点申请资源,主节点根据Driver启动所需的资源情况,从所有工作节点中选取一个工作节点,并在该工作节点启动一个新的JVM进程运行Driver程序,在Yarn模式下,Driver会运行在AppMater上</font
- 2)、Driver启动成功后会向资源层申请计算资源,资源层根据申请的资源情况,挑选一批工作节点启动执行进程(Executor),等待执行计算任务,和MR不同的是,MR的map任务和reduce任务都是以进程的形式调度执行,Spark是先启动执行进程Executor,Executor内部有一个线程池,后续计算任务都由该线程池执行(由于spark是先申请资源再调度任务,所以spark在申请资源时会倾向于抢占资源,也就是尽量把集群资源抢光)
3、StandAlone模式安装(数据存储层使用HDFS,所以要先启动HDFS)
3-1 资源层角色规划
主机名称 | Master | Worker |
---|---|---|
hdp001 | * | |
hdp002 | *(HA模式需要) | * |
hdp003 | * | |
hdp004 | * |