Spark的笔记02

1.基于Yarn提交Spark任务的配置?
​ 在Spark的客户端 …/spark/conf/spark-env.sh 配置:
​ export HAOOP_CONF_DIR = $HADOOP_HOME/etc/hadoop

命令:./spark-submit --master yarn --class jar 参数

2.Spark基于Standalone提交任务两种方式及二张图。

  • client

    • 命令

      ​ 1)./spark-submit --master yarn --class …jar …

      ​ 2)./spark-submit --master yarn-client --class …jar

      ​ 3)./spark-submit --master yarn --deploy-mode client --class …jar

    • 过程

      ​ 1.在客户端提交Spark application,首先Driver在客户端启动

      ​ 2.客户端向ResourceManager申请启动ApplicationMaster ,ResouceManager收到请求之后,随机找到一台NodeManager启动ApplicationMaster

      ​ 3.ApplicationMaster启动之后,向ResouceManager 申请资源用户启动Executor

      ​ 4.ResouceManager收到请求之后返回给ApplicationMaster一批nodeManager

      ​ 5.ApplicationMaster连接这些NodeManager节点启动Executor

      ​ 6.Executor启动之后反向注册给Driver,Driver发送task,监控task,回收结果

    • 注意

      ​ client模式,当在客户端提交多个Spark application时,也会有单节点网卡流量激增问题,在客户端可以看到task的执行和结果

    cluster

    • 命令

      ​ 1)./spark-submit --master yarn-cluster --class …jar …

      ​ 2)./spark-submit --master yarn --deploy-mode cluster --class …jar …

    • 过程

      ​ 1.在客户端提交Spark Application,首先客户端向ResourceManager申请启动ApplicationMaster

      ​ 2.ResouceManager随机找到一台NodeManager节点启动ApplicationMaster (Driver)

      ​ 3.ApplicationMaster启动之后,向ResourceManager申请资源用于启动Executor

      ​ 4.ResourceManager收到请求之后,返回给ApplicationMaster一批NodeManager节点

      ​ 5.ApplicationMaster找到这些节点,启动Executor

      ​ 6.Executor启动之后,反向注册给ApplicationMaster(Driver)

      ​ 7.Application Master 发送task,监控task执行,回收结果

    • 注意

      ​ cluster模式,当在客户端提交多个Spark application 时,将client模式的单节点网卡流量激增问题分散到集群中,在客户端看不到task的执行和结果,要去webui中查看

3.Spark基于Yarn提交任务两种方式及二张图。

  • client

    • 命令

      ​ 1)./spark-submit --master yarn --class …jar …

      ​ 2)./spark-submit --master yarn-client --class …jar

      ​ 3)./spark-submit --master yarn --deploy-mode client --class …jar

    • 过程

      ​ 1.在客户端提交Spark application,首先Driver在客户端启动

      ​ 2.客户端向ResourceManager申请启动ApplicationMaster ,ResouceManager收到请求之后,随机找到一台NodeManager启动ApplicationMaster

      ​ 3.ApplicationMaster启动之后,向ResouceManager 申请资源用户启动Executor

      ​ 4.ResouceManager收到请求之后返回给ApplicationMaster一批nodeManager

      ​ 5.ApplicationMaster连接这些NodeManager节点启动Executor

      ​ 6.Executor启动之后反向注册给Driver,Driver发送task,监控task,回收结果

    • 注意

      ​ client模式,当在客户端提交多个Spark application时,也会有单节点网卡流量激增问题,在客户端可以看到task的执行和结果

  • cluster

    • 命令

      ​ 1)./spark-submit --master yarn-cluster --class …jar …

      ​ 2)./spark-submit --master yarn --deploy-mode cluster --class …jar …

    • 过程

      ​ 1.在客户端提交Spark Application,首先客户端向ResourceManager申请启动ApplicationMaster

      ​ 2.ResouceManager随机找到一台NodeManager节点启动ApplicationMaster (Driver)

      ​ 3.ApplicationMaster启动之后,向ResourceManager申请资源用于启动Executor

      ​ 4.ResourceManager收到请求之后,返回给ApplicationMaster一批NodeManager节点

      ​ 5.ApplicationMaster找到这些节点,启动Executor

      ​ 6.Executor启动之后,反向注册给ApplicationMaster(Driver)

      ​ 7.Application Master 发送task,监控task执行,回收结果

    • 注意

      ​ cluster模式,当在客户端提交多个Spark application 时,将client模式的单节点网卡流量激增问题分散到集群中,在客户端看不到task的执行和结果,要去webui中查看

4.Spark中的术语
​ 1)Application:基于Spark的⽤用户程序,包含了driver程序和运行在集群上的executor程序
​ 2)job:包含很多任务(Task)的并行计算,可以看做和action对应
​ 3)stage:⼀个Job会被拆分很多组任务,每组任务被称为Stage(就像Mapreduce分map task 和reduce task一样)
​ 4)task:被送到某个executor上的工作单元
​ 5)Master:资源管理的主节点(进程)
​ 6)Worker:资源管理的从节点(进程) 或者说管理本机资源的进程
​ 7)Executor:是在一个worker进程所管理的节点上为某Application启动的⼀一个进程,该进 程负责运行任务,并且负责将数据存在内存或者磁盘上。每个应⽤用都有各自独⽴立的 executors

​ 8)ThreadPool:线程池,存在与Executor进程中,task在线程池中运行

任务层面:Application -> job -> stage -> tasks
资源层面:Master -> Worker -> Executor -> Threadpool

5.RDD的宽窄依赖,各自的特点。
​ rdd宽依赖(shuffle): 父RDD与子RDD partition之间的关系是一对多.
​ rdd窄依赖(没有shuffle): 父RDD与子RDD partition之间的关系是一对一或者多对一.

6.什么是Stage 及 Spark计算模式?

​ stage是由一组并行的task组成.Spark任务会根据RDD之间的依赖关系,形成一个DAG有向无环图,DAG会提交给DAGScheduler,DAGScheduler会把DAG划分相互依赖的多个stage,划分stage的依据就是RDD之间的宽窄依赖。遇到宽依赖就划分stage,每个stage包含一个或多个task任务。然后将这些task以taskSet的形式提交给TaskScheduler运行。

​ 切割规则:从后往前,遇到宽依赖就切割stage。

​ stage中处理模式:pipeline管道处理数据模型,迭代器模式

​ stage的并行度由stage中finalRDD的partition个数决定

​ 提高stage的并行度:

​ 1.增大RDD的partition就可以

​ 2.reduceByKey

​ 3.join

​ 4.distinct map+reduceByKey+map

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值