关于AWS EMR Spark上Jupyterhub的Livy会话

时间:2018-12-24 15:10:43

标签: apache-spark amazon-emr

我的客户在AWS EMR上的Jupyterhub上配置了AD连接器,以便可以通过AD在jupyterhub上对不同的用户进行身份验证。当前的理解是,当不同的用户通过Jupyterhub上的Jupyter笔记本向共享的基础EMR火花引擎提交其火花作业时,该火花作业将通过Livy提交给火花引擎。每个Livy会话都会映射一个相关的spark会话(这是我目前的理解,如果我错了,请纠正我)

问题是,不同的Jupyterhub用户将共享相同 Livy会话(然后是不同火花会话)还是不同的Livy会话(然后是不同的Spark会话)?

我只能找到的有限材料是:

https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-jupyterhub.html

see this arch pic here

非常感谢!

1 个答案:

答案 0 :(得分:0)

据我所知(在HDP发行版上测试),默认情况下,Livy服务器将创建一个不同的Spark驱动程序,因此为每个用户创建一个不同的会话。该服务器可通过kerberized HTTP接口访问,因此用户必须附带有效的票证,并且相应的会话将以他的名字运行。因为在这种情况下,用户将可以访问自己的资源(数据,YARN队列等),因此这似乎是可行的方法。在这种情况下, livy服务器模拟了用户,它像用户一样运行Spark作业(请参见Granting Livy the Ability to Impersonate

通过检查doc,我发现您可以采用与EMR中的Livy服务器完全相同的方式进行配置。

  

默认情况下,以这种方式提交的YARN作业以livy用户身份运行,而不管发起该作业的用户如何。通过设置用户模拟,您可以让笔记本用户的用户ID成为与YARN作业关联的用户。 每个用户发起的工作都与shirley和diego相关联,而不是让shirley和diego发起的作业都与用户livy相关联。这可以帮助您审核Jupyter的使用情况并管理组织内的应用程序。

因此,您可以选择使用模拟(以独立用户身份运行)还是不使用(以单个[(ngModel)]用户身份运行)。