前言
DataX用了3个Python脚本来启动调度,官方版本是依赖Python2的,但是Python2已经不维护升级,刚写了个解析DataX日志的脚本也是用Python3,上次部署DataX-Web的时候发现已经有人用Python3重写了DataX的那三个Python脚本,因此决定把现在的ETL服务器Python环境升级到Python3。
CentOS7安装配置Python3
CentOS7自带Python2版本,按网上教程一步步安装配置:
首先到Python下载目录找到自己想要的Python版本,然后右键复制下载链接:
进入CentOS,用wget命令下载:
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
然后安装Linux依赖环境,一堆包,直接复制进去:
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc libffi-devel gcc make automake autoconf libtool libffi-devel
安装完成后如图提示:
接下来解压下载来的Python安装包:
tar zxvf Python-3.7.9.tgz
解压后看到多了一个文件夹,可以进去看看内容:
我们创建一个python3的安装目录,并配置安装目录,然后执行安装:
#创建安装目录
mkdir /usr/local/python3
#进入解压后的目录,配置安装目录
./configure --prefix=/usr/local/python3
#执行安装动作
make && make install
安装完后,创建软连接,然后可以测试一下是否可以用了:
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
上图结果代表python已经安装成功,但是仍有几个小的点需要处理:
- 修改默认python为python3,修改python2的使用命令为python2:
mv /usr/bin/python /usr/bin/python2
ln -s /usr/local/bin/python3 /usr/bin/python
- 修改默认pip为pip3
ln -s /usr/local/bin/pip3 /usr/bin/pip
- yum不支持python3,因此需要修改使其默认使用python2
#修改/usr/libexec/urlgrabber-ext-down文件
vi /usr/libexec/urlgrabber-ext-down
#修改/usr/bin/yum
vi /usr/bin/yum
DataX调整为使用Python3
在DataX-Web项目下,已经有基于Python3改好的Datax调用文件,因此只需要替换掉DataX里面bin文件夹下的三个Py文件即可。
Python3的DataX文件在DataX-Web源码的/datax-web/doc/datax-web/datax-python3文件夹中,替换DataX安装目录的bin文件夹下三个文件:
mv /datax-web/doc/datax-web/datax-python3/datax.py /root/DataX/target/datax-hashdata/datax/bin/datax.py
mv /datax-web/doc/datax-web/datax-python3/dxprof.py /root/DataX/target/datax-hashdata/datax/bin/dxprof.py
mv /datax-web/doc/datax-web/datax-python3/perftrace.py /root/DataX/target/datax-hashdata/datax/bin/perftrace.py
替换之前建议先把原来的文件备个份:
mv /root/DataX/target/datax-hashdata/datax/bin /root/DataX/target/datax-hashdata/datax/bin_python2_bak
调整完成后,执行python命令测试一下:
cd /root/DataX/target/datax-hashdata/datax/bin
python datax.py ../job/job.json
如果成功,会有如下结果显示: