• 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
  • 相关阅读:
    openerp学习笔记 调用工作流
    openerp学习笔记 自定义小数精度(小数位数)
    openerp学习笔记 跟踪状态,记录日志,发送消息
    openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)
    openerp学习笔记 tree视图增加复选处理按钮
    openerp学习笔记 统计、分析、报表(过滤条件向导、分组报表、图形分析、比率计算、追加视图排序)
    openerp学习笔记 视图样式(表格行颜色、按钮,字段只读、隐藏,按钮状态、类型、图标、权限,group边距,聚合[合计、平均],样式)
    openerp学习笔记 计划动作、计划执行(维护计划)
    银行前置以及银行核心系统
    什么是报文
  • 原文地址:https://www.cnblogs.com/yszd/p/12660228.html
Copyright © 2020-2023  润新知