在MRS集群中使用python3运行pyspark

小玛 发表于 2018/12/12 18:15:54 2018/12/12
【摘要】 使用python3运行pyspark,需要做两步:1. 在mrs集群的所有core节点,以及提交任务的节点(通常为mrs的master节点),均安装python3;2. 指定pyspark使用的python路径。

使用python3运行pyspark,需要做两步:

  1. 在mrs集群的所有core节点,以及提交任务的节点(通常为mrs的master节点),均安装python3;

  2. 指定pyspark使用的python路径。


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

# 下载,解压python3的tgz包,也可以自行去python官网下一个
# 推荐使用Python-3.6.X版本,3.7版本无法使用rdd的take函数,具体参考 
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 分发编译好的python到集群上所有节点


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

# 切换到omm用户
su omm;

# 打包
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用户,执行这些命令即可分发python包到所有节点。

scp /tmp/python3.tar.gz 192.168.0.235:~/
scp /tmp/python3.tar.gz 192.168.0.183:~/
scp /tmp/python3.tar.gz 192.168.0.155:~/


分发完毕后,需要在所有节点解压。可以在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  |'

如下方所示,执行即可在所有节点解压

ssh  192.168.0.235 "tar -zxf /tmp/python3.tar.gz -C /opt/Bigdata ;chmod 777 /opt/Bigdata"
ssh  192.168.0.183 "tar -zxf /tmp/python3.tar.gz -C /opt/Bigdata ;chmod 777 /opt/Bigdata"
ssh  192.168.0.155 "tar -zxf /tmp/python3.tar.gz -C /opt/Bigdata ;chmod 777 /opt/Bigdata"


1.3 配置变量

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

echo "/opt/Bigdata/python3/lib" >> /etc/ld.so.conf
ldconfig
 
ln -s /opt/Bigdata/python3/bin/python3 /usr/bin/python3
ln -s /opt/Bigdata/python3/bin/pip3 /usr/bin/pip3


1.4 测试

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


2. 配置pyspark使用的python


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


2.2 测试

source /opt/client/bigdata_env; pyspark --master yarn

可以看到已经用上了python3.X

image.png


在shell中执行,测试能否正常运行作业。

sc.parallelize(range(1000)).saveAsTextFile("/tmp/test_python3")

再开一个窗口,命令行中执行 hadoop fs -ls /tmp/test_python,对应目录有输出则配置成功

image.png



3. 参考资料


如何使用自动化工具配置华为云镜像源

Linux下编译安装python3


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。