如何在自定义 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 包。
为了加快我的集群实例化时间,我创建了一个自定义映像,其中使用 miniconda3 安装了所有附加依赖项,可用于 dataproc 映像 1.5.34-debian10。 (我遵循了此处的步骤:
但是,当我使用 --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 包。