《深入理解Spark:核心思想与源码分析》——3.5节Hadoop相关配置及Executor环境变量

简介:

本节书摘来自华章社区《深入理解Spark:核心思想与源码分析》一书中的第3章,第3.5节Hadoop相关配置及Executor环境变量,作者耿嘉安,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.5 Hadoop相关配置及Executor环境变量
3.5.1 Hadoop相关配置信息
默认情况下,Spark使用HDFS作为分布式文件系统,所以需要获取Hadoop相关配置信息的代码如下。
val hadoopConfiguration = SparkHadoopUtil.get.newConfiguration(conf)
获取的配置信息包括:
将Amazon S3文件系统的AccessKeyId和SecretAccessKey加载到Hadoop的Configuration;
将SparkConf中所有以spark.hadoop.开头的属性都复制到Hadoop的Configuration;
将SparkConf的属性spark.buffer.size复制为Hadoop的Configuration的配置io.file.buffer.size。
如果指定了SPARK_YARN_MODE属性,则会使用YarnSparkHadoopUtil,否则默认为SparkHadoopUtil。
3.5.2 Executor环境变量
对Executor的环境变量的处理,参见代码清单3-28。executorEnvs 包含的环境变量将会在7.2.2节中介绍的注册应用的过程中发送给Master,Master给Worker发送调度后,Worker最终使用executorEnvs提供的信息启动Executor。可以通过配置spark.executor.memory指定Executor占用的内存大小,也可以配置系统变量SPARK_EXECUTOR_MEMORY或者SPARK_MEM对其大小进行设置。
代码清单3-28 Executor环境变量的处理

private[spark] val executorMemory = conf.getOption("spark.executor.memory")
        .orElse(Option(System.getenv("SPARK_EXECUTOR_MEMORY")))
        .orElse(Option(System.getenv("SPARK_MEM")).map(warnSparkMem))
        .map(Utils.memoryStringToMb)
        .getOrElse(512)

    // Environment variables to pass to our executors.
    private[spark] val executorEnvs = HashMap[String, String]()

    for { (envKey, propKey) <- Seq(("SPARK_TESTING", "spark.testing"))
        value <- Option(System.getenv(envKey)).orElse(Option(System.getProperty (propKey)))} {
        executorEnvs(envKey) = value
    }
    Option(System.getenv("SPARK_PREPEND_CLASSES")).foreach { v =>
        executorEnvs("SPARK_PREPEND_CLASSES") = v
    }
    // The Mesos scheduler backend relies on this environment variable to set executor memory.
  executorEnvs("SPARK_EXECUTOR_MEMORY") = executorMemory + "m"
    executorEnvs ++= conf.getExecutorEnv

    // Set SPARK_USER for user who is running SparkContext.
    val sparkUser = Option {
        Option(System.getenv("SPARK_USER")).getOrElse(System.getProperty("user.name"))
    }.getOrElse {
        SparkContext.SPARK_UNKNOWN_USER
    }
    executorEnvs("SPARK_USER") = sparkUser
相关文章
|
2月前
|
分布式计算 Hadoop Java
Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式(Hadoop3.1.3版本配置)
Hadoop快速入门——第一章、认识Hadoop与创建伪分布式模式(Hadoop3.1.3版本配置)
63 0
|
7天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop 配置
core-site.xml 是 Hadoop 核心全局配置文件【2月更文挑战第20天】
28 1
|
3月前
|
SQL 分布式计算 Hadoop
Spark与Hadoop的关系和区别
Spark与Hadoop的关系和区别
|
3月前
|
分布式计算 Hadoop 数据处理
Spark与Hadoop的区别是什么?请举例说明。
Spark与Hadoop的区别是什么?请举例说明。
49 0
|
3月前
|
分布式计算 Hadoop Java
linux上面hadoop配置集群
linux上面hadoop配置集群
46 0
|
4月前
|
分布式计算 Java Spark
Spark Driver和Executor数据传递使用问题
Spark Driver和Executor数据传递使用问题
30 0
|
4月前
|
SQL 分布式计算 Hadoop
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
[AIGC ~大数据] 深入理解Hadoop、HDFS、Hive和Spark:Java大师的大数据研究之旅
|
4月前
|
分布式计算 资源调度 Hadoop
Hadoop【部署 02】hadoop-3.1.3 单机版YARN(配置、启动停止shell脚本修改及服务验证)
Hadoop【部署 02】hadoop-3.1.3 单机版YARN(配置、启动停止shell脚本修改及服务验证)
46 0

热门文章

最新文章

相关实验场景

更多