Spark资源管理

摘要:
Spark资源管理1、介绍Spark资源管控分为spark集群自身可支配资源配置和job所用资源配置。exportSPARK_WORKER_CORES=6每个worker所用内存数#每个worker使用的内存数,默认是1g内存exportSPARK_WORKER_MEMORY=6g每个节点可以启动worker实例的个数#是否可以在一个节点启动几个worker进程,默认1exportSPARK_WORKER_INSTANCES=2spark守护进程本身占用的内存数spark守护进程指的是master和worker进程,该进程自身使用内存数也可以进行控制。

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核。如图所示:

Spark资源管理第1张

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

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

免责声明:文章转载自《Spark资源管理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XFS文件系统的备份与恢复服务器维护 Windows Service 2008 R2 Enterprise Service Pack 1下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Greenplum-cc-web监控软件安装

一环境列表 操作系统centos6.5 64 Greenplum版本: greenplum-db-4.3.5.3-build-2-RHEL5-x86_64.tar Greenplum集群环境搭建:参考http://blog.csdn.net/sunziyue/article/details/49026913 需求:在已经搭建的集群环境中安装Greenpl...

Android 如何优化APP内存

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 随机存取存储器(RAM)在任何软件开发环境中都是非常有价值的资源,但对于物理内存经常受到限制的移动操作系统来说,它更有价值。 尽管Android运行时(ART)和Dalvik虚拟机都执行常规垃圾收集,但这并不意味着您可以忽略应用程序分...

Mysql:windows上mysql服务管理

自5.1.21及以后的变化: The following table shows the available servers for Windows in MySQL 5.1.20 and earlier. Binary Description mysqld-nt Optimized binary with named-pipe sup...

超详攻略!Databricks 数据洞察

简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/spark(当前产品提供¥599首购试用活动,欢迎试用!) 开源大数据社区 & 阿里云 EMR 系列直播 第四期 主题:Databricks 数据洞察...

MySQL主从报错1872 Slave failed to initialize relay log info structure from the repository【原创】

一台MySQL服务器重启后发现主从复制报错 Last_Errno: 1872 Last_Error: Slave failed to initialize relay log info structure from the repository   mysql> show slave statusG; ************************...

MySQL 8 主从搭建

主:192.168.10.2 从:192.168.10.3 1、修改配置文件 MySQL 搭建主从需要配置 my.cnf ,在主库 my.cnf 的 [mysqld] 段落下添加如下内容: [mysqld] # 设置server-id,唯一值,标识主机,必须与从库不一致 server-id=1 # 开启二进制日志,主库必须开启 log-bin=mysql...