Dataproc+python包:发布更新版本

2024-06-16 11:47:41 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在googledataproc上开发一个Spark应用程序。我经常需要更新Python包。在配置期间,我运行以下命令:

echo "Downloading and extracting source code..."
gsutil cp gs://mybucket/mypackage.tar.gz ./
tar -xvzf mypackage.tar.gz
cd ./mypackage

echo "Installing requirements..."
sudo apt-get install -y python-pip
python setup.py install

但是,在集群中分发更新包的最有效方法是什么?有没有已经内置的自动化系统(比如Chef?在

目前,我做两件不同的事情:部署并引导一个新的集群(需要时间)或SSH到每个节点,然后复制并安装更新的包。在


Tags: installand命令echo应用程序sourcecode集群
2条回答

一般来说,部署带有初始化操作的新集群是首选方法,因为如果您需要克隆新集群、更改更基本的计算机或区域设置,或者只是在意外地以混乱的方式破坏现有集群时,它有助于保持您自己的开发工作流的可再现性。它还确保为所有已安装的软件提供新的补丁,并且与基于SSH的配置相比,能够很好地动态地扩展/缩小集群。在

也就是说,对于修改现有集群,您还可以尝试使用bdutil,这与Dataproc的实例命名正好兼容,只要您不使用任何可抢占的worker(但官方并不能保证总是这样)。它将提供一种方便的方法,通过SSH在所有节点上运行命令,并在失败时收集一些有用的错误消息:

CLUSTER=<dataproc-cluster-name>
PROJECT=<Google project you used to create the Dataproc cluster>
BUCKET=<mybucket>
ZONE=<dataproc cluster zone, like us-central1-f>
NUM_WORKERS=<number of workers in dataproc cluster>

# Run "sudo apt-get install -y python-pip" on all nodes
./bdutil -P ${CLUSTER} -p ${PROJECT} -b ${BUCKET} -z ${ZONE} -n ${NUM_WORKERS} \
    run_command -t all   "sudo apt-get install -y python-pip"

您也可以使用-t master来只在主节点上运行某些东西,或者使用-t workers来只在工作节点上运行。在

初始化操作是否有效? https://cloud.google.com/dataproc/init-actions

相关问题 更多 >