Spark运行架构
- driver和executor概念
1. 作为两大核心组件,driver是驱动器节点,执行spark的main方法,既启动程序。另外在过程中还能在executor之间调度任务task,跟踪executor的执行情况,在ui页面查看运行情况。
2. executor简单来说就是1)执行任务,并将任务结果返回给driver,2)可以通过自身块block manager为用户程序要求缓存的RDD提供内存存储,RDD是直接缓存在executor进程内的,这样提高运算效率。
细化来说就是集群中工作节点worker的JVM进程,运行task(注,任务是相互独立的),生命周期是spark启动而启动,结束而结束。
3. 常见的生产环境问题:executor节点如果发生故障,spark不会停止,会调度其他的executor来继续运行。如executorlost错误。
4.ApplicationMaster(AM)产生的原因:
driver和executor负责计算,而资源调用需要另外专业框架(如yarn)来管理,当向yarn集群提交应用程序时,提交的程序应该包含AM,用于向资源调度器申请执行任务task的资源容器containter,把这些资源用来运行自己的程序任务,监控任务的执行,跟踪任务的状态,结果等问题。
作用就是使得计算和资源两大模块解耦,充当中间者的角色。
- executor和core
executor:集群中工作节点worker的JVM进程,作用是用于计算;
spark-submit --master yarn --deploy-mode cluster --num-executors=23 --conf spark.executor.cores=2 --conf spark.executor.memory=6g
提交任务时,设置executors cores memory
资源就是指executors cores memory
- 运行流程
分为两大块,既资源和计算,当申请好资源,把计算交给资源即可。
图
- client和cluster
spark和yarn的相互结合使用,会有两种部署方式,区别在于driver程序运行的节点,运行在集群里面则为cluster,运行在集群之外则client;此处不深究,后期补充
该章节后期深入学习再补充!!!
版权声明:本文为Icedeny原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。