【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包含的是                  

猜你喜欢

转载自bit1129.iteye.com/blog/2179453
今日推荐