一、DataX3.0概述
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
设计理念:
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
当前使用状况:
DataX在阿里巴巴集团内被广泛使用,承担了所有大数据的离线同步业务,并已持续稳定运行了6年之久。目前每天完成同步8w多道作业,每日传输数据量超过300TB。
DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。
1、Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
2、Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
3、Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。
二、准备环境
1、创建普通用户组和目录
groupadd -g 1500 datax
useradd -g datax -u 1500 datax
mkdir /datax
chown -R datax:datax /datax
2、系统环境
(1)安装JDK
上传JDK至opt下解压
tar -xvf jdk-8u131-linux-x64.tar.gz
chown -R datax:datax /opt/jdk
# 配置环境变量
vi /etc/profile
JAVA_HOME=/opt/jdk
PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
#datax用户执行,查看是否有内容输出,有输出就没问题。
[datax@localhost ~]$ jps
22756 Jps
(2)安装Python
一般centos7自带python
[datax@localhost ~]$ python -V
Python 2.7.5
(3)安装maven
在页面https://maven.apache.org/download.cgi下载Apache Maven 3.x,并上传至opt目录下
tar -xvf apache-maven-3.9.6-bin.tar.gz
mv apache-maven-3.9.6 maven
ln -s /opt/maven/bin/mvn /usr/bin/mvn
vi /etc/profile.d/maven.sh
export M2_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
[datax@localhost ~]$ mvn -v
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)Maven home: /opt/mavenJava version: 1.8.0_131, vendor: Oracle Corporation, runtime: /opt/jdk/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"
(4)安装 datax
上传datax安装包至datax目录下
tar -zxvf datax.tar.gz
chown -R datax:datax /datax
[datax@localhost bin]$ cd /datax/datax/bin
[datax@localhost bin]$ python datax.py ../job/job.json
如果报错插件[streamreader,streamwriter]加载失败,1s后重试… Exception:Code:[Common-00], Describe
# 先进入安装目录cd /opt/datax/datax/
# 在进入插件目录cd plugin/reader
# 删除rm -rf ./._*
# 在进入插件目录cd plugin/writer
# 删除rm -rf ./._*
出现以下说明安装成功。
(5)安装 mysql
此次省略,注意需要建datax数据库。
(6)安装dataX web
下载地址:https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
这里我将文件上传到了/opt/datax/
解压文件
tar -zxvf datax-web-2.1.2.tar.gz
开始部署
进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行
./bin/install.sh
在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试;
如果不想使用交互模式,跳过确认过程,则执行以下命令安装
./bin/install.sh --force
3)数据库初始化
如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒:
Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [{INSTALL_PATH}/bin/db/datax-web.sql]? (Y/N)y
Please input the db host(default: 127.0.0.1):
Please input the db port(default: 3306):
Please input the db username(default: root):
Please input the db password(default: ):
Please input the db name(default: exchangis)
按照提示输入数据库地址,端口号,用户名,密码以及数据库名称,大部分情况下即可快速完成初始化。
如果服务上并没有安装mysql命令,则可以取用目录下${你自己打dataXweb安装目录}/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件
vi ./modules/datax-admin/conf/bootstrap.properties
这里是我配置,由于我连接的是本地服务器,
#Database
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=root
DB_DATABASE=datax
4) 配置DataX
安装完成之后,
在项目目录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径
# 进入到安装目录
cd /opt/datax/data-web-2.1.2
# 编辑配置
vim modules/datax-executor/bin/env.properties
### 执行datax的python脚本地址
PYTHON_PATH=/opt/datax/datax/bin/datax.py
5)启动服务
./bin/start-all.sh
6)运行
部署完成后,在浏览器中输入 http://ip:port/index.html 就可以访问对应的主界面(ip为datax-admin部署所在服务器ip,port为为datax-admin 指定的运行端口)默认端口9527
输入用户名 admin 密码 123456 就可以直接访问系统