每个 Zeppelin 用户的不同虚拟环境

Different Virtual Environments for each Zeppelin user

我在 EMR 集群中有一个 zeppelin 运行。这个 zeppelin 有多个用户通过基于 Shiro 的身份验证方法登录到 zeppelin。我需要一种为每个用户创建虚拟环境的方法,以便他们可以管理自己的 pip 依赖项。我不想为全球所有用户安装 pip 库。相反,我需要一种方法让不同的用户在同一 zeppelin 环境中使用不同的库版本。这在 Zeppelin 中是否可行?如果可行,如何实现?

将“解释器绑定模式”设置为“隔离”(甚至“范围”)可能解决您的问题。

Isolated mode runs a separate interpreter process for each note in the case of per note scope. So, each note has an absolutely isolated session.

https://zeppelin.apache.org/docs/0.10.0/usage/interpreter/interpreter_binding_mode.html

它本身不是 python 虚拟环境,但也许提供的隔离可以工作。

在这里回答我自己的问题,因为我想出来了。

这可以通过在 zeppelin 中配置 anaconda 和 运行 每个用户在隔离模式下的解释器来完成。 Zeppelin 内置了对 anaconda 的支持,只是需要进行一些配置才能使其正常工作。

这些配置步骤是:-

  1. 创建指向 /bin/conda 的符号链接:ln -s /opt/anaconda3/bin/conda /bin/conda
  2. 创建指向 /bin/python 的符号链接:ln -s /opt/anaconda3/bin/python /bin/python
  3. 在设置中为Python 解释器,将 zeppelin.python 设置为 /opt/anaconda3/bin/python3
  4. 将 python 路径添加到 ~/.bashrc 导出路径=/home/hadoop/miniconda/bin:$路径

如果您使用 terraform 启动 zeppelin,您可以使用此 shell 脚本将 anaconda 设置为 bootstrap 操作的一部分,

    #!/bin/bash

sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh
sudo bash ~/miniconda.sh -b -p $HOME/miniconda
echo "export PATH=/home/hadoop/miniconda/bin:$$PATH" >> ~/.bashrc
sudo ln -s /home/hadoop/miniconda/bin/conda /usr/bin/conda
sudo conda install -y python=3.7 anaconda=custom