hadoop - 如何使用 Kerberos-Only 用户启动 Spark Streaming YARN 应用程序?
问题描述
- 问题:正如预期的那样,操作系统用户能够启动并拥有火花流应用程序。但是,当我们尝试运行应用程序所有者不是 OS 用户的作业时,火花流返回一个错误,指出未找到该用户。正如您在“spark-submit”命令的输出中看到的那样:
main : run as user is 'user_name'
main : requested yarn user is 'user_name'
User 'user_name' not found
我已经在其他一些论坛上看到了这个错误,建议创建操作系统用户,但不幸的是,这不是一个选项。在 Storm 应用程序中,Kerberos-Only User 可以与 OS-User 结合使用,但在 spark 中似乎并非如此。
- 到目前为止我所尝试的:我能得到的最接近的是使用两个操作系统用户,其中一个对第二个的 keytab 文件具有“读取”权限。我从一个运行应用程序以“模拟”第二个,第二个显示为所有者。由于两者都是操作系统用户,因此没有出现任何错误,但是当我使用 Kerberos-Only 用户作为第二个用户时,它确实会失败。下面你可以看到提交的 spark-streaming 命令(顺便说一句,两者都是 HDFS 用户,否则也无法启动):
spark-submit --master yarn --deploy-mode cluster --keytab /etc/security/keytabs/user_name.keytab
--principal kerberosOnlyUser@LOCAL
--files ./spark_jaas.conf#spark_jaas.conf,
./user_name_copy.keytab#user_name_copy.keytab --conf "spark.driver.extraJavaOptions=-Djava.security.auth.login.config=./spark_jaas.conf"
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./spark_jaas.conf"
--driver-java-options "-Djava.security.auth.login.config=./spark_jaas.conf"
--conf spark.yarn.submit.waitAppCompletion=true --class ...
我也尝试了该命令的替代方法--proxy-user
,但返回了相同的错误。
真的不能在 spark 中使用仅限 Kerberos 的用户吗?或者有解决方法吗?环境是:
Spark 2.3.0 on YARN.
Hadoop 2.7.3.
非常感谢你的帮助!
解决方案
推荐阅读
- python - 为什么我不能在 django 中使用 pandas 指定媒体文件夹中的文件位置?
- python - 我正在尝试使用 Python-selenium 从 iframe 元素中的“src”中提取链接,但最终出现 no such element 错误
- sql-server - SSIS自定义数据流组件循环输入管道缓冲区不止一次
- python - ascii' 编解码器无法编码字符 '\xf3' SQL/Oracle
- c# - Microsoft ASP.NET WebHooks 是构建插件架构的可行方法吗?
- entity-framework - Linq IQueryable
多个过滤器值 - pandas - Pandas:考虑数据框中前一行的行操作
- node.js - 我需要破译用户名和密码,但不断从节点收到内部服务器错误
- mysql - 如何让 mysql 查询优化器使用没有多余 WHERE 子句的索引
- azure-databricks - GA 中的 Databricks 是否具有无公共 IP 地址功能?