spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

 

    1.Spark基于Standalone提交任务
        1).client
            命令:
                ./spark-submit --master spark://node1:7077 --class ... jar ... 参数
                ./spark-submit --master spark://node1:7077 --deploy-mode client --class .. jar .. 参数
            过程:
                a).在客户端提交Spark应用程序,会在客户端启动Driver。
                b).客户端向Master申请资源,Master找到资源返回。
                c).Driver发送task。
            注意:
                client方式提交任务,在客户端提交多个application,客户端会为每个application都启动一个Driver,Driver与集群Worker节点有大量通信,这样会造成客户端网卡流量激增。client方式提交任务适用于程序测试,不适用于真实生产环境。在客户端可以看到task执行情况和计算结果。
                spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)
        2).cluster
            命令:
                ./spark-submit --master spark://node1:7077 --deploy-mode cluster --class ... jar ... 参数
            过程:
                a).客户端提交application,客户端首先向Master申请启动Driver
                b).Master收到请求之后,随机在一台Worker节点上启动Driver
                c).Driver启动之后,向Master申请资源,Master返回资源。
                d).Driver发送task.
            注意:
                cluster方式提交任务,Driver在集群中的随机一台Worker节点上启动,分散了client方式的网卡流量激增问题。
                cluster方式适用于真实生产环境,在客户端看不到task执行情况和执行结果,要去WEBUI中去查看。spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

2.Spark基于Yarn提交任务
        1).client
            命令:
                ./spark-submit --master yarn --class ... jar ... ....
                ./spark-submit --master yarn-client --class ...jar .... 
                ./spark-submit --master yarn --deploy-mode client --class ..jar ... 
            过程:
                a).客户端提交application,Driver会在客户端启动
                b).客户端向ResourceManager申请启动ApplicationMaster
                c).ResourceManager收到请求之后,随机在一台NodeManager中启动ApplicationMaster
                d).ApplicationMaster启动之后,向ResourceManager申请资源,用于启动Executor
                e).ResourceManager收到请求之后,找到资源返回给ApplicationMaster
                f).ApplicationMaster连接NodeManager启动Executor
                g).Executor启动之后会反向注册给Driver
                h).Driver发送task到Executor执行
            注意:
                client方式提交任务,在客户端提交多个application,客户端会为每个application都启动一个Driver,Driver与集群Worker节点有大量通信,这样会造成客户端网卡流量激增。client方式提交任务适用于程序测试,不适用于真实生产环境。在客户端可以看到task执行情况和计算结果。
            总结:
                Driver功能:
                    i).发送task
                    ii).监控task,回收结果
                    iii).申请资源

spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)
        2).cluster
            命令:
                ./spark-submit --master yarn-cluster --class ...jar .... .. 
                ./spark-submit --master yarn --deploy-mode cluster --class ..jar ... .. 
            过程:
                a).客户端提交Application,首先客户端向ResourceManager申请启动ApplicationMaster
                b).ResourceManager收到请求之后,随机在一台NodeManager中启动ApplicationMaster,这里ApplicationMaster就相当于是Driver
                c).ApplicationMaster启动之后,向ResourceManager申请资源,用于启动Executor
                d).ResourceManager收到请求之后,找到资源返回给ApplicationMaster
                e).ApplicationMaster连接NodeManager启动Executor
                f).Executor启动之后会反向注册给ApplicationMaster(Driver)
                g).Driver发送task到Executor执行
            注意:
                cluster方式提交任务,Driver在集群中的随机一台Worker节点上启动,分散了client方式的网卡流量激增问题。
                cluster方式适用于真实生产环境,在客户端看不到task执行情况和执行结果,要去WEBUI中去查看。
            总结:
                ApplicationMaster的作用:
                    i).申请资源
                    ii).启动Executor
                    iii).任务调度

 spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

     4.RDD宽窄依赖
        宽依赖(shuffle):
            父RDD与子RDD partition之间的关系是一对多
        窄依赖:
            父RDD与子RDD partition之间的关系是一对一
            父RDD与子RDD partition之间的关系是多对一

spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

如果您觉得此博客有用,那就鼓励一下我呗。

spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)

5.Stage
        1).Stage是由一组并行的task组成的。RDD之间依赖关系形成一个DAG有向无环图,DAG有向无环图按照RDD之间的宽窄依赖划分stage。
        2).spark计算模式:
            pipeline管道计算模式,相当于高阶函数展开方式计算
                思想,1+1+1=3 
                MR:1+1=2 2+1=3
        3).在管道中的数据什么时候落地?
            a).shuffle write
            b).对RDD持久化
        4).Stage的并行度?由stage中的finalRDD中partition个数决定的。
        5).如何提高stage的并行度?
            reduceByKey(xx,numpartitions),groupByKey(xx,numpartitions),join(xx,numpartition) 

spark基于standalone模式提交任务和基于yarn模式提交任务的比较,spark的宽窄依赖,spark的计算模式等(图解+文字说明)