app大全軟件網(wǎng)站免費(fèi)下載域名解析網(wǎng)站
DataX-web的環(huán)境準(zhǔn)備
-
MySQL (5.5+) 必選,對(duì)應(yīng)客戶端可以選裝, Linux服務(wù)上若安裝mysql的客戶端可以通過部署腳本快速初始化數(shù)據(jù)庫
-
JDK (1.8.0_xxx) 必選
-
DataX 必選
-
Python (2.x) (支持Python3需要修改替換datax/bin下面的三個(gè)python文件,替換文件在doc/datax-web/datax-python3下) 必選,主要用于調(diào)度執(zhí)行底層DataX的啟動(dòng)腳本,默認(rèn)的方式是以Java子進(jìn)程方式執(zhí)行DataX,用戶可以選擇以Python方式來做自定義的改造
安裝部署MySQL
yum -y install https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
#修改yum文件
vim mysql-community.repo
# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
這個(gè)enable后面參數(shù)修改為1,其他的源全部修改為0。
#安裝MySQL
yum -y install mysql-community-server
#啟動(dòng)mysql
systemctl start mysqld.service
systemctl enable mysqld.service
#查詢MySQL的密碼
grep password /var/log/mysqld.log
#登錄MySQL并修改密碼和密碼策略
mysql -uroot -p
alter user 'root'@'localhost' identified by '1234Qaz.'
set global validate_password_policy=0; #設(shè)置密碼策略為L(zhǎng)OW
set global validate_password_length=1; #設(shè)置密碼長(zhǎng)度為1
#修改MySQL配置文件
vim /etc/my.cnf
...
#添加以下內(nèi)容
validate_password_policy=0
validate_password_length=1
#重啟mysql
systemctl restart mysqld
#修改密碼
mysql -uroot -p
alter user 'root'@'localhost' identified by '1234';
安裝JDK
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
DataX安裝部署
1. DataX介紹
1.1 什么是 DataX
-
DataX 是阿里巴巴開源的一個(gè)異構(gòu)數(shù)據(jù)源離線同步工具,致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。
1.2. DataX 的設(shè)計(jì)
- 為了解決異構(gòu)數(shù)據(jù)源同步問題,DataX 將復(fù)雜的網(wǎng)狀的同步鏈路變成了星型數(shù)據(jù)鏈路,DataX 作為中間傳輸載體負(fù)責(zé)連接各種數(shù)據(jù)源。當(dāng)需要接入一個(gè)新的數(shù)據(jù)源的時(shí)候,只需要將此數(shù)據(jù)源對(duì)接到 DataX,便能跟已有的數(shù)據(jù)源做到無縫數(shù)據(jù)同步。
1.3. 支持的數(shù)據(jù)源
- DataX 目前已經(jīng)有了比較全面的插件體系,主流的 RDBMS 數(shù)據(jù)庫、NOSQL、大數(shù)據(jù)計(jì)算系統(tǒng)都已經(jīng)接入。
類型 | 數(shù)據(jù)源 | Reader(讀) | Writer(寫) |
---|---|---|---|
RDBMS 關(guān)系型數(shù)據(jù)庫 | MySQL | √ | √ |
Oracle | √ | √ | |
OceanBase | √ | √ | |
SQLServer | √ | √ | |
PostgreSQL | √ | √ | |
DRDS | √ | √ | |
Kingbase | √ | √ | |
通用RDBMS(支持所有關(guān)系型數(shù)據(jù)庫) | √ | √ | |
阿里云數(shù)倉數(shù)據(jù)存儲(chǔ) | ODPS | √ | √ |
ADB | √ | ||
ADS | √ | ||
OSS | √ | √ | |
OCS | √ | ||
Hologres | √ | ||
AnalyticDB For PostgreSQL | √ | ||
阿里云中間件 | datahub | √ | √ |
SLS | √ | √ | |
圖數(shù)據(jù)庫 | 阿里云 GDB | √ | √ |
Neo4j | √ | ||
NoSQL數(shù)據(jù)存儲(chǔ) | OTS | √ | √ |
Hbase0.94 | √ | √ | |
Hbase1.1 | √ | √ | |
Phoenix4.x | √ | √ | |
Phoenix5.x | √ | √ | |
MongoDB | √ | √ | |
Cassandra | √ | √ | |
數(shù)倉數(shù)據(jù)存儲(chǔ) | StarRocks | √ | √ |
ApacheDoris | √ | ||
ClickHouse | √ | √ | |
Databend | √ | ||
Hive | √ | √ | |
kudu | √ | ||
selectdb | √ | ||
無結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ) | TxtFile | √ | √ |
FTP | √ | √ | |
HDFS | √ | √ | |
Elasticsearch | √ | ||
時(shí)間序列數(shù)據(jù)庫 | OpenTSDB | √ | |
TSDB | √ | √ | |
TDengine | √ | √ |
1.4. 框架設(shè)計(jì)
-
Reader:數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)發(fā)送給Framework。
-
Writer:數(shù)據(jù)寫入模塊,負(fù)責(zé)不斷向Framework取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端。
-
Framework:用于連接reader和writer,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖,流控,并發(fā),數(shù)據(jù)轉(zhuǎn)換等核心技術(shù)問題。
1.5. 運(yùn)行原理
-
Job:單個(gè)作業(yè)的管理節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)清理、子任務(wù)劃分、TaskGroup監(jiān)控管理。
-
Task:由Job切分而來,是DataX作業(yè)的最小單元,每個(gè)Task負(fù)責(zé)一部分?jǐn)?shù)據(jù)的同步工作。
-
Schedule:將Task組成TaskGroup,單個(gè)TaskGroup的并發(fā)數(shù)量為5。
-
TaskGroup:負(fù)責(zé)啟動(dòng)Task。
-
**舉例:**用戶提交了一個(gè) DataX 作業(yè),并且配置了 20 個(gè)并發(fā),目的是將一個(gè) 100 張分表的 mysql 數(shù)據(jù)同步到 odps 里面。 DataX 的調(diào)度決策思路是:
- DataXJob 根據(jù)分庫分表切分成了 100 個(gè) Task。
- 根據(jù) 20 個(gè)并發(fā),DataX 計(jì)算共需要分配 4 個(gè) TaskGroup。
- 4 個(gè) TaskGroup 平分切分好的 100 個(gè) Task,每一個(gè) TaskGroup 負(fù)責(zé)以 5 個(gè)并發(fā)共計(jì)運(yùn)行 25 個(gè) Task。
1.6. 與 Sqoop 的對(duì)比
2. DataX安裝部署
- 二進(jìn)制包下載地址
- 源碼包下載地址
2.1. 前置要求
- Linux
- JDK(1.8 以上,推薦 1.8)
- Python(推薦 Python2.6.X)
2.2. 安裝
- 將下載好的
datax.tar.gz
上傳到 服務(wù)器上/usr/local/soft/
- 解壓
datax.tar.gz
到/usr/local/soft/
tar -xf datax.tar.gz
- 運(yùn)行自檢腳本
cd /usr/local/soft/datax/bin/
python datax.py /usr/local/soft/datax/job/job.json
DataX-web 安裝部署
- 源碼包
- 下載官方提供的版本tar版本包 提取碼:cpsk
1. datax-web介紹
1.1. datax-web是什么?
-
DataX Web是在DataX之上開發(fā)的分布式數(shù)據(jù)同步工具,提供簡(jiǎn)單易用的 操作界面,降低用戶使用DataX的學(xué)習(xí)成本,縮短任務(wù)配置時(shí)間,避免配置過程中出錯(cuò)。用戶可通過頁面選擇數(shù)據(jù)源即可創(chuàng)建數(shù)據(jù)同步任務(wù),支持RDBMS、Hive、HBase、ClickHouse、MongoDB等數(shù)據(jù)源,RDBMS數(shù)據(jù)源可批量創(chuàng)建數(shù)據(jù)同步任務(wù),支持實(shí)時(shí)查看數(shù)據(jù)同步進(jìn)度及日志并提供終止同步功能,集成并二次開發(fā)xxl-job可根據(jù)時(shí)間、自增主鍵增量同步數(shù)據(jù)。
-
任務(wù)"執(zhí)行器"支持集群部署,支持執(zhí)行器多節(jié)點(diǎn)路由策略選擇,支持超時(shí)控制、失敗重試、失敗告警、任務(wù)依賴,執(zhí)行器CPU.內(nèi)存.負(fù)載的監(jiān)控等等。后續(xù)還將提供更多的數(shù)據(jù)源支持、數(shù)據(jù)轉(zhuǎn)換UDF、表結(jié)構(gòu)同步、數(shù)據(jù)同步血緣等更為復(fù)雜的業(yè)務(wù)場(chǎng)景。
1.2. datax-web架構(gòu)
1. DataX-web的二進(jìn)制包下載
#把下載的datax-web二進(jìn)制tar包上傳至/usr/local/soft
cd /usr/local/soft/#解壓
tar -xf datax-web-2.1.2.tar.gz
2. 執(zhí)行一鍵安裝腳本
cd datax-web-2.1.2/
#執(zhí)行一鍵安裝腳本
./bin/install.sh2023-10-14 23:06:55.058 [INFO] (9341) Creating directory: [/usr/local/soft/datax-web-2.1.2/bin/../modules].
2023-10-14 23:06:55.062 [INFO] (9341) ####### Start To Uncompress Packages ######
2023-10-14 23:06:55.064 [INFO] (9341) Uncompressing....
Do you want to decompress this package: [datax-admin_2.1.2_1.tar.gz]? (Y/N)y #你想解壓縮這個(gè)包嗎(datax-admin_2.1.2_1.tar.gz)這里選擇y解壓
2023-10-14 23:06:57.422 [INFO] (9341) Uncompress package: [datax-admin_2.1.2_1.tar.gz] to modules directory
Do you want to decompress this package: [datax-executor_2.1.2_1.tar.gz]? (Y/N)y #你想解壓縮這個(gè)包嗎(datax-executor_2.1.2_1.tar.gz)這里選擇y解壓
2023-10-14 23:07:00.938 [INFO] (9341) Uncompress package: [datax-executor_2.1.2_1.tar.gz] to modules directory
2023-10-14 23:07:01.162 [INFO] (9341) ####### Finish To Umcompress Packages ######
Scan modules directory: [/usr/local/soft/datax-web-2.1.2/bin/../modules] to find server under dataxweb
2023-10-14 23:07:01.166 [INFO] (9341) ####### Start To Install Modules ######
2023-10-14 23:07:01.168 [INFO] (9341) Module servers could be installed:[datax-admin] [datax-executor]
Do you want to confiugre and install [datax-admin]? (Y/N)y #是否要確認(rèn)并安裝datax-admin
2023-10-14 23:07:03.516 [INFO] (9341) Install module server: [datax-admin]
Start to make directory
2023-10-14 23:07:03.532 [INFO] (9381) Start to build directory
2023-10-14 23:07:03.536 [INFO] (9381) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../logs].
2023-10-14 23:07:03.570 [INFO] (9381) Directory or file: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../conf] has been exist
2023-10-14 23:07:03.572 [INFO] (9381) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-admin/bin/../data].
end to make directory
Start to initalize database
2023-10-14 23:07:03.598 [INFO] (9381) Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [/usr/local/soft/datax-web-2.1.2/bin/db/datax_web.sql]? (Y/N)y 是否要使用sql初始化數(shù)據(jù)庫,這里選擇y
Please input the db host(default: 127.0.0.1): #請(qǐng)輸入數(shù)據(jù)庫主機(jī),這里回車,選擇127.0.0.1
Please input the db port(default: 3306): #請(qǐng)輸入數(shù)據(jù)庫端口,這里回車,選擇3306
Please input the db username(default: root): #請(qǐng)輸入數(shù)據(jù)庫用戶名,這里回車,選擇root
Please input the db password(default: ): 1234 #請(qǐng)輸入數(shù)據(jù)庫密碼,這里輸入1234
Please input the db name(default: dataxweb)
mysql: [Warning] Using a password on the command line interface can be insecure.
Do you want to confiugre and install [datax-executor]? (Y/N)y #是否要確認(rèn)并安裝datax-executor,這里選擇安裝
2023-10-14 23:07:27.697 [INFO] (9341) Install module server: [datax-executor]
2023-10-14 23:07:27.713 [INFO] (9425) Start to build directory
2023-10-14 23:07:27.715 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../logs].
2023-10-14 23:07:27.739 [INFO] (9425) Directory or file: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../conf] has been exist
2023-10-14 23:07:27.741 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../data].
2023-10-14 23:07:27.764 [INFO] (9425) Creating directory: [/usr/local/soft/datax-web-2.1.2/modules/datax-executor/bin/../json].
2023-10-14 23:07:27.789 [INFO] (9341) ####### Finish To Install Modules ######
3. 修改配置文件
#/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路徑
vim modules/datax-executor/bin/env.properties
...
#修改如下:DATAX_ADMIN_PORT=9527 #保持和datax-admin端口一致
PYTHON_PATH=/usr/local/soft/datax/bin/datax.py #指定datax的路徑
...
4. 啟動(dòng)服務(wù)
#一鍵啟動(dòng)所有服務(wù)
/usr/local/soft/datax-web-2.1.2/bin/start-all.sh2023-10-14 23:26:40.112 [INFO] (10448) Try To Start Modules In Order
2023-10-14 23:26:40.118 [INFO] (10456) ####### Begin To Start Module: [datax-admin] ######
2023-10-14 23:26:40.124 [INFO] (10464) load environment variables
2023-10-14 23:26:40.420 [INFO] (10464) DATAX-ADMIN has been started in process
2023-10-14 23:26:40.427 [INFO] (10625) ####### Begin To Start Module: [datax-executor] ######
2023-10-14 23:26:40.433 [INFO] (10633) load environment variables
2023-10-14 23:26:40.710 [INFO] (10633) java
2023-10-14 23:26:40.713 [INFO] (10633) Waiting DATAX-EXEXUTOR to start complete ...
2023-10-14 23:26:40.853 [INFO] (10633) DATAX-EXEXUTOR start success#一鍵停掉所有服務(wù)
/usr/local/soft/datax-web-2.1.2/bin/stop-all.sh
5. 測(cè)試datax-web是否可以通過瀏覽器訪問
-
在瀏覽器中輸入http://ip:9527/index.html就可以訪問對(duì)應(yīng)的主界面(ip為datax-admin部署所在服務(wù)器ip,port為為datax-admin 指定的運(yùn)行端口)
-
輸入用戶名 admin 密碼 123456 就可以直接訪問系統(tǒng)
mysql數(shù)據(jù)同步到sql-server
- 首先完成這個(gè)數(shù)據(jù)同步之前先安裝MySQL并創(chuàng)建庫和表并寫入數(shù)據(jù),然后安裝sql-server并創(chuàng)建表
1. 在MySQL上創(chuàng)建數(shù)據(jù)庫,并寫入數(shù)據(jù)
- 由于本機(jī)已經(jīng)安裝MySQL,所以不需要安裝。
create database db1 default charset=utf8;
use db1;
#創(chuàng)建表格
create table stuinfo(-> id int(10),-> name char(4) not null,-> age int(4) not null,-> sex char(10),-> likes char(20) );
#導(dǎo)入數(shù)據(jù)
mysql> insert into stuinfo values('001','bob','25','boy','run'),('002','andy','28','boy','read a book');
#查看表格信息
mysql> select * from stuinfo;
+------+------+-----+------+-------------+
| id | name | age | sex | likes |
+------+------+-----+------+-------------+
| 1 | bob | 25 | boy | run |
| 2 | andy | 28 | boy | read a book |
+------+------+-----+------+-------------+
2 rows in set (0.00 sec)
2. 安裝sqlserver并創(chuàng)建表格
#下載yum源
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo > /etc/yum.repos.d/mssql-server.repo
#安裝
yum install -y mssql-server
#程序包安裝完成后,請(qǐng)運(yùn)行 mssql-conf setup 命令選擇安裝版本并按提示進(jìn)行安裝,具體操作如下:
/opt/mssql/bin/mssql-conf setup
#回車后---》選擇版本號(hào)---》選擇是否同意許可條款--》創(chuàng)建sa的密碼--》回車
#配置完成后,請(qǐng)驗(yàn)證服務(wù)是否正在運(yùn)行
systemctl status mssql-server
- 通過NaviCat連接SQL server并創(chuàng)建表格
3. 創(chuàng)建項(xiàng)目
- 點(diǎn)擊項(xiàng)目管理—》添加—》填寫項(xiàng)目名稱和描述點(diǎn)擊確定即可
4. 添加數(shù)據(jù)源
- 點(diǎn)擊數(shù)據(jù)源管理-----》添加—》填寫數(shù)據(jù)源信息
- 這里需要添加兩個(gè)數(shù)據(jù)源分別是MySQL和SQL server的
5. 創(chuàng)建任務(wù)模板
- 任務(wù)管理—》DataX任務(wù)模板—》填寫任務(wù)信息
6. 創(chuàng)建任務(wù)構(gòu)建
- 任務(wù)管理–》任務(wù)構(gòu)建–》步驟1構(gòu)建reader–>步驟2構(gòu)建write—>步驟3字段映射–》步驟4構(gòu)建
7.驗(yàn)證:
- 執(zhí)行一次任務(wù)查看是否同步成功