資料收集之DataX

2021-08-22 16:29:05 字數 3430 閱讀 8990

datax是阿里開源的離線資料同步工具,可以實現包括 mysql、oracle、mongodb、hive、hdfs、hbase、elasticsearch等各種異構資料來源之間的高效同步。

設計理念

為了解決異構資料來源同步問題,datax將複雜的網狀同步鏈路變成星型鏈路,datax作為中間傳輸載體負責連線各種資料來源。當需要接入乙個新的資料來源的時候,只需將此資料來源對接到datax,便能跟已有資料來源做到無縫資料同步。

框架設計

採用framework + plugin架構構建。將資料來源讀取和寫入抽象成為reader/writer外掛程式,納入到整個同步框架中。

核心架構

工具部署

```shell

[root@node2 /data/software]# wget

[root@node2 /data/software]# tar -zxvf datax.tar.gz

[root@node2 /data/software/datax]# python bin/datax.py job/job.json #自檢

```

目錄結構
[root@node2 /data/software/datax]# tree -l 3 -i '*jar*'

.├── bin 啟動指令碼

│ ├── datax.py

│ ├── dxprof.py

│ └── perftrace.py

├── conf 核心配置

│ ├── core.json

│ └── logback.xml

├── job job目錄

│ └── job.json

├── lib 核心類庫

├── log

├── log_perf

├── plugin 插卡目錄

│ ├── reader

│ │ ├── drdsreader

│ │ ├── ftpreader

│ │ ├── hbase094xreader

│ │ ├── hbase11xreader

│ │ ├── hdfsreader

│ │ ├── mongodbreader

│ │ ├── mysqlreader

│ │ ├── odpsreader

│ │ ├── oraclereader

│ │ ├── ossreader

│ │ ├── otsreader

│ │ ├── otsstreamreader

│ │ ├── postgresqlreader

│ │ ├── rdbmsreader

│ │ ├── sqlserverreader

│ │ ├── streamreader

│ │ └── txtfilereader

│ └── writer

│ ├── adswriter

│ ├── drdswriter

│ ├── ftpwriter

│ ├── hbase094xwriter

│ ├── hbase11xsqlwriter

│ ├── hbase11xwriter

│ ├── hdfswriter

│ ├── mongodbwriter

│ ├── mysqlwriter

│ ├── ocswriter

│ ├── odpswriter

│ ├── oraclewriter

│ ├── osswriter

│ ├── otswriter

│ ├── postgresqlwriter

│ ├── rdbmswriter

│ ├── sqlserverwriter

│ ├── streamwriter

│ └── txtfilewriter

├── script

│ └── readme.md

└── tmp

└── readme.txt

datax配置

,

"speed":

},"content":[

] }},

"writer":, , , ] }}}

]}

}

datax執行結果
[root@node2 /data/software/datax]# python bin/datax.py -j"-xms125m -xmx125m" job/mysql_hdfs.json

任務啟動時刻 : 2018-08-10

23:51:58

任務結束時刻 : 2018-08-10

23:52:24

任務總計耗時 : 25s

任務平均流量 : 5b/s

記錄寫入速度 : 0

rec/s

讀出記錄總數 : 3

讀寫失敗總數 : 0

[root@node3 /data/software]# hdfs dfs -cat /test/access_log/*

01:01:01

201:10:01

201:01:01

2

思路

增量模板+shell+crontab。

1.定義datax任務執行模板檔案 如"where":"event_time>='$' and event_time<='$'"。

2.每次定時任務啟動時根據上次偏移量替換模板檔案中增量變數。

3.執行完後記錄此次偏移量。

注意
1.時間增量,需記錄每次時間偏移量。

2.自增id增量,需記錄每次自增id偏移量。

3.不論是時間增量還是自增id增量,記得給資料同步留下足夠的時間。如從庫同步延遲。

4.實際中,要結合資料庫索引情況合理設定增量條件,提高每次查詢速度。

5.若沒有任何增量規律,datax只能做全量同步。

DataX資料同步

wget tar xvf datax.tar.gz vi bash profile source bash profile在 datax home job目錄下,編寫同步指令碼 username root password 123456 splitpk id writer username root...

機器學習三之資料收集

爬蟲 買 實時資料 網上公開的資料集 資料處理成指定的格式 篩選資料 輸入模型,進行訓練 調優儲存模型 load開頭的小資料集 fetch開頭的是大資料集 make 本地資料集 from sklearn.datasets import 鳶尾花資料集 data load iris print data...

資料收集之flume與kafka

flume是實時日誌收集系統,管道流方式,提供了很多的預設實現。kafka是可持久化的分布式訊息佇列。kafka 是乙個通用的系統,可以有許多生產者和消費者共享多個主題。相比之下,flume是乙個專用工具,被設計為旨在往hdfs,hbase傳送資料。如果資料被多個系統消費,使用kafka 如果資料被...