分离 Spark 和 hadoop 配置属性

问题描述 投票:0回答:1

我有一个用例,我想将 Spark 配置属性和 hadoop 配置属性与 Spark-submit 命令分开。

spark-submit 命令示例:

/usr/lib/spark/bin/spark-submit --master yarn --class com.benchmark.platform.TPCDSBenchmark --deploy-mode cluster --conf spark.executor.instances=5 --conf spark.dynamicAllocation.minExecutors=2 --conf spark.dynamicAllocation.maxExecutors=5 --conf spark.executor.cores=4 --conf spark.executor.memory=10240M --conf spark.driver.memory=8192M --conf spark.hadoop.hive.metastore.uris=thrift://METASTORE_URI:10016 --conf spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider --conf spark.hadoop.fs.s3a.assumed.role.credentials.provider=com.amazonaws.auth.WebIdentityTokenCredentialsProvider --conf spark.hadoop.fs.s3a.assumed.role.arn=arn:aws:iam::ACCOUNT:ROLE s3://JAR_PATH.jar --iterations=2 --queryFilter=q1-v2.4

我想从上面的命令中提取spark_conf和hadoop_conf。

输出示例:

"spark_conf": {
      "spark.driver.memory": "8192M",
      "spark.executor.cores": "4",
      "spark.executor.memory": "10240M",
      "spark.executor.instances": "5",
      "spark.dynamicAllocation.maxExecutors": "5",
      "spark.dynamicAllocation.minExecutors": "2"
    }
"hadoop_conf": {
      "spark.hadoop.hive.metastore.uris": "thrift://METASTORE_URI:10016",
      "spark.hadoop.fs.s3a.assumed.role.arn": "arn:aws:iam::ACCOUNT:ROLE",
      "spark.hadoop.fs.s3a.aws.credentials.provider": "org.apache.hadoop.fs.s3a.auth.AssumedRoleCredentialProvider",
      "spark.hadoop.fs.s3a.assumed.role.credentials.provider": "com.amazonaws.auth.WebIdentityTokenCredentialsProvider"
    }

hadoop 相关配置属性的完整列表可在此处找到:list1 list2 list3 list4。剩余的配置属性可以分配给spark。我不想将这数百个属性保存在数据库中并搜索匹配项。有没有更好的方法来区分两种类型的配置属性?

python apache-spark hadoop logic
1个回答
0
投票
在 Spark 开始覆盖之前,

hadoop 代码将读取

core-site.xml
中的文件内容(在类路径上;hadoop XML)。所有站点设置都位于托管集群上。

Spark 始终读取类路径上的文件

conf/spark-defaults.conf
docs

如果您正在调整 s3a 连接,请知道规范的设置列表(和默认值,除非在 core-default.xml 中更改)位于:Constants.java

文档位于 hadoop-aws。有些文档中没有;大部分是偶然的。查看与执行器线程池大小相关的内容,如果您想要最大的 S3 IO 性能,请向 YARN 请求更多内核

最后,该 webidentity 凭证提供程序读取环境变量

AWS_WEB_IDENTITY_TOKEN_FILE
,它必须指向本地 FS 中的文件。它不会随作业一起传递,因此您需要一种方法来使其跨集群。但我想你已经注意到了。

© www.soinside.com 2019 - 2024. All rights reserved.