一文看懂如何在MRS集群中使用python3运行pyspark

448 阅读3分钟
原文链接: zhuanlan.zhihu.com

【小宅按】本文介绍如何在MRS集群中使用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官网下一个https://www.python.org/downloads/
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -zxvf Python-3.7.1.tgz
cd Python-3.7.1

 
# 配置信息及编译安装,安装到/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.7.1

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

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

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

3. 参考资料

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

Linux下编译安装python3

Linux下编译安装python3 - 自由的web - 博客园www.cnblogs.com图标

Linux下编译安装python3


更多精彩内容,请滑至顶部点击右上角关注小宅哦~


来源:华为云原创