INFO-python/pysaprk环境对接
更新时间: 2025-04-27 18:52:28
阅读 8581
INFO-python/pysaprk环境对接
适用模块
离线开发具体说明
如客户环境对接虚拟环境python环境需求,网易提供首次打包及配置服务,后续需客户自行打包并替换节点上python环境;注意事项
1. conda 环境尽量使用 conda install 进行额外模块的安装,用 pip 安装小概率出现conda 打包后丢失某些系统依赖问题;2. 虚拟环境打包,尽量使用与线上服务器同版本操作系统;
使用示例
步骤一、创建conda虚拟环境1、下载安装脚本并安装
# mini-forge为开源协议miniconda,使用命令都相同
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
# 安装mini-forge, 安装过程如无特殊需求,全部默认回车即可
bash Miniforge3-Linux-x86_64.sh
2、创建虚拟环境
# 查询当前可用于创建虚拟环境的python版本
conda search "^python$"
# 选择需要的版本号创建该版本python虚拟环境
conda create --python_demo python = 3.11
# 安装虚拟环境打包工具conda-pack
conda install conda-pack
# 激活虚拟环境
conda activate python_demo
# 安装所需第三方包,以pandas为例
conda install pandas
# 部分第三方包在conda channel中不存在,可使用pip install 安装,优先使用conda install
pip install pandas
3、打包虚拟环境
# 指定要打包的虚拟环境导出为压缩包
conda-pack -n python_demo -o python_demo.tar.gz
步骤二、上传并配置虚拟环境1. python环境需上传至Azkaban服务的Executor组件所在节点,一般为两个节点,可通过easyops查找组件所在节点;

2. 创建配置路径并解压虚拟环境至该路径;
# 创建待部署目录
sudo mkdir /usr/easyops/python
# 解压虚拟环境至文件夹
sudo tar -zxvf python_demo.tar.gz -C /usr/easyops/python
# 设置权限为azkaban
sudo chown azkaban:azkaban -R /usr/easyops/python
3. 通过easyops修改mammut配置增加python环境支持,并下发重启服务即可;
新增配置组python/easyops-cluster/python-3.11
(配置组名称中easyops-cluster需与项目中集群名称保持一致,python-3.11可自定义),配置项包括name、version、env_path、evn_type、activate_cmd、deactivate_cmd

4 通过easyops修改mammut配置增加pyspark-python环境;
a. 上传python-demo.tar.gz压缩包至hdfs上,并修改权限;
cd /usr/easyops/hdfs/default_hdfs_client
source ./config/hadoop-env.sh
klist -kt ./keytab/hdfs.keytab |head -4|tail -1|awk '{ print $4 }'|xargs kinit -kt ./keytab/hdfs.keytab
hdfs dfs -put ./python-demo.tar.gz /public/
hdfs dfs -chown azkaban:hadoop /public/python-demo.tar.gz
hdfs dfs -chmod 777 /public/python-demo.tar.gz
b. 新增配置组pyspark/easyops-cluster/python-3.11
(其中easyops-cluster需与项目中集群名称保持一致,pyspark-3.11可自定义),配置项包括name、storage_type、storage_path
# python节点中pyspark仅支持cluster模式提交,打印内容需跳转至driver日志中查看
from pyspark.sql import SparkSession
ss = SparkSession.builder.appName('demo').getOrCreate()
df = ss.sql("show databases")
print(df)
ss.stop()
自助维护
当环境配置完成后,客户可自行维护虚拟环境,打包后替换至指定路径即可,但需注意权限; 具体操作步骤如下:1. 安装包虚拟环境后,通过conda-pack进行打包;
2. 上传至服务器azkaban的executor节点并解压至对应目录;
3. 修改权限为
azkaban:azkaban
;4. 如果使用pyspark,则需上传至hdfs对应路径,并修改权限;
旧版pysaprk使用示例
1、准备python环境LTS 8.0版本前只支持此方案
参照场景一或场景二 生成python虚拟环境
2、打包环境 (建议tar.gz格式)
切换至anaconda3/envs目录下
示例:tar -zcvf pyspark3.6.tar.gz pyspark3.6
3、上传环境至hdfs
文件比较大,无法通过猛犸的web页面上传,只能通过hadoop客户端上传
hdfs dfs -put pyspark3.6.tar.gz /user/项目名/xxx/
4、配置pyspark任务
如下所示将传参信息打印并查询hive表数据 验证示例:代码见本文附件2:





spark配置参数说明(需要传递给spark的参数需要设置前缀conf.):
conf.spark.yarn.dist.archives=hdfs://easyops-cluster/user/bdms/pyspark3.6.tar.gz#envs
实际压缩包名称根据自己打包环境决定
压缩的文件会被提取到executor到工作目录下面去,后面到#envs表示,这个文件被解压成到文件名称
conf.spark.yarn.appMasterEnv.PYSPARK_PYTHON=envs/pyspark3.6/bin/python3.6
指定python的环境
作者:林帅
文档反馈
以上内容对您是否有帮助?