默认情况下,在Yarn模式下的Spark App的用户是Zeppelin Server的启动用户,比如你是用root用户启动的Zeppelin,那么你在Yarn里看到启动的Spark App的用户也是root。但是生产环境下你会启用Shiro,然后希望用你当前登入的用户作为Spark App的用户。这就需要启用Spark interpreter的user impersonation。
Step 1. 启用Shiro
Step 2. 配置Spark interpreter为Per User Isolated, 以及启动User Impersonate
Step 3. 在hadoop的core-site.xml 中启用zeppelin的proxy user。
比如你启动Zeppelin的用户是zeppelin,那么你需要在core-site.xml添加如下配置,然后重启hadoop来使得配置生效。下面的配置的意思是zeppelin用户可以impersonate任意用户。
<property>
<name>hadoop.proxyuser.zeppelin.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.zeppelin.hosts</name>
<value>*</value>
</property>
Step 4. 确保每个用户在hdfs都有自己的home目录和适当的权限
比如我们的zeppelin有2个用户:user1, user2,那么你需要如下建立对应的home目录以及设置权限。
drwxr-xr-x - user1 supergroup 0 2018-05-31 13:41 /user/user1
drwxr-xr-x - user2 supergroup 0 2017-01-10 12:31 /user/user2
hadoop fs -mkdir /uesr/user1
hadoop fs -chown user1 /user/user1
Step 5. 接下来你启动Spark interpreter,就会用相应的用户来启动Spark App
公众号 钉钉群