zoukankan      html  css  js  c++  java
  • Spark学习笔记(一)--Spark架构

    Spark架构采用了分布式计算中的Master-Slave模型。Master是对应集群中的含有Master进程的节点,Slave是集群中含有Worker进程的节点。Master作为整个集群的控制器,负责整个集群的正常运行;Worker相当于是计算节点,接收主节点命令与进行状态汇报;Executor负责任务的执行;Cluster作为用户的客户端负责提交应用,Driver负责控制一个应用的执行。具体如下图


    Spark架构图

    Spark集群部署后,需要在主节点和从节点分别启动Master进程和Woker进程,对整个集群进行控制。在一个Spark应用的执行过程中,Driver和Worker是两个重要角色。Driver程序是应用逻辑执行的起点,负责作业的调度,即Task任务的分发,而多个Worker用来管理计算节点和创建Executor并行处理任务。在执行阶段,Driver会将Task和Task所依赖的
    file和jar序列化后传递给对应的Worker机器,同时Exucutor对相应数据分区的任务进行处理。

    下面详细介绍Spark的架构中的基本组件。

    • ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。

    • Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。

    -Driver :运行Application的main()函数并创建SparkContext

    -Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。

    -SparkContext:整个应用的上下文,控制应用的生命周期。

    -RDD:Spark的基本计算单元,一组RDD可形成执行的有向五环RDD Graph

    -DAG Scheduler:根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler

    -TaskScheduler:将任务(Task)分发给Executor执行

    -SparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
    SparkEnv内创建并包含如下的一些重要组件的引用。

    -MapOutPutTracker:负责Shuffle元信息的存储。

    -BroadcastManager:负责广播变量的控制与元信息的存储。

    -BlockManager:负责储存管理、创建和查找块。

    -MetricsSystem:监控运行时性能指标信息。

    -SparkConf:负责存储配置信息。

    Spark整体流程为:Client提交应用,Master找到一个Worker启动Driver,Driver向Master或者资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为Stage的有向无环图提交给TaskScheduler,由TaskScheduler提交任务给Executor执行。在任务执行过程中,其他组件协同工作,确保整个应用顺利进行。

    Spark运行逻辑

    在Spark应用中,整个执行流程在逻辑上会形成有向无环图(DAG)。
    Action算子触发之后,将所有累积的算子形成一个有向无环图,然后由调度器调度该图上的任务进行运算。Spark的调度方式与MapReduce有所不同。Spark根据RDD之间不同的依赖关系切分成不同的阶段(Stage),一个阶段包含一系列函数执行流水线。图中的A、B、C、D、E、F分别代表不同的RDD,RDD的方框代表分区。数据从HDFS输入Spark,形成RDD A 和 RDD C,RDD C上执行map操作,转换为RDD D

  • 相关阅读:
    fstream之seekp/seekg/ios::ate/ios::app
    undefined reference to `shm_unlink'
    extern "C"用法
    CentOS 6.2 安装kdbg
    ROW模式的SQL无法正常同步的问题总结
    Mysql之sync-binlog参数
    本地连接远程环境mysql报错:Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
    64位linux下rpm安装mysql的5.5.55版本所遇到的坑
    jquery中ajax异步调用接口
    jquery调用spring mvc接口返回字符串匹配
  • 原文地址:https://www.cnblogs.com/ainima/p/6331790.html
Copyright © 2011-2022 走看看