运行 Spark 在不安全的 YARN 集群中访问安全的 Hive

Access a secured Hive when running Spark in an unsecured YARN cluster

我们有两个 cloudera 5.7.1 集群,一个使用 Kerberos 保护,一个不保护。

是否可以 运行 在访问安全集群中存储的 Hive 表时使用不安全的 YARN 集群进行 S​​park? (Spark 版本为 1.6)

如果是这样,您能否解释一下如何配置它?

更新:

我想稍微解释一下我的问题背后的最终目标。我们的主要安全集群被大量使用,我们的工作无法在合理的时间内获得足够的资源来完成。为了克服这个问题,我们想使用来自另一个不安全集群的资源,我们有 不需要在集群之间复制数据。

我们知道这不是最佳解决方案,因为数据局部性级别可能不是最佳的,但这是我们目前可以提出的最佳解决方案。

如果您有任何其他解决方案,请告诉我,因为我们似乎无法实现上述目标。

如果您 运行 在 本地模式 下使用 Spark,您可以让它使用任意一组 Hadoop 配置文件——即 core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlhive-site.xml 从 Kerberized 集群复制。
因此您可以访问 that 集群上的 HDFS -- 如果您有 Kerberos 票据,当然可以访问该集群。

  export HADOOP_CONF_DIR=/path/to/conf/of/remote/kerberized/cluster
  kinit sylvestre@WORLD.COMPANY
  spark-shell --master local[*]

但在 yarn-client 或 yarn-cluster 模式下,您无法在本地集群中启动容器并访问另一个集群中的 HDFS。

  • 要么你用本地core-site.xmlhadoop.security.authenticationsimple,你可以连接到本地YARN/HDFS
  • 或者您指向远程 core-site.xml 的副本,上面写着 hadoop.security.authenticationkerberos,您可以连接到远程 YARN/HDFS
  • 但您不能使用本地的、不安全的 YARN 访问远程的、安全的 HDFS

请注意,使用不安全-不安全或安全-安全组合,您可以可以访问另一个集群中的 HDFS,方法是修改您自己的自定义 hdfs-site.xml 以定义多个命名空间。但是您只能使用单一身份验证模型。
[编辑] 请参阅 Mighty Steve Loughran 关于额外 Spark 属性 的评论从本地安全集群访问远程安全 HDFS。

另请注意,对于 DistCp,您会遇到同样的问题——除了有一个 "cheat" 属性 允许您从安全状态切换到不安全状态。