apache-spark - Spark如何处理HADOOP_CONF_DIR?
问题描述
当我们想从 Spark 连接 HDFS 时,我们只需将 HADOOP_CONF_DIR 设置为,而不是向 Spark Conf 传递各种参数
export HADOOP_CONF_DIR=/etc/hadoop/conf
/usr/hdp/current/spark-client/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --executor-memory 1G --num-executors 3 /usr/hdp/current/spark-client/lib/spark-examples*.jar 100
spark如何处理HADOOP_CONF_DIR?这些配置文件是如何传递给Hadoop的?</p>
解决方案
1.HADOOP_CONF_DIR & spark-env.sh
使用 Yarn 运行 spark 时,您需要添加以下行spark-env.sh
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
注意:检查 $HADOOP_HOME/etc/hadoop 在您的环境中是否正确。并且spark-env.sh
还包含 HADOOP_HOME 的导出。
确保 HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向包含 Hadoop 集群的(客户端)配置文件的目录。这些配置用于写入 HDFS 并连接到 YARN ResourceManager。此目录中包含的配置将分发到 YARN 集群,以便应用程序使用的所有容器使用相同的配置。
2.spark-defaults.conf
您所有与内存相关的配置都将保存在spark-defaults.conf
文件中。在集群模式下在 YARN 上运行 Spark 时,需要使用 conf/spark-defaults.conf 文件中的 spark.yarn.appMasterEnv.[EnvironmentVariableName] 属性设置环境变量。spark-env.sh 中设置的环境变量不会反映在集群模式下的 YARN Application Master 进程中。有关更多信息,请参阅与 YARN 相关的 Spark 属性。
3.用应用管理器配置覆盖配置
根据 spark 文档,它清楚地表明如果您配置了 Yarn Cluster 管理器,那么它将覆盖 spark-env.sh 设置。您可以在 Yarn-env 或 yarn-site 文件中检查本地 dir 文件夹设置吗?
“这将被集群管理器设置的 SPARK_LOCAL_DIRS (Standalone, Mesos) 或 LOCAL_DIRS (YARN) 环境变量覆盖。” 来源 - https://spark.apache.org/docs/2.3.1/configuration.html
推荐阅读
- python - + 不支持的操作数类型:“function”和“function”
- kotlin - 使用 jOOQ DAO 删除具有复合键的记录
- mysql - 如何创建 MySQL 触发器,用于在插入或更新后使用另一个表中的字段中的数据更新表的总和
- docker - 如何更改新 Sentry On-Premise 用户的通知设置?
- jquery - 在 eventSource 可用后调用 eventRender
- excel - 获取每个类别最旧邮件的日期
- r - R: data.table: := 在相反的情况下
- r - 使用 ocME 在 R 中计算有序 logit 模型的边际效应的问题
- android - Android 虚拟设备中的 OMAPI
- java - Gradle 5 Kotlin DSL:多模块项目中的常见任务和 Maven 工件