如何在自定义 dataproc 映像中安装可选组件(anaconda、jupyter)

How to install optional components (anaconda, jupyter) in custom dataproc image

为了加快我的集群实例化时间,我创建了一个自定义映像,其中使用 miniconda3 安装了所有附加依赖项,可用于 dataproc 映像 1.5.34-debian10。 (我遵循了此处的步骤: 以确保我使用了正确的 python 环境)。

但是,当我使用 --optional-components ANACONDA,JUPYTER 启动我的集群时,我的自定义依赖项被删除,我只剩下 anaconda 和 jupyter 的基本安装。我假设 anaconda 安装正在覆盖我的自定义依赖项。有什么方法可以确保我的依赖项不被覆盖?如果没有,是否可以安装 anaconda 和 jupyter 作为我的自定义 dataproc 映像的一部分?

我使用以下命令创建了自定义图像:

python3 generate_custom_image.py \
    --image-name test-dataproc-image-1 \
    --dataproc-version 1.5.34-debian10 \
    --customization-script ./pip-install.sh \
    --zone <my_zone> \
    --gcs-bucket <my_gcs_bucket> \
    --subnet <my_subnet> \
    --metadata 'PIP_PACKAGES="dask[distributed] dask-yarn==0.8 google-cloud-pubsub==2.4.1 kneed==0.7.0 google-cloud-secret-manager==2.4.0  pandas-gbq==0.15.0 pyarrow==3.0.0 leidenalg==0.8.4 cdlib==0.2.0 bigquery==0.0.12 google-cloud-storage==1.37.1 facebook_business pyemd==0.5.1 pysftp==0.2.9 gensim==4.0.1 wordcloud==1.8.1 spacy==2.3.0 https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.3.0/en_core_web_sm-2.3.0.tar.gz --ignore-installed PyYAML"'
    --no-smoke-test

下面是我的自定义脚本pip-install.sh的内容:

which python 

# Activate miniconda3 optional component.
cat >>/etc/google-dataproc/dataproc.properties <<EOF
dataproc.components.activate=miniconda3
EOF
export BDUTIL_DIR=/usr/local/share/google/dataproc/bdutil
bash /usr/local/share/google/dataproc/bdutil/components/activate/miniconda3.sh
source /etc/profile.d/effective-python.sh

# Now this is /opt/conda/default/bin/python
which python 
apt update
apt install python3-pip -y
python -m pip install --upgrade ${PACKAGES}

customize_conda.sh 脚本是为自定义图像自定义 Conda env 的推荐方法。

如果您需要的不仅仅是脚本,您可以阅读代码并创建自己的脚本,但无论如何您都希望使用绝对路径,例如 /opt/conda/anaconda/bin/conda/opt/conda/anaconda/bin/pip、[= Anaconda/Miniconda 环境的 12=]、/opt/conda/miniconda3/bin/pip 到 install/uninstall 包。