【问题标题】:Different Virtual Environments for each Zeppelin user每个 Zeppelin 用户的不同虚拟环境
【发布时间】:2021-12-14 11:46:41
【问题描述】:
我有一个在 EMR 集群中运行的 zeppelin。这个 zeppelin 有多个用户通过基于 Shiro 的身份验证方法登录到 zeppelin。我需要一种为每个用户创建虚拟环境的方法,以便他们可以管理自己的 pip 依赖项。我不想为全球所有用户安装 pip 库。相反,我需要一种方法让不同的用户在同一个 zeppelin 环境中使用不同的库版本。这在 Zeppelin 中是否可行?如果可以,如何实现?
【问题讨论】:
标签:
python
virtualenv
amazon-emr
apache-zeppelin
pyenv
【解决方案2】:
在这里回答我自己的问题。
这可以通过在 zeppelin 中配置 anaconda 并在每个用户的隔离模式下运行解释器来完成。 Zeppelin 内置了对 anaconda 的支持,只是需要进行一些配置才能使其工作。
这些配置步骤是:-
- 创建指向 /bin/conda 的符号链接:ln -s /opt/anaconda3/bin/conda
/bin/conda
- 创建指向 /bin/python 的符号链接:ln -s /opt/anaconda3/bin/python
/bin/python
- 在 Python 的设置中
解释器,将 zeppelin.python 设置为 /opt/anaconda3/bin/python3
- 将 python 路径添加到 ~/.bashrc
导出 PATH=/home/hadoop/miniconda/bin:$PATH
如果您使用 terraform 启动 zeppelin,则可以使用此 shell 脚本将 anaconda 设置为引导操作的一部分,
#!/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