zoukankan      html  css  js  c++  java
  • spark架构

    在分布式环境下,Spark 集群采用的是master/slave结构。Master是对应集群中的含有master进程的节点,slave是集群中含有worker进程的节点。Master作为整个集群的控制器,负责整个集群的正常运行;worker相当于是计算节点,接收主节点命令与进行状态汇报,client作为用户的客户端负责提交应用。
    在一个 Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调节点被称为驱动器(Driver)节点,与之对应的工作节点被称为执行器(executor)节点。驱动器节点可以和大量的执行器节点进行通信,它们也都作为独立的 Java 进程运行。驱动器节点和所有的执行器节点一起被称为一个 Spark 应用(application)。其中executor负责任务的执行;driver负责控制一个应用的执行。
    Spark 应用通过一个叫作集群管理器(Cluster Manager)的外部服务在集群中的机器上启动。Spark 自带的集群管理器被称为独立集群管理器。Spark 也能运行在 Hadoop YARN 和Apache Mesos 这两大开源集群管理器上。
    Spark集群部署后,需要在主节点和从节点分别启动master进程和worker进程,对整个集群进行控制。在一个spark应用的执行过程中,driver和worker是两个重要角色。Driver程序是应用逻辑执行的起点,负责作业的调度,即task任务的分支,而多个worker用来管理计算节点和创建executor并行处理任务。在执行阶段,driver会将task和task所依赖的file和jar包序列化后传递给对应的worker机器,同时executor对相应数据分区的任务进行处理。

    具体如下图所示:

    各个组件的介绍如下:
    1)Clustermanager:在standalone模式中即为master(主节点),控制整个集群,监控worker。在yarn或者mesos模式中为资源管理器。
    2)Worker:从节点,负责控制计算节点,启动executor或driver。在yarn模式中为nodemanager,负责计算节点的控制。
    3)Driver:运行application的main()函数并创建sparkContext.
    4)Executor:执行器,在worker node上执行任务的组件、用于启动线程池运行任务。每个application拥有独立的一组executors。
    5)sparkContext:整个应用的上下文,控制应用的生命周期。
    6)RDD DAG:spark的基本计算单元是RDD,一组RDD可形成执行的有向无环图RDD DAG。
    7)DAG Scheduler:根据作业(Job)构建基于stage的DAG,并提交stage给taskscheduler。
    8)Taskscheduler:将任务(Task)分发给executor执行。
    9)sparkEnv:线程级别的上下文,存储运行时的重要组件的引用。
    sparkEnv内创建并包含如下一些重要组件的引用:
    10)Mapoutputtracker:负责shuffle元信息的存储。
    11)BroadcastManager:负责广播变量的控制与元信息的存储
    12)Blockmanager:负责存储、管理、创建和查找块。
    13)metricsSystem:负责运行时性能指标信息。
    14)sparkConf;负责存储配置信息。
     
    Spark处理任务的整体流程:
    client提交应用,master找到一个worker启动driver,driver向master或者资源管理器申请资源,之后将应用转化为RDD Graph,再由DAGScheduler将RDD Graph转化为stage的有向无环图提交给taskscheduler,由taskscheduler提交任务到executor执行。在任务执行的过程中,其他组件协同工作,确保整个应用顺利执行。
  • 相关阅读:
    单调栈
    单调队列
    线段树
    树状数组
    KMP模式匹配
    二分图最大匹配
    celery发送短信接口
    celery配置与基本使用
    celery介绍
    短信验证接口
  • 原文地址:https://www.cnblogs.com/hadoop-dev/p/6723062.html
Copyright © 2011-2022 走看看