建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

剑指南天

发帖: 0粉丝: 1

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2020-3-25 18:43:20 228 1
直达本楼层的链接
楼主
显示全部楼层
[技术分享] MRS :依赖第三库的Pyspark程序 的yarn模式运行

                                                                               MRS :依赖第三库的Pyspark程序 yarn模式运行

关键词:MRS  Pyspark  python3.6 yarn 第三方依赖库

摘要:依赖第三方库的Pysaprk程序在MRS集群以--master yarn模式运行主要有两种方案:1.mrs集群的所有core节点,以及提交任务的节点(通常为mrsmaster节点),均安装python3.6以及相关的第三方依赖并且指定pyspark使用的python路径;2.在任务提交节点(通常为mrsmaster节点)安装Anaconda3,并在Anaconda3中安装python3.6以及第三方依赖库,--master yarn-cluster模式下,通过--archives选项指定zip包路径

 

前期准备

1.       MRS2.1.0Spark2.3.2

2.       样例代码

在提交任务的节点(比如master1,代码路径为/root/data/

fly.py代码如下:

import add

import numpy as np

from pyspark import SparkContext

from pyspark import SparkConf

conf=SparkConf().setAppName("Bird")

sc=SparkContext.getOrCreate(conf)

a=np.array([1,2,3,4,5,6,7,8,9,10])

da=sc.parallelize(a)

rep=da.repartition(3)

reduce=rep.reduce(lambda a,b :add.add_fun(a,b))

print(reduce)

sc.stop()


add.py代码如下:

def add_fun(a,b):

    return a+b

 

 

方案一(参考自https://bbs.huaweicloud.com/blogs/115742):

1. 安装python以及第三方依赖库

MRS使用的操作系统是EulerOS,目前EulerOS无法直接通过yum安装python3,需要自行编译。

1.1 编译安装

master1节点编译python

# 配置华为云欧拉镜像源

wget http://mirrors.myhuaweicloud.com/repo/mirrors_source.sh && sh mirrors_source.sh

# 安装必要的工具,用来编译python3

yum groupinstall "Development tools" -y

yum -y install zlib zlib-devel

yum -y install bzip2 bzip2-devel

yum -y install ncurses ncurses-devel

yum -y install readline readline-devel

yum -y install openssl openssl-devel

yum -y install openssl-static

yum -y install xz lzma xz-devel

yum -y install sqlite sqlite-devel

yum -y install gdbm gdbm-devel

yum -y install tk tk-devel

yum -y install libffi libffi-devel

# 下载,解压python3tgz包,也可以自行去python官网下一个

wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz

tar -zxvf Python-3.6.7.tgz

cd Python-3.6.7

# 配置信息及编译安装,安装到/opt/Bigdata/python3目录下,也可以自行指定

./configure --prefix=/opt/Bigdata/python3 --enable-shared CFLAGS=-fPIC

make && make install

# 改下安装目录的权限,便于后面打包分发

chmod -R 777 /opt/Bigdata/python3

1.2 配置变量

echo "/opt/Bigdata/python3/lib" >> /etc/ld.so.conf

ldconfig

rm -rf /usr/bin/python

rm -rf /usr/bin/python3

rm -rf /usr/bin/pip

rm -rf /usr/bin/pip3

ln -s /opt/Bigdata/python3/bin/python3 /usr/bin/python3

ln -s /opt/Bigdata/python3/bin/pip3 /usr/bin/pip3

ln -s /opt/Bigdata/python3/bin/python3 /usr/bin/python

ln -s /opt/Bigdata/python3/bin/pip3 /usr/bin/pip

切换到omm用户

su omm;

1.3 添加第三方依赖库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy scipy

1.4分发编译好的python到集群上所有节点

执行下面命令,获取scp命令,用于分发python包。

打包

cd /opt/Bigdata/ && tar -zcf /tmp/python3.tar.gz python3 && chmod 777 /tmp/python3.tar.gz

获取将要运行的命令,

cat /etc/hosts | grep node | awk '{print $1}'| sed 's|$|:/tmp/|' | sed 's|^|scp /tmp/python3.tar.gz |'

将上一操作获取的命令,复制粘贴运行

分发完毕后,需要在所有节点解压。可以在master节点用omm用户使用执行命令得到所有解压命令。

 cat /etc/hosts | grep node | awk '{print $1}'| sed 's|$| "tar -zxf /tmp/python3.tar.gz -C /opt/Bigdata ;chmod -R 777 /opt/Bigdata/python3"|' | sed 's|^|ssh  |'

将上一操作获取的命令,复制粘贴运行

1.5 配置集群其他节点变量

root用户逐个登录到集群上所有安装python3的节点,执行下面的命令:

su root;

echo "/opt/Bigdata/python3/lib" >> /etc/ld.so.conf

ldconfig

rm -rf /usr/bin/python

rm -rf /usr/bin/python3

rm -rf /usr/bin/pip

rm -rf /usr/bin/pip3

ln -s /opt/Bigdata/python3/bin/python3 /usr/bin/python3

ln -s /opt/Bigdata/python3/bin/pip3 /usr/bin/pip3

ln -s /opt/Bigdata/python3/bin/python3 /usr/bin/python

ln -s /opt/Bigdata/python3/bin/pip3 /usr/bin/pip

1.6 测试

挑选几个节点,执行python3,python,pip3,pip,正常运行则安装成功。

2. 配置pyspark使用的python3.6

2.1 配置PYSPARK环境变量

在提交任务的节点(比如master1),提交前执行

export PYSPARK_PYTHON=/opt/Bigdata/python3/bin/python3

或将上面这一样配置在客户端客户端目录下spark-env.sh文件中(默认路径:/opt/client/Spark/spark/conf)

echo "export PYSPARK_PYTHON=/opt/Bigdata/python3/bin/python3" >> /opt/client/Spark/spark/conf/spark-env.sh

3.       运行fly.py进行测试

source /opt/client/bigdata_env;

/opt/client/Spark/spark/bin/spark-submit --master yarn-client(yarn-cluster) --py-files /root/data/add.py /root/data/fly.py

: --py-files也可以添加压缩文件

 

方案二(参考自https://www.cnblogs.com/nucdy/p/8569606.html):

1.安装Anaconda3python以及程序依赖的第三方库

1.1安装Anaconda3

cd /opt/Bigdata

#通过wget下载anconda安装包

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh

#利用bash命令安装到anconda文件夹下:.

bash Anaconda3-2019.07-Linux-x86_64.sh -p anaconda/ -u

一直按yes,包括添加到环境

如果运行conda --version 显示没有此指令的话,需要把anaconda添加到变量中去,运行两步(也可以根据自己的情况添加环境变量)

echo 'export PATH="/opt/Bigdata/anaconda/bin:$PATH"' >> ~/.bashrc

source ~/.bashrc

#添加清华的镜像源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

#并且在搜索时显示搜索地址

conda config --set show_channel_urls yes

1.2创建运行环境,包括安装python3.6和第三方依赖库

conda create -n mlpy_env --copy -y -q python=3.6 numpy scipy

1.3     打包运行环境和上传运行环境

chmod -R 777 /opt/Bigdata/anaconda

cd /opt/Bigdata/anaconda/envs/

zip -r mlpy_env.zip ./mlpy_env

source /opt/client/bigdata_env;

hadoop fs -mkdir /wang

hadoop fs -put ./mlpy_env.zip /wang

2.       运行fly.py进行测试

/opt/client/Spark/spark/bin/spark-submit --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=./mlpy_env.zip/mlpy_env/bin/python --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./mlpy_env.zip/mlpy_env/bin/python --py-files /root/data/add.py --master yarn-cluster --archives hdfs:///wang/mlpy_env.zip /root/data/fly.py

 

 

 

 

 

 


MRS 依赖第三库的Pyspark程序 的yarn模式运行.docx 25.95 KB,下载次数:0

举报
分享

分享文章到朋友圈

分享文章到微博

Catcher

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2020-3-25 18:48:11
直达本楼层的链接
沙发
显示全部楼层

一直都希望有个教程,写的很详细,看得出作者很用心

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册