实战pyspark基于yarn模式提交任务成功踩坑

本文详细讲述了作者在某国产大数据平台使用yarn模式部署pyspark任务时,遇到的挑战,包括client和cluster模式的区别、环境配置及解决方案,重点在于如何正确设置PYSPARK_DRIVER_PYTHON和PYSPARK_PYTHON。

1. 背景

最近的项目使用yarn提交pyspark的任务,遇到了不少坑,目前已经成功地跑通了基于client和cluster两种模式的任务提交。特此记录一下。

2. 平台

大数据平台:某国产厂商的成熟大数据产品,基于容器的架构,四个节点,每个节点100-200G不等。

CPU:华为华为鲲鹏服务器,arm架构

OS:阿里云

程序:使用pyspark编程语言,程序位于节点1上。程序中用到了hjson配置文件,自定义的一些python包。

3. client模式与cluster模式区别

首先我们要知道spark程序主要有driver端和executor端。pyspark的程序主要是运行在多个executor里,但是如果程序中会使用df.toPandas()或者df.collect()并且进行一些基于python的操作,那么这些基于python的操作就会运行在driver里。

当使用client模式时,driver就位于我们程序所在的节点,也就是你运行代码的那个节点。

当使用cluster模式时,driver会由yarn根据资源占用情况,自动安排在某一个负载较少的节点上。

除此之外,使用client 模式提交的代码,可以在本地看到log,比如目前我在一个终端使用命令提交脚本,并输出日志:

./run_model.sh > log

而在另外一个终端中可以实时查看日志(过滤掉大量无用的INFO):

tail -f log -n 100 | grep -v 'INFO' 

4. 用yarn模式提交任务

这部分是花时间最多的,因为涉及到pyspark_python和pyspark_driver_python的选择问题,也就是worker的python和driver的python需要使用一个版本。

最终成功的方式如下:

cluster模式:

export&nb

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值