美文网首页Spark
2.Spark与Hadoop的对比

2.Spark与Hadoop的对比

作者: 山间浓雾有路灯 | 来源:发表于2019-05-28 17:25 被阅读0次

    上一篇文章---Spark概述:https://www.jianshu.com/p/8f48abff7a5b

    这篇文章主要是与MapReduce和Hadoop的名词对比

    先从一张图了解下Spark和MapReduce的比较 spark VS mr.jpg

    再从一张图了解一下Spark的运行原理


    5255ddb6-8b08-4524-b5a5-0e4bd53ff5aa-2500378.jpg

    从这张图我们再进一步进行分析Spark和Hadoop的区别

    Hadoop

    1.一个MapReduce程序就是一个job,而一个job里面可以有一个或者多个task,task又可以区分为map task和reduce task
    2.MapReduce中的每个task分别在自己的进程中运行,当该task运行完时,进程也就结束

    Spark

    Application

    在SPark中,一个任务叫Application,也就是spark-submit提交的程序

    Driver

    完成任务的调度以及和executor和cluster manager进行协调
    1.(驱动程序)是Spark的核心组件
    2.构建SparkContext(Spark应用的入口,创建需要的变量,还包含集群的配置信息等)
    3.将用户提交的job转换为DAG图
    4.根据策略将DAG图划分为多个stage,根据分区从而生成一系列tasks
    5.根据tasks要求要RM申请资源
    6.提交任务并检测任务状态

    Executor

    1.每个Spark executor作为一个Yarn容器(container运行)
    2.真正执行task的单元,一个节点上会包含多个container,一个container包含一个executor

    Job

    1.一个action算子就算一个job,例如count,first
    2.每个action相当于一个阶段性的结束
    3.由多个stage组成

    Task

    1.Spark中最小的执行单元,是一个线程
    2.RDD一般是带有partitions的,每个partitions在一个executor上的执行可以认为是一个task

    Stage

    1.Stage是Spark独有的
    2.一般而言一个Job会切换成一定数量的stage
    3.各个stage之前按照顺序执行
    4.对应一个taskset,一个stage是对task的包装,taskset对应一组关联的相互之间没有shuffle依赖关系的task组成


    images

    这里涉及到一个宽窄依赖的概念,窄依赖都是一对一的,比如stage1和stage2。宽依赖需要依赖前面其他节点的数据,比如stage3需要依赖stage1和stage2的数据。
    其实stage表示一个阶段,内部有一些并发的数据处理,stage和stage之间有一定的数据依赖关系,stage可以理解成一个DAG有向无环图

    下一章开始学习Spark Core相关的知识,敬请期待!

    相关文章

      网友评论

        本文标题:2.Spark与Hadoop的对比

        本文链接:https://www.haomeiwen.com/subject/kxkdtctx.html