Ubuntu安装DataX工具&web页面、配置、使用

1.环境准备

1.1 vm虚拟机

ubuntu20.4.3系统 2vcpu 4GB 40G硬盘

硬盘存储空间,若不涉及生产环境部署,考虑拓展和业务数据量,够用就行

1.2 python 2.7 、JDK1.8

datax.py 部分语法不支持3.0版本,用python3需要更换python文件,比较费劲,一般用系统自带的2.7,若没有需要行安装

提前安装好jdk1.8 正确配置环境变量

1.3 安装包: 

1.3.1 datax.tar.gz :

下载地址:

https://github.com/alibaba/DataX

 

1.3.2 datax-web-2.1.2.tar.gz :  

下载地址:datax-web/datax-web-deploy.md at master · WeiYe-Jing/datax-web · GitHub

2. 解压安装

datax 和 datax-web 有两种安装方式:

a) 下载压缩包,直接解压修改配置方式

b) 下载get源码,maven打包安装方式

本文介绍方式 a

2.1 datax安装

2.1.1 datax.tar.gz安装包解压

cd ~
# 切换到压缩包存放目录
tar -zxvf ./datax.tar.gz  -C /usr/local
# 指定安装解压路径为 /usr/local

python3需要替换文件,python2.7免配置。可以直接以python2运行datax.py

2.1.2 运行脚本测试

cd /usr/local/datax
# 切换到datax_home

python  ./bin/datax.py ./job/job.json
# python 运行datax.py主程序 ,启动任务配置json

异常处理:

/bin/sh: 1: java: not found
原因:root用户执行的,没有找到 java_home

如果是root用户执行的, vi /etc/profile 看看环境变量配置是否有,java_home配置

source  /etc/profile

重新执行测试任务 :python  ./bin/datax.py ./job/job.json

2022-09-19 14:58:23.177 [job-0] INFO  StandAloneJobContainerCommunicator - Total 1000000 records, 26000000 bytes | Speed 2.48MB/s, 100000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.629s |  All Task WaitReaderTime 13.903s | Percentage 100.00%
2022-09-19 14:58:23.179 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2022-09-19 14:58:13
任务结束时刻                    : 2022-09-19 14:58:23
任务总计耗时                    :                 10s
任务平均流量                    :            2.48MB/s
记录写入速度                    :         100000rec/s
读出记录总数                    :             1000000
读写失败总数                    :                   0
 

测试stream 没问题

2.1.3 datax.py 自动生成模板

python ./bin/datax.py  -r mysqlreader -w oraclewriter

# 以reader=mysql writer=oracle为例

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.


Please refer to the mysqlreader document:
     https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md 

Please refer to the oraclewriter document:
     https://github.com/alibaba/DataX/blob/master/oraclewriter/doc/oraclewriter.md 
 
Please save the following configuration as a json file and  use
     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
to run the job.

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": [], 
                        "connection": [
                            {
                                "jdbcUrl": [], 
                                "table": []
                            }
                        ], 
                        "password": "", 
                        "username": "", 
                        "where": ""
                    }
                }, 
                "writer": {
                    "name": "oraclewriter", 
                    "parameter": {
                        "column": [], 
                        "connection": [
                            {
                                "jdbcUrl": "", 
                                "table": []
                            }
                        ], 
                        "password": "", 
                        "preSql": [], 
                        "username": ""
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}

可以根据datax.py调用模板配置,生成需要作业的json

实例:

mysql 300W行数据写入oracle (提前在oracle建好表)

/usr/local/datax/job/222.json

oracle "jdbcUrl" : "jdbc:oracle:thin:@//192.168.1.160:1521/ORCL19C"

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": ["*"], 
                        "splitPk": "id",
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:mysql://192.168.1.130:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"], 
                                "table": ["t_member"]
                            }
                        ], 
                        "password": "******", 
                        "username": "test", 
                        "where": ""
                    }
                }, 
                "writer": {
                    "name": "oraclewriter", 
                    "parameter": {
                        "column": ["*"], 
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:oracle:thin:@//192.168.1.160:1521/ORCL19C", 
                                "table": ["t_member"]
                            }
                        ], 
                        "password": "******", 
                        "preSql": ["truncate table t_member"], 
                        "username": "c##xxxxx"
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "10"
            }
        }
    }
}

执行结果:(10通道)

2022-09-19 15:55:42.347 [job-0] INFO  JobContainer - PerfTrace not enable!
2022-09-19 15:55:42.347 [job-0] INFO  StandAloneJobContainerCommunicator - Total 2999999 records, 107666651 bytes | Speed 2.05MB/s, 59999 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 26.427s |  All Task WaitReaderTime 397.284s | Percentage 100.00%
2022-09-19 15:55:42.349 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2022-09-19 15:54:48
任务结束时刻                    : 2022-09-19 15:55:42
任务总计耗时                    :                 54s
任务平均流量                    :            2.05MB/s
记录写入速度                    :          59999rec/s
读出记录总数                    :             2999999
读写失败总数                    :                   0

OK

2.2 datax-web服务安装

2.2.1 解压

tar -zxvf ./datax-web-2.1.2.tar.gz -C ./
# 文件解压到当前目录 
mv datax-web-2.1.2 datax-web
mv ./datax-web /usr/local/
# 重命名 移动

2.2.2 运行安装

cd  /usr/local/datax-web

./bin/install.sh
# 需要有安装mysql ,若没有则跳过数据库信息设置,安装mysql后再修改配置
# 运行安装程序 按提示解压,输入元数据数据库配置。
cd /usr/local/datax-web
vi ./modules/datax-admin/conf/bootstrap.properties

###### DB配置 按实际mysql配置
#Database
DB_HOST=
DB_PORT=
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE= 

datax-web-server分为2模块:admin 、executor

2.2.3 admin配置修改

cd /usr/local/datax-web
sudo vi ./modules/datax-admin/bin/env.properties
# 修改server port、邮件、java_home等信息

JAVA_HOME=/usr/local/jdk
# java_home默认路径末尾不带'/'
SERVER_PORT=9527

# mail account  可以忽略
MAIL_USERNAME=""
MAIL_PASSWORD=""

2.2.4 executor 配置修改

cd /usr/local/datax-web
sudo vi ./modules/datax-executor/bin/env.properties
# 修改关键配置
JAVA_HOME=/usr/local/jdk

#执行datax的python脚本地址
PYTHON_PATH=/usr/local/datax/bin/datax.py

DATAX_ADMIN_PORT=
# datax默认端口 保持与datax-admin服务的端口一致;
# 默认是9527,如果没改datax-admin的端口,可以忽略

2.3 启动web服务环境

运行bin目录下start-all.sh (或者分别启动admin、executor)

cd /usr/local/datax-web
# 非root用户 执行sudo
sudo ./bin/start-all.sh

# 文件所有人是root:root 
# 非root用户需要执行sudo  或者切换root用户执行
# sudo 保留当前用户的环境变量,以root身份运行
# 切换root 后需要刷新环境变量 
python@ubuntu:/usr/local/datax-web$ sudo ./bin/start-all.sh
2022-09-19 17:00:50.690 [INFO] (17240)  Try To Start Modules In Order 
2022-09-19 17:00:50.698 [INFO] (17247)  ####### Begin To Start Module: [datax-admin] ######
2022-09-19 17:00:50.706 [INFO] (17254) load environment variables
2022-09-19 17:00:51.143 [INFO] (17254) DATAX-ADMIN has been started in process
2022-09-19 17:00:51.158 [INFO] (17420)  ####### Begin To Start Module: [datax-executor] ######
2022-09-19 17:00:51.168 [INFO] (17427) load environment variables
2022-09-19 17:00:51.606 [INFO] (17427) /usr/local/jdk/bin/java
2022-09-19 17:00:51.610 [INFO] (17427) Waiting DATAX-EXEXUTOR to start complete ...
2022-09-19 17:00:51.825 [INFO] (17427) DATAX-EXEXUTOR start success

jps 查看进程

python@ubuntu:/usr/local/datax-web/bin$ jps
3111 DataXAdminApplication
3384 DataXExecutorApplication
3757 Jps

启动成功

3. web访问

3.1 windows登录

username = admin          password = 123456

3.2 主页面

 3.3 添加数据源

 3.4 创建任务

阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
单机串行:调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;

丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;

覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;

增量增新建议将阻塞策略设置为丢弃后续调度或者单机串行
设置单机串行时应该注意合理设置重试次数(失败重试的次数*每次执行时间<任务的调度周期),重试的次数如果设置的过多会导致数据重复

3.5 运行任务

这里因为设置任务失败重试3次,

因为系统环境变量设置错误 ,上次启动是切换到root用户刷新全局变量启动的,以界面执行器运行导致异常报错找不到java环境变量,重试3次

解决:1.修改当前桌面系统用户python 环境变量 /home/python/.bashrc 

vi  /home/python/.bashrc   把 java_home 设置正确(已正确)

2. 修改root用户java环境变量 /root/.bashrc 一样的添加设置

3. 修改/etc/profile (全局环境变量)添加java环境变量

4.修改文件权限 

chown python:python -R /usr/local/datax 
chown python:python -R /usr/local/datax-web

重启系统,登录,以python用户启动start-all.sh 

重新在windows网页登录。重新运行任务成功。

3.6 查看日志:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值