一、将虚拟Python环境打包
创建好环境后,进入到环境所在的文件夹,例如环境是/home/hadoop/anaconda3/envs, cd到envs下,使用打包命令将当前目录下的文件打成zip包:

cd /home/hadoop/anaconda3/envs
zip -r py37.zip py37

YARN集群配置Python环境

在开始安装YARN及Spark集群的时候,可以将对应Python软件包、依赖模块,在YARN集群中的每个节点上进行安装。这样,YARN集群的每个NodeManager上都具有Python环境,可以编写PySpark Application并在集群上运行。

优点
对于PySpark的使用,如果偏向机器学习,可以考虑在整个集群中都安装好Python环境,并根据不同的需要进行依赖模块的统一管理,能够极大地方便PySpark Application的运行。

缺点
如果后续使用Python编写Spark Application,需要增加新的依赖模块,那么就需要将该模块在YARN集群的每个节点上都进行安装。而且如果环境中有多个Python版本,还需要涉及不同版本Python环境的管理。因为提交PySpark Application运行是由YARN资源管理器决定的,所以必须保证每个NodeManager上都具有Python环境(基础环境+依赖模块)。

YARN集群未配置Python环境
如果已经安装了规模较大的YARN集群,且在开始开始的时候未曾考虑后续会使用基于Python来编写Spark Application,未曾在YARN集群的NodeManager上安装Python基础环境及其依赖模块。现在要想使用Python编写Spark Application。

实现思路如下所示:

在任意一台机器节点上,安装Anaconda软件
通过Anaconda创建虚拟Python环境
在创建好的Python环境中下载安装依赖的Python模块
将整个Python环境打成zip包
提交PySpark Application时,并通过–archives选项指定zip包路径

案例:
将linux上的集群环境进行打包

#进入anaconda3环境目录下
/root/anaconda3/envs
#进行打包
zip -r dev.zip py37

注意:这里主要应用打包文件里的 py27/bin/python
Python文件:word_seg.py

# -*- coding: utf-8 -*-from pyspark.sql import SparkSession
import jieba
from pyspark.sql.functions import *
from pyspark.sql.types import *
from pyspark.ml.classification import NaiveBayes
from pyspark.ml.feature import HashingTF,StringIndexer,Tokenizer,IDF
from pyspark.ml.evaluation import MulticlassClassificationEvaluator# 解决编码问题
import sys
reload(sys)
sys.setdefaultencoding('utf8')# 创建sparkSession
#提交到yarn上进行显示的名称appName("word_seg Test")
spark = SparkSession.builder.appName("word_seg Test").enableHiveSupport().getOrCreate()# 读取hive的数据
df = spark.sql("select content,label from badou.new_no_seg limit 300")
df.show()# 定义结巴切词方法
def seg(text):return ' '.join(jieba.cut(text,cut_all=True))#返回切词后的UDF
seg_udf = udf(seg, StringType())# 对数据进行结巴切词
df_seg = df.withColumn('seg',seg_udf(df.content)).select('seg','label')
df_seg.show()

运行脚本:

PARK_PYTHON=./ANACONDA/py27/bin/python
cd /usr/local/src/spark-2.4.4-bin-hadoop2.6/
./bin/spark-submit \--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./ANACONDA/py27/bin/python \--master yarn-cluster \--jars /usr/local/src/apache-hive-1.2.2-bin/lib/mysql-connector-java-5.1.46.jar,/usr/local/src/spark-2.4.4-bin-hadoop2.6/jars/datanucleus-api-jdo-3.2.6.jar,/usr/local/src/spark-2.4.4-bin-hadoop2.6/jars/datanucleus-core-3.2.10.jar,/usr/local/src/spark-2.4.4-bin-hadoop2.6/jars/datanucleus-rdbms-3.2.9.jar,/usr/local/src/spark-2.4.4-bin-hadoop2.6/jars/guava-14.0.1.jar \--files /usr/local/src/spark-2.4.4-bin-hadoop2.6/conf/hive-site.xml \--archives /usr/local/src/badou_code/spark/dev.zip#ANACONDA \
/usr/local/src/badou_code/spark/word_seg.py

./ANACONDA/py27/bin/python 代表的集群上的文件解压后的路径
注意:archives命令后的#是必须的,它指的是将这个zip包解压到的文件夹。

PySpark在Spark集群上运行详解

参考自:spark的python环境及No module问题(超详细)作者:bigdata老司机.

使用spark-submit命令引用
client模式
假设上一步得到python37.zip文件,该文件包含numpy、pandas、scipy这三个依赖包。该zip文件大概有500MB以上。将该zip压缩包拷贝到指定目录中,方便后续提交PySpark Application。

1、在linux本地解压

--conf spark.yarn.dist.archives=/home/hadoop/python37 \
--conf spark.pyspark.driver.python=/home/hadoop/python37/bin/python \
--conf spark.pyspark.python=/home/hadoop/python37/bin/python \

2、将python37.zip文件上传到hdfs

--conf spark.yarn.dist.archives=hdfs://input/test/python37.zip#python37 \
--conf spark.pyspark.driver.python=./python37/bin/python3 \
--conf spark.pyspark.python=./python37/bin/python3 \

注意:archives命令后的#是必须的,它指的是将这个zip包解压到的文件夹。

在提交PySpark Application时会将该环境zip包上传到运行Application的所在的每个节点上,并解压缩后为Python代码提供运行环境。如果不想每次都从客户端将该环境文件上传到集群中运行PySpark Application的节点上,可以采用将zip包上传到HDFS上的方式,并修改–archives参数的值为hdfs://***/***/python37.zip#python37。

另外,如果我们要运行的.py文件中,也依赖一些自己编写的函数,具有多个Python依赖的文件。想要通过上面的方式运行,则必须将这些依赖的Python文件拷贝到我们创建的环境中,对应的目录为python37/lib/python3.7/site-packages/

cluster模式
cluster模式下,driver端可以略去。

--conf spark.yarn.dist.archives=hdfs://input/test/python37.zip#python37 \
--conf spark.pyspark.python=./python37/bin/python3 \

举例:

yarn client hdfs文件

spark-submit  \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 3 \
--queue prod \
--conf spark.yarn.dist.archives=hdfs://input/test/python37.zip#python37 \
--conf spark.pyspark.driver.python=./python37/bin/python3 \
--conf spark.pyspark.python=./python37/bin/python3 \
--jars /home/hadoop/mysql-connector-java-8.0.21.jar,/home/hadoop/elasticsearch-spark-20_2.11-7.9.2.jar,/home/hadoop/ojdbc6.jar \
/home/hadoop/test.py

anaconda3环境整体打包放在Spark集群上运行相关推荐

  1. 使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计

    写在前边的话: 本篇博客也是在做豆瓣电影数据的分析过程中,需要对影评信息和剧情摘要信息进行分析而写的一篇博客 以前学习hadoop时,感觉做中文分词也没那么麻烦,但是到了Spark,却碰到了诸多困难, ...

  2. pythonspark集群模式运行_有关python numpy pandas scipy 等 能在YARN集群上 运行PySpark

    有关这个问题,似乎这个在某些时候,用python写好,且spark没有响应的算法支持, 能否能在YARN集群上 运行PySpark方式, 将python分析程序提交上去? Spark Applicat ...

  3. 在local模式下的spark程序打包到集群上运行

    一.前期准备 前期的环境准备,在Linux系统下要有Hadoop系统,spark伪分布式或者分布式,具体的教程可以查阅我的这两篇博客: Hadoop2.0伪分布式平台环境搭建 Spark2.4.0伪分 ...

  4. 小白学习Spark03-在集群上运行Spark

    03 在集群上运行Spark 3.1 Spark运行架构 3.1.1 驱动器节点 3.1.2 执行器节点 3.1.3 集群管理器 3.1.4 启动Spark程序 3.1.5 小结 3.2 使用spar ...

  5. spark在集群上运行

    1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...

  6. 在生产集群上运行topology

    2019独角兽企业重金招聘Python工程师标准>>> 在生产集群上运行topology 博客分类: 分布式计算 在生产集群上运行topology跟本地模式差不多.下面是步骤: 1) ...

  7. 如何在集群上运行Shark

    如何在集群上运行Shark 本文介绍在计算机集群上如何启动和运行Shark.如果对Amazon EC2上运行Shark感兴趣,请点击这里查看如何使用EC2脚本快速启动预先配置好的集群. 依赖: 注意: ...

  8. 从认证到调度,K8s 集群上运行的小程序到底经历了什么?

    作者 | 声东  阿里云售后技术专家 导读:不知道大家有没有意识到一个现实:大部分时候,我们已经不像以前一样,通过命令行,或者可视窗口来使用一个系统了. 前言 现在我们上微博.或者网购,操作的其实不是 ...

  9. 第七章:在Spark集群上使用文件中的数据加载成为graph并进行操作(3)

    你可以调整graph的构造参数来指定partition的数量. 当数据加载完毕的时候整个web-Googel.txt就缓存进了内存之中,如下所示: 可以看到数据被缓存成了edges. 下面我们使用把m ...

最新文章

  1. Yii 1.1.4发布,高性能的PHP框架
  2. SSM+easyUI(框架的搭建)
  3. 机器学习中的数学(六)--信息论与激活函数
  4. andorid使能ftrace失败
  5. 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
  6. 学习大数据参加培训班,大概需要多长时间?
  7. html5 五线谱,五线谱难学?5分钟完成五线谱入门
  8. 2021年党员各种谈心谈话记录加空白表
  9. MySQL查询结果导出方式总结
  10. 计算机自我介绍英语范文,计算机面试英文自我介绍范文
  11. 第二十九章 管理许可(二)
  12. 如何查看office是否是永久激活
  13. 2022-2028全球及中国2-降冰片烯行业研究及十四五规划分析报告
  14. 谈谈红楼梦(第1-5回)
  15. 瑞禧整理常见的抗体药物偶连物(ADC-Linker)名称及结构式大全
  16. 科技爱好者周刊:第 87 期
  17. python的读后感_Python读书笔记
  18. 杨紫开直播被吐槽脸胖、脖子粗、嘴唇厚,这就是明星开美颜的原因
  19. Neat Reader安装使用
  20. MorphSVGPlugin from GreenSock 的源码注释分析

热门文章

  1. 删除一行下方单元格上移_openpyxl3.0官方文档(5)——插入和删除行和列,移动单元格...
  2. nginx命令和配置
  3. Orchard: module开发基础技术知识
  4. Confluence 6 Windows 中以服务方式自动重启修改运行服务的用户
  5. 【CF311E】biologist
  6. jetty9配置指南及jetty9部署jenkins
  7. linux软件抗干扰,解决asterisk下使用misdn时被SELinux干扰导致权限不足的问题
  8. 云ubuntu服务器配置
  9. eclipse新建服务器项目,使用eclipse快速新建spirngboot项目的方法
  10. Windows7 x64在Wampserver上安装memcache