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 如果資料被...