zoukankan      html  css  js  c++  java
  • <Spark><Running on a Cluster>

    Introduction

    • 之前学习的时候都是通过使用spark-shell或者是在local模式运行spark
    • 这边我们首先介绍Spark分布式应用的架构,然后讨论在分布式clusters中运行Spark的options(Spark可以运行在多种cluster managers之上:Hadoop YARN,Apache Mesos,以及Spark自带的内置Standalone cluster manager)。之后我们还会讨论scheduling,deploying和configuring一个Spark应用的细节。

    Spark Runtime Architecture

    • a driver + its executor = a Spark application
    • 一个Spark应用通过使用一个外部服务--cluster manager来在一系列机器上运行

    The Driver

    • driver是你程序运行main()函数的进程,是用户代码创建SparkContext,创建RDDs,执行transformations和actions的进程
    • driver有两个职责:
      • 将一个用户程序转化成tasks:Spark program隐式地 创建一个Operations的逻辑有向无环图(DAG),当driver运行的时候,它会将该DAG转换成一个实际执行计划。Spark会执行一些优化,比如"pipelining“ map transformations together to merge them,并且将执行图转成一系列stages。每个stage由多个tasks组成。
      • Scheduling tasks on executors:给定一个实际执行计划,Spark driver必须将每个单独的tasks调度到executors上。当executors注册到driver之后,driver会对executors有complete view。Driver会查看当前的executors并且试图把每个task调度到合适的位置。

    Executors

    • Spark executors就是负责运行给定job中tasks的工作进程。Executors有两个角色:
      1. 运行tasks,并将结果返回到driver;
      2. 为用户程序缓存的RDDs提供in-memory storage:通过每个executor内部生存的Block Manager。

    Cluster Manager

    • Spark依赖一个cluster manager来launch executors,并且在某些情况下,来launch driver。

    Launching a Program

    • 不管你使用何种cluster manager,你都可以使用spark-submit脚本来提交你的程序。

    Summary

    1. 用户使用spark-submit提交一个application;
    2. spark-submit启动driver program并invokes用户指定的main()函数;
    3. driver program与cluster manager联系来获取启动executors的资源;
    4. cluster manager代表driver program启动executors;
    5. driver进程run through user application,基于程序中的RDD actions和transformations,driver将work以tasks的形式发送给executors;
    6. tasks在executor进程中被运行,并计算和保存结果;
    7. 如果driver的主函数退出或调用了SparkContext.stop()方法,那么executors会被终止,资源将会从cluster manager中被释放。

    Deploying Applications with Spark-submit

    满地都是六便士,她却抬头看见了月亮。
  • 相关阅读:
    iOS tableViewCell自适应高度 第三发类库
    iOS 用 SDWebImage 清理图片缓存
    iOS JsonModel 的使用
    Objective-C语法之KVO使用
    iOS开发之 用第三方类库实现轮播图
    OS开发UI篇—使用UItableview完成一个简单的QQ好友列表
    iOS tableView 静态单元格的实现
    iOS沙盒目录结构解析
    ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
    AFNetworking 3.0.4 的使用
  • 原文地址:https://www.cnblogs.com/wttttt/p/6851672.html
Copyright © 2011-2022 走看看