【Spark二九】涂鸦

 
涂鸦一
1. Spark为什么如此之外

a.基于内存

Spark将数据加载到内存中之后,此后的计算都在内存中进行,这就非常适合递归迭代的计算任务,同时对交互式即席查询型任务也能做到将数据加载到内存中,如下图所示。

b. DAG

Spark在内部将对数据的操作绘制成一张有向无环图,只有在真正需要结果的时候,才对数据依次执行这些操作。也就是说,在有向无环图中,除非需要结果而不得不进行计算时才会进行计算。否则只是进行标记操作

中间结果可复用

c. Scheduler.

任务调度系统更加细致。一个Work节点的虚拟机可以放多个任务(Task)而平行执行,它是线程级的并行,而在Hadoop中,一个任务必须开启一个虚拟机,不同的任务之间由于位于不同的JVM进程空间,只能依靠HDFS来共享数据。

在Spark中,一个作业(Job)的不同Task位于同一个虚拟机中,由于这些任务位于同一个JVM进程,因此它们可以共享JVM进程的内存空间,这样带来两个好处

1).启动任务,只需启动一个线程,这样带来的成本更低(跟Hadoop启动JVM做比较),实际上,Spark也不是启动任务启动线程,因为Spark使用线程池。

2).任务之间共享内存很容易,因为这些任务同属于一个进程内。

d.lineage(容错处理)

简单说,那个处理失败就重新计算哪个,而无需从头开始计算

A->B->C->D,假设计算D时,C出现问题,按照Hadoop的做法,此时ABCD都要重新计算,而对于Spark,只需要重新计算C,而无需计算A和B

 

2、 RDD

RDD可以看成Spark中内存的一个对象,如果RDD很大,那么Spark会Spill到磁盘中。

RDD的五个特性,其中一个是Partitioner,用于指定分区器。另外一个preferredLocation,它的含义是可以为RDD指定优先去哪里读数据,这是程序员干预数据本地性的一种手段。

RDD中的每个分片对应一个任务,也就是RDD处理的并行度是由分片决定的

RDD的DAG(静态)是在Driver Program中由SparkContext完成的,Driver提交作业给DAGScheduler是,已经是绘制好的DAG图,DAGScheduler会把静态的DAG图,切分为不同的Stage。

 

 

3. Driver、Master

a.Driver和Master有何区别?

b.Driver给Worker分配计算任务,而且Worker汇报计算给Driver,也就是说,Driver和Worker直接打交道以实现任务的分配和结果的汇报?

 
 
在这个图上有个关键的点事DAGScheduler运行于Master节点???不对,SparkContext持有DAGScheduler的实例,不是通过发消息的方式给DAGScheduler提交任务的

 4.ShuffledMapTask和ReduceTask都运行与线程池中,也就是说它们都在Workder的Executor的线程池中运行
 

涂鸦二

 

RDD之间的依赖关系有两种
    ShuffleDependency
        将Stage分开,划分为不同的Stage
    NarrowDependency
         将RDD划入到当前的Stage
Stage回溯是从后向前
DAGScheduler首先提交没有依赖的Stage,如果没有父Stage或者父Stage已经执行完,则提交这个Stage。计算从前往后。


把Stage如何从StageScheduler获取到
Task是通过Broadcat广播出去?所以在executor中能够获取到?



Driver是作业的主进程,创建SparkContext,解析计算生成RDD的DAG,作业的划分到不同的Stage,然后通过LaunchTask提交到Executor执行。
Driver包括作业和Executor两部分


Driver的两个层次,第一个层次是SparkContext以及围绕sc创建的sparkconf和sparkenv
第二层次是DAScheduler、TaskScheduler以及deploy部署模块,deploy部署模块给TaskScheduler使用以提交哦
作业。

Driver是Client的一部分,跟Client同一个进程(这是在client模式下吧)???


SparkContext是把用户编写的程序提交给Spark集群运行的通道



SparkConf读取java system properties的逻辑是什么?即读取哪些system properties。提交任务时
提交的参数是否会被SparkConf解析。在SparkConf中。

    设置executorEnv参数,executorEnv参数以spark.executorEnv开头
    设置AkkaEnv参数
    设置spark.driver.host以及spark.driver.port
    设置spark.master

SparkEnv包含的是
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值