Spark 配置

2023-11-20

1. Spark 配置

Spark提供了三个位置来配置系统:

  1. Spark属性控制大多数应用程序参数,可以通过使用SparkConf对象、bin/spark-submit脚本选项、conf/Spark-default.conf文件或通过Java系统属性进行设置。
  2. 环境变量可用于通过每个节点上的conf/spark-env.sh脚本设置每台机器的设置,例如IP地址。
  3. 可以通过log4j.properties配置日志记录。

1.1. Spark 属性

Spark属性控制大多数应用程序设置,并为每个应用程序分别配置。这些属性可以直接在传递给SparkContextSparkConf上设置。SparkConf允许通过set()方法配置一些公共属性(例如Master URL和应用程序名称)以及任意键值对。例如,可以用以下两个属性初始化一个应用程序:

val conf = new SparkConf()
    .setMaster("local[2]")
    .setAppName("CountingSheep")
val sc = new SparkContext(conf)

指定某个持续时间的属性应该配置为时间单位。接受下列格式:

单位 格式(示例)
毫秒 25ms
5s
分钟 10m or 10min
小时 3h
5d
1y

指定字节大小的属性应该配置一个大小单位。接受以下格式:

单位 格式(示例)
bytes 1b
kb 1k or 1kb
mb 1m or 1mb
gb 1g or 1gb
tp 1t or 1tb
pb 1p or 1pb

没有单位的数字通常被解释为字节,少数则被解释为KiB或MiB。请参阅各个配置属性的文档。在可能的情况下,最好指定单位。

1.1.1. 动态加载Spark属性

在某些情况下,可能希望避免在SparkConf中硬编码某些配置。例如,如果希望用不同的masters或不同的内存运行相同的应用程序。Spark允许简单地创建一个空SparkConf

val sc = new SparkContext(new SparkConf())

然后,可以在提交应用程序时通过选项指定配置值:

./bin/spark-submit 
--name "My app" 
--master local[4] 
--conf spark.eventLog.enabled=false
--conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" myApp.jar

bin/spark-shellbin/spark-submit工具支持两种动态加载配置方式。

  • 第一种是命令行选项,如--master
    spark-submit可以使用--conf参数接受任何spark属性,但对在启动spark应用程序中起作用的属性需要使用特殊标志。通过--help选项可以查看到bin/spark-submit脚本支持的全部选项.
  • 第二种是从conf/spark-defaults.conf中读取配置选项,其中每行由一个键和一个由空白分隔的值组成。例如:
    spark.master spark://5.6.7.8:7077
    spark.executor.memory 4g
    spark.eventLog.enabled true
    spark.serializer org.apache.spark.serializer.KryoSerializer

使用命令行参数或conf/spark-defaults.conf中的任何值都将传递给应用程序,并与通过SparkConf指定的值合并。直接在SparkConf上设置的属性具有最高优先级,其次是bin/spark-shellbin/spark-submit脚本选项设置的配置,最后是传递到conf/spark-defaults.conf文件中的选项。
自Spark的早期版本以来,一些配置键已被重命名;在这种情况下,旧的键名称仍然被接受,但其优先级低于新键的任何实例。

Spark属性主要分为两类:

  • 一类与部署相关,如spark.driver.memoryspark.executor.instances,这种属性通过SparkConf进行设置,运行应用程序时可能无法生效。或者行为取决于选择的集群管理器和部署模式。
    因此建议通过conf/spark-defaults.confbin/spark-submit命令行选项进行设置;
  • 另一类主要与spark运行时控制相关,如spark.task.maxfailures,这类属性可以通过任何一种方式进行设置。

1.1.2. 查看Spark属性

在应用程序Web UI界面(http://<driver>:4040)的Environment选项卡中列出了Spark属性。通过查看该选项卡,可以检查属性是否设置正确。
注意,只有通过conf/spark-defaults.confSparkConf或命令行选项显式指定的值才会出现。对于所有其他配置属性,可以假定使用默认值。

1.2. 环境变量

某些Spark配置可以通过环境变量进行配置,这些环境变量从$SPARK_HOME/conf/spark-env.sh脚本中读取。在Standalone模式和Mesos模式下,此文件可以设定一些和机器相关的信息,如hostname。当运行local Spark应用程序或bin/spark-submit脚本时,该文件也会被加载。
注意,该文件默认不存在,通过将conf/spark-env.sh.template文件重命名为conf/spark-env.sh的方式来创建它,并确保脚本可执行。
由于conf/spark-env.sh是一个shell脚本,其中一些环境变量可以通过编程方式设置。例如,可以通过查找特定网络接口的IP来计算SPARK-LOCAL-IP。

以下变量可以在spark-env.sh中设置:

环境变量名称 说明
JAVA_HOME 安装Java的位置(当在PATH环境变量中没有时进行设置)
PYSPARK_PYTHON Python binary executable to use for PySpark in both driver and workers (default is python2.7 if available, otherwise python). Property spark.pyspark.python take precedence if it is set
PYSPARK_DRIVER_PYTHON Python binary executable to use for PySpark in driver only (default is PYSPARK_PYTHON). Property spark.pyspark.driver.python take precedence if it is set
SPARKR_DRIVER_R R binary executable to use for SparkR shell (default is R). Property spark.r.shell.command take precedence if it is set
SPARK_LOCAL_IP 要绑定到的机器的IP地址。
SPARK_PUBLIC_DNS Spark程序将向其他机器公布的主机名

除上述之外,还可以选择设置 Spark Standalone 的环境变量,例如每台机器上使用的核心数量和最大内存。

Spark On Yark可以设置的环境变量请参考如下文档的第三部分(Options read in YARN client/cluster mode)。
当Spark On Yark并且使用cluster模式时,需要通过使用conf/spark-defaults.conf文件中的spark.yarn.appMasterEnv.[EnvironmentVariableName]属性设置环境变量。conf/spark-env.sh文件中设置的环境变量不会在cluster模式下的YARN Application Master进程中反映出来。有关更多信息,请参见 与YARN相关的Spark属性

# Options read when launching programs locally with
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - 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

# 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_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/cluster mode
# - SPARK_CONF_DIR, Alternate conf dir. (Default: ${SPARK_HOME}/conf)
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - YARN_CONF_DIR, to point Spark towards YARN configuration files when you use YARN
# - 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
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
# - SPARK_MASTER_WEBUI_PORT, Port for the master web UI (default: 8080).
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
# - SPARK_WORKER_WEBUI_PORT, Port for the worker web UI (default: 8081).
# - 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).
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
# - SPARK_DAEMON_CLASSPATH, to set the classpath for all daemons
# - 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_PUBLIC_DNS, to set the public dns name of the master or workers
# - SPARK_LOCAL_DIRS, Directory to use for "scratch" space in Spark, including map output files and RDDs that get stored on disk. This should be on a fast, local disk in your system. It can also be a comma-separated list of multiple directories on different disks. 

# 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.

# Options for native BLAS, like Intel MKL, OpenBLAS, and so on.
# You might get better performance to enable these options if using native BLAS (see SPARK-21305).
# - MKL_NUM_THREADS=1        Disable multi-threading of Intel MKL
# - OPENBLAS_NUM_THREADS=1   Disable multi-threading of OpenBLAS

2. 重新指定配置文件目录

要指定一个不同于默认$SPARK_HOME/conf的配置目录,可以设置SPARK_CONF_DIR环境变量。Spark将从该配置指定的路径获取配置文件(spark-defaults.conf, spark-env.sh, log4j.properties等)。

3. 继承Hadoop集群配置

如果通过Spark读写HDFS,以下两个Hadoop配置文件应该包含在Spark的classpath中:

  • hdfs-site.xml,为HDFS client提供默认行为。
  • core-site.xml,设置默认的文件系统名称。

要使这些文件对Spark可见,需要在$SPARK_HOME/conf/spark-env.sh文件中设置HADOOP_CONF_DIR环境变量,指向Hadoop配置文件的路径。

4. 定制的Hadoop/Hive配置

如果Spark应用程序需要与Hadoop、Hive或两者交互,那么在Spark的classpath中需要包含Hadoop/Hive的配置文件。
不同的应用程序可能需要不同的Hadoop/Hive客户端配置。可以通过复制、修改每个应用程序classpath中的hdfs-site.xml, core-site.xml, yarn-site.xml, hive-site.xml文件实现不同应用程序的定制配置。

在Spark On Yark,这些配置文件是在集群范围内可见的,应用程序不能安全地更改它们。
更好的选择是使用spark.hadoop.*形式的spark hadoop属性,使用spark.hive.*形式的Spark hive属性,例如,设置spark.hadoop.abc.def=xyz属性表示设置了了abc.def=xyz的Hadoop属相。它们可以被认为与在$SPARK_HOME/conf/spark-default.conf中设置的普通spark属性相同。

在某些情况下,可能希望避免在SparkConf中对某些配置进行硬编码。例如,Spark简单地创建一个空的SparkConf并设置Spark/Spark hadoop/Spark hive属性。

val conf = new SparkConf().set("spark.hadoop.abc.def","xyz")
val sc = new SparkContext(conf)

为了避免硬编码参数,可以在提交应用程序时通过命令行选项来添加配置:

./bin/spark-submit \ 
  --name "My app" \ 
  --master local[4] \  
  --conf spark.eventLog.enabled=false \ 
  --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \ 
  --conf spark.hadoop.abc.def=xyz \ 
  myApp.jar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 配置 的相关文章

  • Spark广播变量与累加器

    在之前的文章中 我介绍了flink广播状态 从而了解了flink广播状态实际上就是将一个流广播到下游所有算子之中 在本文中我将介绍spark中类似的概念 为了方便理解 先放张spark应用程序架构图 1 普通spark变量 实际上 如果我们
  • 分类算法之朴素贝叶斯

    1 朴素贝叶斯分类算法 朴素贝叶斯 Naive Bayes NB 算法是基于贝叶斯定理与特征条件独立假设的分类方法 该算法是有监督的学习算法 解决的是分类问题 是将一个未知样本分到几个预先已知类别的过程 朴素贝叶斯的思想就是根据某些个先验概
  • SparkStreaming知识总结

    一 流式计算的概述 1 1 什么是流式计算 1 数据流与静态数据的区别 数据流指的就是不断产生的数据 是源源不断 不会停止 静态数据指的就是存储在磁盘中的固定的数据 2 流式计算的概念 就是对数据流进行计算 由于数据是炼苗不断的产生的 所以
  • Spark(七)——累加器和广播变量

    5 累加器 通过在驱动器中调用SparkContext accumulator initialValue 方法 创建出存有初始值的累加器 返回值为org apache spark Accumulator T 对象 其中 T 是初始值 ini
  • spark创建maven工程创建scala目录并编译

    背景 我创建spark的maven工程的时候 在java目录同级还创建了一个scala目录 这就得考虑编译相关的事了 解决 1 创建source folder 如下图所示 直接创建就好了 2 编译带来的问题 编译的时候发现一个问题 就是在s
  • 【Spark NLP】第 3 章:Apache Spark 上的 NLP

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Hadoop完全分布式集群——Hadoop 配置

    前面已完成VMware虚拟机安装与配置 参考前一篇Hadoop完全分布式集群 VMware虚拟机安装与配置 夏雨和阳阳的博客 CSDN博客 下面将进行Hadoop 配置 一 slave1 slave2节点配置修改 slave1 slave2
  • dolphinschedule使用shell任务结束状态研究

    背景 配置的dolphin任务 使用的是shell shell里包含了spark submit 如下截图 dolphin shell 介绍完毕 开始说明现象 有天有人调整了集群的cdp配置 executor cores max 1 我之前这
  • spark报Got an error when resolving hostNames. Falling back to /default-rack for all

    一 报错代码如下 21 06 01 20 13 36 INFO yarn SparkRackResolver Got an error when resolving hostNames Falling back to default rac
  • 基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO)

    基于Spark的电商用户行为实时分析可视化系统 Flask SocketIO 项目简介 该项目已上线蓝桥课程 有需要的可凭邀请码 UB5mdLbl 学习哦 有优惠 课程地址 https www lanqiao cn courses 2629
  • Spark 源码阅读一-启动脚本

    Spark Complile Help Links Because spark 1 5 need maven version 3 3 3 so i track the branch 1 4 git branch a git checkout
  • 【Spark NLP】第 7 章:分类和回归

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 大数据spark开发入门教程

    大数据是互联网发展的方向 大数据人才是未来的高薪贵族 随着大数据人才的供不应求 大数据人才的薪资待遇也在不断提升 如果你也想进入大数据行业 也想学习大数据技术 大数据讲师认为 可以先从spark技术开始 一 Spark是什么 Spark是一
  • 大数据开发必备面试题Spark篇合集

    1 Hadoop 和 Spark 的相同点和不同点 Hadoop 底层使用 MapReduce 计算架构 只有 map 和 reduce 两种操作 表达能力比较欠缺 而且在 MR 过程中会重复的读写 hdfs 造成大量的磁盘 io 读写操作
  • spark_hadoop集群搭建自动化脚本

    bin bash 脚本使用说明 1 使用脚本前需要弄好服务器的基础环境 2 在hadoop的每个节点需要手动创建如下目录 data hdfs tmp 3 修改下面的配置参数 4 脚本执行完备后需要收到格式化namenode
  • 使用Flink1.16.0的SQLGateway迁移Hive SQL任务

    使用Flink的SQL Gateway迁移Hive SQL任务 前言 我们有数万个离线任务 主要还是默认的DataPhin调度CDP集群的Hive On Tez这种低成本任务 当然也有PySpark 打Jar包的Spark和打Jar包的Fl
  • 大数据手册(Spark)--Spark基本概念

    文章目录 Spark 基本概念 Hadoop 生态 Spark 生态 Spark 基本架构 Spark运行基本流程 弹性分布式数据集 RDD Spark安装配置 Spark基本概念 Spark基础知识 PySpark版 Spark机器学习
  • Spark 配置

    文章目录 1 Spark 配置 1 1 Spark 属性 1 1 1 动态加载Spark属性 1 1 2 查看Spark属性 1 2 环境变量 2 重新指定配置文件目录 3 继承Hadoop集群配置 4 定制的Hadoop Hive配置 1
  • 阿里技术官亲笔力作:Kafka限量笔记,一本书助你掌握Kafka的精髓

    前言 分布式 堪称程序员江湖中的一把利器 无论面试还是职场 皆是不可或缺的技能 而Kafka 这款分布式发布订阅消息队列的璀璨明珠 其魅力之强大 无与伦比 对于Kafka的奥秘 我们仍需继续探索 要论对Kafka的熟悉程度 恐怕阿里的大佬们
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门

随机推荐

  • grep正则表达式后面的单引号和双引号的区别?

    单引号 是全引用 被单引号括起的内容不管是常量还是变量者不会发生替换 双引号 是部分引用 被双引号括起的内容常量还是常量 变量则会发生替换 替换成变量内容 一般常量用单引号 括起 如果含有变量则用双引号 括起 单引号与双引号的最大不同在于双
  • Linux_CentOS_6.5添加iptables记录(规则)

    1 关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放 下面是命令实现 iptables P INPUT DROP iptables P FORWARD DROP iptables P OUTPUT DROP 再用命令
  • Less的语法及使用方法

    Less的语法及使用方法 1 变量 2 混合 3 嵌套 4 运算 5 函数 6 作用域 7 注释 8 导入 9 映射 1 变量 我们可以先看看别的里面创建变量和Less里面创建变量有什么不同 在JavaScript里面创建变量有两种方式 一
  • 你知道研发的文档有多少种吗?

    这篇继续讲文档能力 文档能力是研发人员必备技能 有时候涉及到的文字沟通 比如邮件沟通等 都需要文档加以辅助说明 那么这时就需要好好设计文档的内容了 有些同学文档内容写的很随意 一眼看上去不知道在讲什么 这时就要用到文档的结构了 你设计的结构
  • android recovery 系统代码分析【精】

    转自 http blog csdn net andyhuabing article details 9226569 http blog csdn net andyhuabing article details 9248713 最近做Reco
  • 超级详细Tcpdump 的用法

    1 抓取回环网口的包 tcpdump i lo 2 防止包截断 tcpdump s0 3 以数字显示主机及端口 tcpdump n 第一种是关于类型的关键字 主要包括host net port 例如 host 210 27 48 2 指明
  • 小车测速模块使用介绍

    测速模块 产品特点 1 使用进口槽型光耦传感器 槽宽度5mm 2 有输出状态指示灯 输出高电平灯灭 输出低电平灯亮 3 有遮挡 输出高电平 无遮挡 输出低电平 4 比较器输出 信号干净 波形好 驱动能力强 超过15mA 5 工作电压3 3V
  • Elasticsearch之映射(mapping)。

    索引中每个文档都有一个类型 type 每个类型拥有自己的映射 mapping 或者模式定义 schema definition 一个映射定义了字段类型 每个字段的数据类型 以及字段被Elasticsearch处理的方式 映射还用于设置关联到
  • 基数排序代码实现

    详情请看排序总结 传送门 https blog csdn net m0 52711790 article details 121914543 基数排序的知识点我就不贴出来 相信都能搜到对应概念解释 下面就直接上代码 代码解释其实也很清晰了
  • Python之tkinter图形界面设计学习二

    图形用户界面 简称GUI 是指采用图形方式显示的计算机操作用户界面 与计算机的命令行界面相比 图形界面对于用户的操作显得更加直观和简便 一 tkinter模块 tkinter是Python的内置GUI模块 使用tkinter可以快速地创建G
  • H5查看pdf文件(pdfh5)

    我用的是 pdfh5 来查看的H5中的pdf文件 使用 pdfh5 插件来打开 pdf文件 下面是两种使用方法 方法一 二都可以 但是我在使用方法二时有卡顿现象 可能是因为未开启懒加载 方法二中的 on 可以打印出来错误信息 使用方法 1
  • java实现图片文字识别的两种方法

    一 使用tesseract ocr 1 https github com tesseract ocr tesseract wiki上下载安装包安装和简体中文训练文件 window64位安装包 tesseract ocr w64 setup
  • debian查看ip地址命令_设备调试、维护最实用网络命令

    ping命令 ping是个使用频率极高的实用程序 主要用于确定网络的连通性 这对确定网络是否正确连接 以及网络连接的状况十分有用 简单的说 ping就是一个测试程序 如果ping运行正确 大体上就可以排除网络访问层 网卡 Modem的输入输
  • 期货ctp基础知识(合约,开仓,平仓,做多,做空,保证金,手续费)

    期货ctp教程地址 期货ctp教程 合约 期货买卖的是合约 股票买卖的是股票 做多和做空 2 1 做多 你就是买入看涨 所以买这个动作对应的指令就是 买开仓 当你赚了或者止损的时候 就要把合约卖掉 对应的指令就是 卖平仓 2 2 做空 你先
  • LabVIEW扫描成像或同步模拟电压生成和数据采集

    大量测量技术涉及探头扫描 同时测量物理量 例如 所有扫描成像方法都是这种情况 因此 数据采集需要高采集率 以及探头控制和测量之间的精确同步 GPScan VI 程序是用于控制 National Instruments 高速数据采集板的通用
  • 类型System.Double的对象无法转换为类型System.Single

    float gt System Single 单精度浮点型 占 4 个字节 double gt System Double 双精度浮点型 占 8 个字节 http msdn microsoft com zh cn library Syste
  • Linux命令(查看目录和切换目录)

    1 查看目录命令 ls 用法 ls 选项 目录名 案例 查看 usr下的所有文件 ls a usr 选项 a显示所有文件包含隐藏文件 l显示长文件信息 2 切换目录命令 cd change directory 用法 cd 目录名 案例 从当
  • npm,cnpm,yarn,pnmp之间的区别

    一 npm 1 由于版本号的影响 所以会造成版本不统一的情况 给定一个版本号 主版本号 次版本号 补丁版本号 以下这三种情况需要增加相应的版本号 主版本号 当API发生改变 并与之前的版本不兼容的时候 次版本号 当增加了功能 但是向后兼容的
  • Flask框架实战

    参考 第 2 章 Hello Flask Flask 入门教程 helloflask com 实战项目为一个基于flask框架实现的观影清单 个人实操后git地址 GitHub 2504973175 watchlist 基于flask框架的
  • Spark 配置

    文章目录 1 Spark 配置 1 1 Spark 属性 1 1 1 动态加载Spark属性 1 1 2 查看Spark属性 1 2 环境变量 2 重新指定配置文件目录 3 继承Hadoop集群配置 4 定制的Hadoop Hive配置 1