返回顶部

我的蜡笔丢了

  博客园  :: 首页  :: 新随笔  ::  :: 订阅 订阅  :: 管理

简述

  Spark应用程序在集群上会以独立的进程集运行,由SparkContext 主程序中对象(驱动程序)协调

  程序要在集群上运行时,SparkContext可以连接到几种类型的集群管理器 (Spark自己的独立集群管理器Mesos或YARN),它们可以在应用程序之间分配资源。一旦连接上之后,Spark会在集群的节点上获取对应的executor,它们是用于运行程序、计算和存储存储的进程;然后spark会将你的应用程序代码(由传递给SparkContext的JAR或Python文件定义)发送给executor,最后sparkContext将在executors上起task执行任务。

   

关于此体系结构,需要注意一些有用的事情:

  1. 每个应用程序都有其自己的executor进程,这些进程在整个应用程序期间保持不变,并以多线程运行任务。这样的好处是可以在调度方面(每个驱动程序调度自己的任务)和执行者方面(来自不同应用程序的任务在不同的JVM中运行)将应用程序彼此隔离。但是,如果不将数据写入外部存储系统,则无法在不同的Spark应用程序之间共享数据。
  2. Spark与基础集群管理器无关。只要它可以获取执行程序进程,并且它们彼此通信,即使在还支持其他应用程序(例如Mesos / YARN)的集群管理器上运行它,也是相对容易的。
  3. 驱动程序在其整个生命周期中必须侦听并接受其执行程序的传入连接因此,驱动程序必须是可从工作程序节点访问的网络。
  4. 由于驱动程序在集群上调度任务,因此应在工作节点附近运行,最好在同一局域网上运行。如果你是在远程操作,那么最好通过rpc将程序打包发送到工作节点上,启动driver提交程序,而不是远离工作节点启动。

集群模式

  • local
  • Spark on Mesos
  • Spark on Yarn
  • Kubernetes

Local模式

  这种模式,主要是用来简单的逻辑验证类的,也可以进行对Spark应用进行debug,这种模式主要用于代码调试和跟踪;不具备容错能力,不适用于生产环境。本地模式只有Driver,没有Master和Worker。执行任务的Executor与Driver在同一个JVM进程中。

设置local模式

//代码设置
conf.setMaster("local[*]");
//提交脚本设置
--master loacal[n]

  local[n],这个n代表线程数,也即它决定了你本地模式的并发度(能并行几个task),local内部不指定默认线程数为1,local[*]代表当前cpu的核心数个线程。

Standalone模式

  所谓Standalone模式,就是采用Spark的master-worker进行资源管理和应用的调度。具备容错能力并且支持分布式部署运行。Driver在集群之外,可以是任意的客户端程序。Master部署于单独的进程,甚至在单独的机器上,可以有多个,但只能有一个处于激活状态。Worker部署于单独的进程,推荐在单独的机器上部署。

资源配置 

  • 为Work配置资源

  用户必须为workers配置一组可用的资源,以便可以将它们分配给executors.该spark.worker.resource.{resourceName}.amount 用于控制工人已分配的每个资源的量。

用户还必须指定,spark.worker.resourcesFilespark.worker.resource.{resourceName}.discoveryScript指定Worker如何发现其分配的资源。  

  • 为特定应用程序分配资源

  在Spark Standalone上运行应用程序。标准Spark资源配置中的唯一特殊情况是在客户端模式下运行驱动程序时。对于处于客户端模式的驱动程序,用户可以通过spark.driver.resourcesfile或指定其使用的资源spark.driver.resource.{resourceName}.discoveryScript。如果驱动程序与其他驱动程序在同一主机上运行,​​请确保资源文件或发现脚本仅返回与在同一节点上运行的其他驱动程序不冲突的资源。 

资源调度

  仅支持跨应用程序的简单FIFO调度程序。但是,要允许多个并发用户,您可以控制每个应用程序将使用的最大资源数量。默认情况下,它将获取群集中的所有内核,这仅在您一次只运行一个应用程序时才有意义。可以通过spark.cores.max在 SparkConf中进行设置来限制内核数量。

Spark on Yarn模式

  yarn模式是将任务管理与资源调度功能交给YARN框架进行处理的模式。分为yarn-client和yarn-cluster两种模式。

  yarn-client适用于交互、调试,希望立即看到应用的输出;

  yarn-cluster适用于生产环境。yarn-cluster模式下,driver运行在AM(ApplicationMaster)中,负责向YARN申请资源并监控作业的运行状况。当用户提交完作业后,就可以关闭client,作业会继续在YARN上运行。yarn-cluster模式不适合运行交互类型的作业。而在yarn-client模式下,AM(ApplicationMaster)仅仅向YARN请求executor,client会和请求的executor通信来调度工作,client不能离开。

posted on 2020-08-11 17:00  我的蜡笔丢了  阅读(280)  评论(0编辑  收藏  举报