Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 以指定的Linux用户身份运行Spark executors_Apache Spark_Nfs - Fatal编程技术网

Apache spark 以指定的Linux用户身份运行Spark executors

Apache spark 以指定的Linux用户身份运行Spark executors,apache-spark,nfs,Apache Spark,Nfs,我有一个spark独立集群,有5个节点。所有节点都通过nfs装载了相同的卷。这些装载中的文件具有特定的linux文件权限 当我Spark以用户x的身份提交作业(该用户在所有节点上都可用,并且在所有节点上都具有相同的uid)时,我希望Spark执行器也以用户x的身份运行,以便作业只能访问用户x有权访问的文件 我没有Kerberos,也没有HDFS 在该设置中是否可以执行此操作? 使用纱线会有帮助吗 一直在玩Spark Standalone、Thread、HDFS等游戏的人。 我的经验告诉我: S

我有一个spark独立集群,有5个节点。所有节点都通过nfs装载了相同的卷。这些装载中的文件具有特定的linux文件权限

当我Spark以用户x的身份提交作业(该用户在所有节点上都可用,并且在所有节点上都具有相同的uid)时,我希望Spark执行器也以用户x的身份运行,以便作业只能访问用户x有权访问的文件

我没有Kerberos,也没有HDFS

在该设置中是否可以执行此操作?
使用纱线会有帮助吗

一直在玩Spark Standalone、Thread、HDFS等游戏的人。
我的经验告诉我:

  • Spark Standalone绝对没有任何形式的访问控制或监管
  • 不带HDFS的Thread是可能的,但您的作业将始终作为Thread运行,如果您将文件写入HDFS以外的其他内容,则文件将归Thread用户所有
  • Kerberos并不是这种用法的解决方案,HDFS/thread可以协同工作,如果您使用Kerberos作为spark运行作业并在HDFS中写入文件,那么这些文件将属于spark。如果对NFS或任何其他分布式文件系统执行相同操作,则文件将属于用于运行Thread的系统用户
  • 最后,您可能能够缓解Ranger或Livy的一些问题,但在HDFS之外编写的文件将属于编写它们的系统用户
我对这个问题的结论是,HDFS是所有Hadoop生态系统的核心部分,不使用它是有问题的。

与NFS相比,HDFS的维护非常复杂。

Spark Standalone不支持身份验证(当客户端连接到主机以提交作业时),也不支持模拟(当工作人员为作业生成驱动程序和执行者时)。换句话说,访问NFS数据的Linux用户将是运行Workers的任何服务帐户,通常是
spark
(或者
root
,如果你很邋遢的话)。好吧,唯一支持模拟而不进行身份验证的执行框架是Thread——你只要“假装”是Linux用户
xyz
(在运行
spark submit
之前,使用
export HADOOP\u USER\u NAME=xyz
)和Thread将在该帐户下生成作业容器。使用Thread+Kerberos,您不能假装,您必须实际拥有有效的Kerberos票证来证明您的身份。但如果您“是”HADOOP配置中定义的特权代理用户(通常
oozie
hue
knox
齐柏林飞艇
livy
)您可以请求Thread为任何Linux帐户运行作业(因为假定您是在正确身份验证后为该用户运行会话的web服务,例如LDAP用户/密码)使用Kubernetes,您可以进行某种身份验证……但无论如何,您不会使用NFS,而是使用某种与S3兼容的存储,Kubernetes提供与经过身份验证的用户相关的S3“机密”。