• Spark资源管理


    Spark资源管理

    1、介绍

    Spark资源管控分为spark集群自身可支配资源配置和job所用资源配置。

    2、spark集群支配资源控制

    在spark的conf/spark-env.sh文件中可以指定master和worker的支配资源数。

    2.1 Spark集群可支配资源配置

    1. 每个worker使用内核数

      # 每个worker使用的内核数,默认是所有内核。
      export SPARK_WORKER_CORES=6
      
    2. 每个worker所用内存数

      # 每个worker使用的内存数,默认是1g内存
      export SPARK_WORKER_MEMORY=6g
      
    3. 每个节点可以启动worker实例的个数

      #是否可以在一个节点启动几个worker进程,默认1
      export SPARK_WORKER_INSTANCES=2
      
    4. spark守护进程本身占用的内存数

      spark守护进程指的是master和worker进程,该进程自身使用内存数也可以进行控制。

      #master和worker进程本身的内存数 ,默认1g
      export SPARK_DAEMON_MEMORY=200m
      

    spark/conf/spark-env.sh配置全部内容如下:

    #!/usr/bin/env bash
    
    #
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #    http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    
    # This file is sourced when running various Spark programs.
    # Copy it as spark-env.sh and edit that to configure Spark for your site.
    
    export JAVA_HOME=/soft/jdk
    # Options read when launching programs locally with
    # ./bin/run-example or ./bin/spark-submit
    # - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
    # export HADOOP_CONF_DIR=/soft/hadoop/etc/hadoop
    # - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
    # - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
    # - SPARK_CLASSPATH, default classpath entries to append
    
    # Options read by executors and drivers running inside the cluster
    # - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
    # - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
    # - SPARK_CLASSPATH, default classpath entries to append
    # - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
    # - MESOS_NATIVE_JAVA_LIBRARY, to point to your libmesos.so if you use Mesos
    
    # Options read in YARN client mode
    # - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
    # - SPARK_EXECUTOR_INSTANCES, Number of executors to start (Default: 2)
    # - SPARK_EXECUTOR_CORES, Number of cores for the executors (Default: 1).
    # - SPARK_EXECUTOR_MEMORY, Memory per Executor (e.g. 1000M, 2G) (Default: 1G)
    # - SPARK_DRIVER_MEMORY, Memory for Driver (e.g. 1000M, 2G) (Default: 1G)
    
    # Options for the daemons used in the standalone deploy mode
    # - SPARK_MASTER_HOST, to bind the master to a different IP address or hostname
    
    # - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
    #export SPARK_MASTER_PORT=7077
    #export SPARK_MASTER_WEBUI_PORT=8080
    
    # - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
    
    # - SPARK_WORKER_CORES, to set the number of cores to use on this machine
    export SPARK_WORKER_CORES=6
    
    # - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
    export SPARK_WORKER_MEMORY=6g
    
    # - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
    
    # - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
    export SPARK_WORKER_INSTANCES=1
    
    # - SPARK_WORKER_DIR, to set the working directory of worker processes
    # - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
    
    # - SPARK_DAEMON_MEMORY, to allocate to the master, worker and history server themselves (default: 1g).
    export SPARK_DAEMON_MEMORY=200m
    
    # - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
    # - SPARK_SHUFFLE_OPTS, to set config properties only for the external shuffle service (e.g. "-Dx=y")
    # - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
    # export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=s102:2181,s103:2181,s104:2181 -Dspark.deploy.zookeeper.dir=/spark"
    # - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers
    
    # Generic options for the daemons used in the standalone deploy mode
    # - SPARK_CONF_DIR      Alternate conf dir. (Default: ${SPARK_HOME}/conf)
    # - SPARK_LOG_DIR       Where log files are stored.  (Default: ${SPARK_HOME}/logs)
    # - SPARK_PID_DIR       Where the pid file is stored. (Default: /tmp)
    # - SPARK_IDENT_STRING  A string representing this instance of spark. (Default: $USER)
    # - SPARK_NICENESS      The scheduling priority for daemons. (Default: 0)
    # - SPARK_NO_DAEMONIZE  Run the proposed command in the foreground. It will not output a PID file.
    

    2.2 job资源分配设置

    spark-submit命令提交job时,可以为job指定使用的资源,包括内存和内核数。但在不同的spark集群模式下,使用的配置命令是不同的。命令使用如下:

    $>spark-submit --master spark://s101:7077 --executor-memory 200m --executor-cores 4
    
    1. 设置driver内存数

      $>spark-submit --driver-cores 2		#默认是1
      
    2. standalone和mesos模式下

      • 执行器内核总数设置

        $>spark-submit --total-executor-cores 32 
        
    3. standalone和yarn模式

      • 每个执行器内核数设置

        # yarn下模式为1,standalone模式下为worker上可有的所有内核数
        $>spark-submit --executor-cores 4 
        
    4. yarn-only

      只在yarn模式下,使用的资源控制选线:

      • driver内核数设置

        driver使用的cpu内核数,只在cluster模式下有效,默认1。

        $>spark-submit --driver-cores 3	
        
      • 执行器个数设置

        启动的执行器个数,默认为2。

        $>spark-submit --num-executors 3
        

    3、资源控制细则

    spark资源控制在集群配置时不进行物理资源检查,即可以配置任意的资源值。比如物理内核是16,但是配置成每个worker占用32核。如图所示:

    图中箭头指向的部分是worker进程能够支配使用的资源,包括内存和内核数。

    Spark job执行时,指定的资源同时受到内存和内核两方面的限制,即任何一个条件不满足,都无法启动executor进程。例如指定每个executor使用3个core,worker可以支配8个core,但是最终该worker只能启动两个executor。

  • 相关阅读:
    [转]SubVersion 和 CVSNT在Windows下的安装及初步管理
    [Java20071101]JDK配置
    [English20071023]疯狂英语永恒不变的18条黄金法则
    [文摘20071020]富人和穷人的经典差异
    [English20071024]疯狂突破高中句型300句
    [文摘20071017]回家真好 (工作是为了生活)
    [文摘20071020]老婆和老妈掉水里终于有答案啦
    [转]flash与后台数据交换方法整理
    Repeater使用:绑定时 结合 前台JS及后台共享方法
    [文摘20071019]九九重阳节的来历 重阳节传说故事 重阳节的活动习俗 重阳节诗篇
  • 原文地址:https://www.cnblogs.com/xupccc/p/9800380.html
Copyright © 2020-2023  润新知