简单的个人网站,义乌企业网站,自己做的网站怎么让别人能访问,wordpress 苏醒主题背景
平台所有的Spark任务都是采用Spark on yarn cluster的模式进行任务提交的#xff0c;driver和executor随机分配在集群的各个节点#xff0c;pySpark 由于python语言的性质#xff0c;所以pySpark项目的依赖注定不能像java/scala项目那样把依赖打进jar包中轻松解决问题…背景
平台所有的Spark任务都是采用Spark on yarn cluster的模式进行任务提交的driver和executor随机分配在集群的各个节点pySpark 由于python语言的性质所以pySpark项目的依赖注定不能像java/scala项目那样把依赖打进jar包中轻松解决问题。所以本文主要目标就是解决pySpark在分布式的情况下如何优雅的解决项目中的依赖问题目前总结出如下三种办法供大家使用。
1、Nodemanager节点直接安装依赖
使用pip install 或者conda install 在每台nodemanager上安装所需依赖。 这个方法是最简单也是最优先能解决pySpark依赖的方法但是缺点也十分明显。
优点 操作简单易上手能快速解决依赖问题 缺点1、每台nodemanager都需要安装依赖并且未来新加入nodemanager的机器也需要安装依赖。如果未来新节点忘记安装就会导致失败。 2、直接在服务器上安装未经测试过得版本极有可能导致已经安装的python依赖与新依赖包冲突导致大数据任务执行失败。对环境是一种污染和侵入。 适用范围集群规模不大用的人少影响范围可控想快速解决问题
2、Python zip项⽬
pip freeze requirements.txt 将本地的pip依赖写⼊到requirements.txt⽂件中根据⾃⼰情况进⾏增删改。pip install -r requirements.txt --target ${PROJECT_NAME} 将依赖打⼊到项⽬当中main⽅法和依赖要平级python -m zipapp ${PROJECT_NAME} -m “main:main” 打包出⼀个.pyz⽂件mv ${PROJECT_NAME}.pyz ${PROJECT_NAME}.zip spark不仅支持提交单个.py文件执行还支持提交整个zip包来执行其中zip包中就包含了你所需要的简单依赖。
优点引入的依赖简洁明了并且调试起来也比较方便毕竟打包时间快方便提交任务也不需要额外的任务。 缺点不能控制python版本用的python版本都是nodemanager上的python版本。 适用范围引入的依赖不多项目极小的情况下并且不考虑依赖的复用。
3、Spark使⽤独⽴的Python虚拟环境提交任务
1、创建python的虚拟环境
搭建annaconda或找⼀台有annaconda环境的机器创建虚拟环境名字为sparkenv包含模块pandas
conda create --name sparkenv --copy python3.6.7版本根据实际情况更改⽣成的⽬录在⽂件夹
/opt/anaconda2/envs/sparkenv使⽤pip安装所需依赖
/opt/anaconda2/envs/sparkenv/bin/pip install ******压缩成zip⽂件
1 cd /opt/anaconda2/envs/sparkenv
2 zip -r -q sparkenv.zip *将sparkenv.zip⽂件上传⾄hdfs一般都是放在hdfs的如
hadoop fs -put /tmp/aaa/sparkenv.zip2、任务配置Spark参数
配置[⾃定义配置] --archives hdfs:///tmp/aaa/sparkenv.zip#test-sparkenv这个配置加在spark -submit命令后就行。
配置[Spark Conf 配置]
1 spark.yarn.appMasterEnv.PYSPARK_PYTHONtest-sparkenv/bin/python3.6
2 spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHONtest-sparkenv/bin/python3.6
3 spark.executorEnv.PYSPARK_PYTHONtest-sparkenv/bin/python3.6
4 spark.executorEnv.PYSPARK_DRIVER_PYTHONtest-sparkenv/bin/python3.6上面这四个分别用–conf引入 比如 --conf spark.yarn.appMasterEnv.PYSPARK_PYTHONtest-sparkenv/bin/python3.6
优点独立的python环境想用什么版本的自己决定。基于业务的独立依赖包闭环低依赖冲突风险。可实现依赖复用多部门共用虚拟环境。 缺点包很大不论是上传包还是调试都非常麻烦。 适用环境需要使⽤不⽤于服务器的python版本并且引⼊的依赖错综复杂的场景适合中大型的pySpark项目。