开发者社区> 华章计算机> 正文

深入理解Spark:核心思想与源码分析. 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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JDK源码分析系列之四:HashSet深入理解以及源码分析
其实HashSet中的源码还是非常简单的,底层实现都是通过HashMap来进行的,并且通过HashMap的key来进行元素的存储。以前我们都是关注HashMap的源码实现,对于HashSet的源码没有在意,如果不是这次分析崩溃的问题也不会发现HashSet的底层实现逻辑。所以有时候越简单的懂越要知道其内部实现,这样就不会阴沟里翻船了。
20 0
Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解。
1417 0
XINU安装程序.exe一键配置好XINU实验环境 - imsoft.cnblogs
还在一步一步配置复杂的XINU吗?XINU安装程序.exe一键配置好XINU实验环境。 XINU安装程序.exe使用说明:   本程序配合《网络协议分析与实现》/(胡维华等编著)课本使用   本程序会自动解压安装配置好的XINU系统(包含XINU和VPC文件夹)到D盘根目录   解压此程序后,用VPC2007虚拟机软件打开或者导入即可。
1159 0
Spark Streaming + Spark SQL 实现配置化ETL流程
Spark Streaming 非常适合ETL。但是其开发模块化程度不高,所以这里提供了一套方案,该方案提供了新的API用于开发Spark Streaming程序,同时也实现了模块化,配置化,并且支持SQL做数据处理。
6215 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载