Spark:部署和standalone配置调优

  1. spark可以不进行任何配置,直接运行,这时候spark像一个java程序一样,是直接运行在VM中的。

  2. spark还支持提交任务到YARN管理的集群,称为spark on yarn模式。

  3. spark还支持Mesos管理的集群,Mesos和YARN一样都是管理集群资源的。

  4. 另外spark自己提供了一种完整的集群管理模式,就是standalone模式。
    这时候spark的运行不依赖于Hadoop YARN,需要配置$SPARK_HOME/conf/slaves文件指定从节点,然后用$SPARK_HOME/sbin/start-all.sh启动spark集群管理服务。


standalone模式下

  • master
    负责整体的分配资源 ,不会进行计算,不用设置很大内存和核心数:
  • worker
    负责从节点的资源分配,创建excutor。
  • excutor
    负责执行任务。

$SPARK_HOME/conf/spark-env.sh中配置项

  • SPARK_WORKER_CORES
    每个worker能用cpu核心数,不配置默认为此节点所在机器的全部核心数。

  • SPARK_WORKER_MEMORY
    每个worker最多能申请的内存

  • SPARK_WORKER_INSTANCES
    本台机器能最多能运行的worker数量,默认为1,若设置为大于1则需要多次运行启动worker命令才能启动多个worker,此时每个worker可用最大核心数需要设置,否则若此机器上所有worker申请的核心数大于此机器物理核心数会报错。(据说高版本spark支持一个worker上启动多个executor,那样的话这个选项就没有存在意义了。未测试。)

默认情况,每个机器只有一个worker,提交一个spark应用,最多为每个worker分配一个executor。

每个spark应用最少会独占一个core,若要同时提交多个spark应用,则所有应用占用的cores不能超过worker能申请的所有cores,否则会报错。
spark应用可以在提交时通过--total-executor-cores参数指定用的总core数量。若不指定则会用光所有剩下的cores。

一个worker运行executor的数量不会超过同时提交的spark应用数量。

spark-submit参数

  • --executor-memory
    每个executor分配内存,若超过worker可用剩余内存则不会提交给此worker,若不可提交给任意worker则报错
  • --driver-memory
  • --driver-cores
  • --total-executor-cores
  • --class

对于spark on yarn模式没有worker,因为是yarn来控制executor的。

posted @ 2019-01-04 17:24  xuejianbest  阅读(1295)  评论(0编辑  收藏  举报