spark快速入门(三)-------spark部署及运行模式

spark支持多种部署方案,包括spark自带的standalone资源调度模式(StandAlone);运行在hadoop的yarn资源调度框架中(SparkOnYARN);local本地模式;可以运行在Mesos资源调度框架上;还可以运行在k8s(Kubernetes)上。今天对前三个(standalone、sparkonyarn、local进行阐述)

local模式

1)运行在本地,利用本地资源进行计算

2)一般进行测试时会使用本地模式

3)使用方式

I:使用idea 代码中设置master为locak[*]

II:集群中提交任务时  不添加参数  --master   即为本地模式

StandAlone模式

StandAlone模式,又分为client模式和集群模式

1)client模式:特点:Driver是在SparkSubmit进程中

2)cluster模式:特点:Driver运行在集群当中,不在SparkSubmit进程当中,需要将jar包上传到hdfs中,此模式细节和sparkonyarn的集群模式差不多,在sparkonyarn中阐述。

Spark On YARN模式

1)经常使用,以后开发中经常用到的。

2)也分为client模式和cluster模式。

3)主要角色:

  1. ResourceManger(RM)全局的资源管理器,负责整个系统的资源管理和分配,由调度器(ResourceScheduler)和应用管理器(Applications Manger,ASM)组成。调度器:调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序.调度器不参与任何应用程序的具体工作,仅根据应用程序的资源需求进行资源分配.调度器是个可拔插的组件,用户可根据自己的需要设计新的调度器;应用程序管理器:负责整个系统中所有应用程序,包括应用程序的提交,与调度器协商资源以启动ApplicationMaster(AM),监控AM运行状态并在失败时重启它
  2. ApplicationMaster(AM)  用户提交的每一个应用程序均包含一个AM  :I.与RM调度器协商以获取资源   II.将得到的资源进一步分配给内部的任务III.与NodeManager(NM)通信,以启动\停止任务  IV.监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务
  3. NodeManager(NM)  NM是每个节点上的资源和任务管理器.一方面,它会定时的向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动\停止等请求Container

4)经常用到的是spark  on yarn 中的cluster集群模式   是为重点******

运行流程:

流程解析:

(1)启动sparksubmit进程

(2)解析参数  比如  在集群中设置的--master  等

(3)解析后经过一系列反射、调用方法等创建rmClient(就是跟ResourceManager进行通信的代理对象)

(4)client向resourcemanager申请资源,rm返回给client一个application id

(5)client向hdfs上   上传spark jars下面的jar包、自己写的程序jar、和配置

(6)resourcemanager随机找一个资源充足的nodemanager

(7)然后通过rpc通信,让nodemanager从hdfs上下载jar包和配置,启动ApplicationMaster

(8)ApplicationMaster向resourcemanager申请资源

(9)resourcemanager中的resourceschedule找到符合条件的nodemanager,将nodemanager的信息返回给ApplicationMaster

(10)ApplicationMaster跟返回的NodeManger进行通信

(11)NodeManager从hdfs上下载依赖和jar包

(12)nodemanager启动executor

(13)executor启动之后向ApplicationMaster(Driver)反向注册

(14)Driver端的代码经过一系列transfomation,遇到action形成一个DAG,DAGschedule按照依赖关系 切分stage,生成task,最后调度到executor中的线程池进行执行。

5)spark   on  yarn  client模式

  • 客户端提交一个Application,在客户端启动一个Driver进程。
  • Driver进程会向ResourceManager发送请求,启动ApplicationMaster的资源。
  • ResourceManager收到请求,随机选择一台NodeManager,然后该NodeManager到HDFS下载jar包和配置,接着启动ApplicationMaster【ExecutorLuacher】。这里的NodeManager相当于Standalone中的Worker节点。
  • ApplicationMaster启动后,会向ResourceManager请求一批container资源,用于启动Executor.
  • ResourceManager会找到一批符合条件NodeManager返回给ApplicationMaster,用于启动Executor。
  • ApplicationMaster会向NodeManager发送请求,NodeManager到HDFS下载jar包和配置,然后启动Executor。
  • Executor启动后,会反向注册给Driver,Driver发送task到Executor,执行情况和结果返回给Driver端

spark on yarn 配置及提交任务

配置hadoop

需要在/etc/profile中配置HADOOP_CONF_DIR的目录,目的是为了让Spark找到core-site.xml、hdfs-site.xml和yarn-site.xml【让spark知道NameNode、ResourceManager】

关闭内存资源检测

修改yarn-site.xml

修改capacity-scheduler.xml

配置一个yarn的container可以使用多个vcores,因为capacity schedule使用的是DefaultResourceCalculator,那么DefaultResourceCalculator它在加载Container时其实仅仅只会考虑内存而不考虑vcores,默认vcore就是1。yarn 默认情况下,只根据内存调度资源,所以 spark on yarn 运行的时候,即使通过--executor-cores 指定 core 个数为 N,但是在 yarn 的资源管理页面上看到使用的 vcore 个数还是 1

将配置文件进行分发

打包wordcount程序并上传到linux01上

在集群上提交程序

./spark-submit --master yarn --deploy-mode cluster --executor-memory 1g --executor-cores 2 --num-executors 3 --class cn._doit19.demo01.WordCount /root/wordcount.jar hdfs://linux01:8020/word/   hdfs://linux01:8020/out20210102

--deploy-mode cluster 必须要指定,否则为client模式

最终输出结果:

更多学习、面试资料尽在微信公众号:Hadoop大数据开发

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值