Spark有三种集群部署模式,或者叫做集群管理模式。分别是standalone,YARN和Mesos。这三种模式其实都是master/slave模式。

Spark的三种集群deploy形式比照(spark deploymode)  Spark 集群管理模式 第1张

Spark有三种集群布置形式,或许叫做集群办理形式。分别是standalone,YARN和Mesos。这三种形式其实都是master/slave形式。

Spark的三种集群deploy形式比照(spark deploymode)  Spark 集群管理模式 第2张

那么在实践的项目中,咱们该怎么比照挑选呢?下面是我的一些总结,首要参阅了:

Which Apache Spark Cluster Managers Are The Right Fit? YARN, Mesos, or Standalone?

三种集群资源办理概述

Spark的三种集群deploy形式比照(spark deploymode)  Spark 集群管理模式 第3张

Spark Standalone

作为Spark的一部分,Standalone是一个简略的集群办理器。它具有master的HA,弹性应对WorkerFailures,对每个运用程序的办理资源的才能,而且能够在现有的Hadoop一同运转和拜访HDFS的数据。该发行版包含一些脚本,能够很容易地布置在本地或在AmazonEC2云核算。它能够在Linux,Windows或Mac OSX上运转。

Apache Mesos

Apache Mesos ,分布式体系内核,具有HA的masters和slaves,能够办理每个运用程序的资源,并对Docker容器有很好的支撑。它能够运转Spark作业, Hadoop的MapReduce的,或任何其他服务的运用程序。它有Java, Python和C ++ 的API。它能够在Linux或Mac OSX上运转。

Hadoop YARN

Hadoop YARN,作业调度和集群资源办理的分布式核算结构,具有HA为masters和slaves,在非安全形式下支撑Docker容器,在安全形式下支撑 Linux和Windows container executors,和可插拔的调度器。它能够运转在Linux和Windows上运转。

集群资源调度才能的比照

形式资源调度才能比对SecurityHA

  • standalone 只支撑FIFO调度器,单用户串行,默许一切节点的一切资源对运用都可用,node节点的约束,cpu内存等约束能够经过SparkConf来操控 shared secret ,SSL for data encryptionStandby Masters with ZooKeeper和本地文件体系的单点康复
  • YARN 支撑资源调度器Scheduler,运用办理器ApplicationsManager。CapacityScheduler和 FairScheduler在行列的范围内,资源共享。Kerberos。SSL for data encryption主备切换的HA方法,依赖于zookeeper,但不需求独自的zkfc进程
  • Mesos看下方:插件式安全模块,默许Cyrus SASL,SSL for data encryption一主多备,根据zookeeper的leader推举

Mesos的资源调度才能描绘

粗粒度形式(Coarse-grained Mode):每个运用程序的运转环境由一个Dirver和若干个Executor组成,其间,每个Executor占用若干资源,内部可运转多个 Task(对应多少个“slot”)。运用程序的各个使命正式运转之前,需求将运转环境中的资源悉数申请好,且运转过程中要一向占用这些资源,即便不必,***程序运转完毕后,收回这些资源。举个比方,比方你提交运用程序时,指定运用5个executor运转你的运用程序,每个executor占用5GB内存和5个CPU,每个executor内部设置了5个slot,则Mesos需求先为executor分配资源并发动它们,之后开端调度使命。别的,在程序运转过程中,mesos的master和slave并不知道executor内部各个task的运转状况,executor直接将使命状况经过内部的通讯机制报告给Driver,从必定程度上能够以为,每个运用程序运用mesos搭建了一个虚拟集群自己运用。

细粒度形式(Fine-grained Mode):鉴于粗粒度形式会形成很多资源糟蹋,Spark On Mesos还供给了别的一种调度形式:细粒度形式,这种形式类似于现在的云核算,思维是按需分配。与粗粒度形式相同,运用程序发动时,先会发动 executor,但每个executor占用资源仅仅是自己运转所需的资源,不需求考虑将来要运转的使命,之后,mesos会为每个executor动态分配资源,每分配一些,便能够运转一个新使命,单个Task运转完之后能够立刻开释对应的资源。每个Task会报告状况给Mesos slave和Mesos Master,便于愈加细粒度办理和容错,这种调度形式类似于MapReduce调度形式,每个Task彻底独立,长处是便于资源操控和阻隔,但缺陷也很明显,短作业运转推迟大。

笔者总结

  • 从比照上看,mesos好像是Spark更好的挑选,也是被官方引荐的
  • 但假如你一起运转hadoop和Spark,从兼容性上考虑,Yarn好像是更好的挑选,毕竟是亲生的。Spark on Yarn运转的也不错。
  • 假如你不只运转了hadoop,Spark。还在资源办理上运转了docker,Mesos好像愈加通用。
  • standalone小规模核算集群,好像更适合!
转载请说明出处
知优网 » Spark的三种集群deploy形式比照(spark deploymode)

发表评论

您需要后才能发表评论