通过 SparkLauncher 传入 Kerberos keytab/principal
Passing in Kerberos keytab/principal via SparkLauncher
spark-submit
允许我们通过 --keytab
和 --principal
选项传递 Kerberos 凭据。如果我尝试通过 addSparkArg("--keytab",keytab)
添加这些,我会收到 '--keytab' does not expect a value
错误 - 我认为这是由于从 v1.6.0 开始缺乏支持。
是否有另一种方法可以让我使用此 SparkLauncher class 和 Kerberos 凭据提交我的 Spark 作业? - 我正在使用带安全 HDFS 的 Yarn。
--principal
arg 被描述为 "Principal to be used to login to KDC, while running on secure HDFS".
因此它特定于 Hadoop 集成。我不确定您是否知道这一点,因为您的 post 没有提到 Hadoop、YARN 或 HDFS。
现在,Hadoop 特定的 Spark 属性在手册页 Running on YARN 中进行了描述。惊喜!其中一些属性听起来很熟悉,比如 spark.yarn.principal
和 spark.yarn.keytab
底线:--blahblah
命令行参数只是 快捷方式 您可以在代码中或 "spark-defaults" 中设置的属性配置文件。
自 Samson 的回答以来,我想我应该添加我在 Spark 1.6.1 中的经验:
- 您可以使用
SparkLauncher.addSparkArg("--proxy-user", userName)
发送代理用户信息。
- 您可以使用
SparkLauncher.addSparkArg("--principal", kerbPrincipal)
和 SparkLauncher.addSparkArg("--keytab", kerbKeytab)
- 因此,您只能使用 (a) 或 (b),但不能同时使用两者 - 请参阅 https://github.com/apache/spark/pull/11358/commits/0159499a55591f25c690bfdfeecfa406142be02b
- 换句话说,启动的进程使用其 Kerberos 凭据在 YARN 上触发 Spark 作业本身(或者)启动的进程模拟最终用户在没有 Kerberos 的集群上触发 Spark 作业。在 YARN 上,在前者的情况下,作业由自己拥有,而在前者的情况下,作业由代理用户拥有。
spark-submit
允许我们通过 --keytab
和 --principal
选项传递 Kerberos 凭据。如果我尝试通过 addSparkArg("--keytab",keytab)
添加这些,我会收到 '--keytab' does not expect a value
错误 - 我认为这是由于从 v1.6.0 开始缺乏支持。
是否有另一种方法可以让我使用此 SparkLauncher class 和 Kerberos 凭据提交我的 Spark 作业? - 我正在使用带安全 HDFS 的 Yarn。
--principal
arg 被描述为 "Principal to be used to login to KDC, while running on secure HDFS".
因此它特定于 Hadoop 集成。我不确定您是否知道这一点,因为您的 post 没有提到 Hadoop、YARN 或 HDFS。
现在,Hadoop 特定的 Spark 属性在手册页 Running on YARN 中进行了描述。惊喜!其中一些属性听起来很熟悉,比如 spark.yarn.principal
和 spark.yarn.keytab
底线:--blahblah
命令行参数只是 快捷方式 您可以在代码中或 "spark-defaults" 中设置的属性配置文件。
自 Samson 的回答以来,我想我应该添加我在 Spark 1.6.1 中的经验:
- 您可以使用
SparkLauncher.addSparkArg("--proxy-user", userName)
发送代理用户信息。 - 您可以使用
SparkLauncher.addSparkArg("--principal", kerbPrincipal)
和SparkLauncher.addSparkArg("--keytab", kerbKeytab)
- 因此,您只能使用 (a) 或 (b),但不能同时使用两者 - 请参阅 https://github.com/apache/spark/pull/11358/commits/0159499a55591f25c690bfdfeecfa406142be02b
- 换句话说,启动的进程使用其 Kerberos 凭据在 YARN 上触发 Spark 作业本身(或者)启动的进程模拟最终用户在没有 Kerberos 的集群上触发 Spark 作业。在 YARN 上,在前者的情况下,作业由自己拥有,而在前者的情况下,作业由代理用户拥有。