在基于spark集群做算法开发与训练时,经常会遇到spark集群中work节点python环境不匹配的问题,若节点比较少,手工配置还可以,但当集群比较大时,比如上千个节点,那么手工配置python环境是不现实的,因此,撰写这篇博客,以解决该问题,具体如下:
注:一般情况下,要配置的集群均处于内网状态下,即不可以上网,所以此处重点以这种场景进行说明
步骤一、在本地联网的环境中,安装anaconda3,具体参考anaconda安装过程,此处不再赘述;
步骤二:创建虚拟环境(该环境为spark集群节点需要配置的python环境)
conda create -n pyspak-env python=3.7.4
#其中pyspak-env为新建的虚拟环境名称,可根据个人喜好定义
#python=3.7.4为要配置的python版本设置,根据需要进行设置,注跟spark任务提交时所在管控端保持版本匹配一致
conda activate pyspak-env
#启动新创建的虚拟环境
pip install pakgs
#pakgs为需要安装的python依赖包
步骤三:打包虚拟环境
#cd到anaconda3安装路径,找到envs路径
cd /root/anaconda3/envs
#查看你已创建过的虚拟环境,并找到你需要的那个虚拟环境
conda env list
#打包虚拟环境,注意打包全部虚拟环境
zip -r py.zip pyspak-env/
#其中py.zip为打包后的名字,可根据喜好自定义
步骤四:上传步骤3打包好的虚拟环境py.zip到spark集群所依赖的hdfs
#cd到包要上传到管控端的路径
cd /export/work/package
#上传打包文件到管控端
rz
#切换hdfs用户
su hdfs
#上传包到hdfs
hdfs dfs -put py.zip /test/env/py.zip