zoukankan      html  css  js  c++  java
  • Spark配置管理

    一.简介

      Spark对程序提供了非常灵活的配置方式,可以使用环境变量、配置文件、命令行参数,还可以直接在Spark程序中指定,不同的配置方式有不同的优先级,可以相互覆盖。而且这些配置的属性在Web界面中可以直接看到,非常方便我们管理配置。

    二.Spark程序配置加载过程

      Spark程序一般都是由脚本bin/spark-submit来提交的,交互式编程bin/spark-shell其实也是通过它来提交的。通过这种方式启动的Spark程序的加载配置过程如下:

      1.设置SPARK_HOME的值为bin/spark-submit脚本所在目录的上一级目录。

      2.计算配置文件目录,从环境变量SPARK_CONF_DIR中读取。如果没有设置,则取默认值${SPARK_HOME}/conf。

      3.执行配置文件目录下的shell脚本配置文件spark-env.sh,设置基本的环境变量。

      4.加载配置文件目录下的默认配置文件spark-defaults.conf。

      5.读取命令行参数,覆盖前面的默认配置。

      6.使用SparkConf对象中的选项,覆盖前面的配置。

    三.环境变量配置

      少量基础的Spark程序配置可以通过环境变量的方式来指定,比如配置文件目录是通过环境变量SPARK_CONF_DIR来指定的,其默认值是${SPARK_HOME}/conf。我们可以在提交Spark程序之前通过指定SPARK_CONF_DIR值的方式来使用其他目录作为配置文件的目录。

      环境变量可以在提交程序之前通过export的方式设置,也可以在配置文件目录下的spark-env.sh文件中指定,其中spark-env.sh本身也是一个脚本。常用的配置项如下所示:

      1.SPARK_LOCAL_IP:绑定的IP地址。

      2.SPARK_PUBLIC_DNS:Driver程序使用的DNS服务器。

      3.SPARK_CLASSPATH:额外追加的classpath。

    四.Spark属性项配置

      Spark属性项的配置可以在3个地方进行,优先级从低到高依次为:

      1.spark-defaults.conf

      2.命令行参数

      3.SparkConf对象

      spark-defaults.conf的初始值可以从spark-defaults.conf.template复制而来,如下:

      

      提交程序时,也可以通过命令行的方式指定参数,且优先级大于配置文件,如下:

      ./bin/spark-submit --name "SparkPi" --master yarn --conf "spark.shuffle.spill=false -XX:+PrintGCTimeStamps" myApp.jar

      在Spark 程序中也可以指定配置项,而且优先级最高,不过灵活性不如前面的两种方式,每次改动配置都需要更新代码并编译。Spark程序中通过SparkConf【Spark1.x】对象来设置配置项。如下:

      val conf = new SparkConf().setMaster("local[2]").setAppName("SparkPi").set("spark.executor.memory", "1g")

      val sc = new SparkContext(conf)

      

    五.配置Spark日志

      日志配置是另一项单独的配置,它使用配置文件目录下的log4j.properties作为配置文件。

    # Set everything to be logged to the console
    log4j.rootCategory=INFO, console
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.target=System.err
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
    
    # Set the default spark-shell log level to WARN. When running the spark-shell, the
    # log level for this class is used to overwrite the root logger's log level, so that
    # the user can have different defaults for the shell and regular Spark apps.
    log4j.logger.org.apache.spark.repl.Main=WARN
    
    # Settings to quiet third party logs that are too verbose
    log4j.logger.org.spark_project.jetty=WARN
    log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
    log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
    log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
    log4j.logger.org.apache.parquet=ERROR
    log4j.logger.parquet=ERROR
    
    # SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
    log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
    log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
  • 相关阅读:
    使用python selenium webdriver模拟浏览器
    Xen基本原理
    Xen安装部署和基本原理
    Setups For Debugging QEMU with GDB and DDD
    Performance comparison amount different cache mode of KVM
    I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]
    Useful plug-in collection of jenkins
    How to get YAST2 log during installing
    How to create a "BOOT USB DISK" for EXSI6.0
    php设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/yszd/p/12660228.html
Copyright © 2011-2022 走看看