datax和oushudb

@TOC

DataX概述

DataX 是阿里巴巴集團(tuán)內(nèi)被廣泛使用的離線數(shù)據(jù)同步工具/平臺,實(shí)現(xiàn)包括 MySQL饰剥、Oracle、SqlServer畸悬、Postgre、HDFS珊佣、Hive蹋宦、ADS闺骚、HBase、TableStore(OTS)妆档、MaxCompute(ODPS)、DRDS 等各種異構(gòu)數(shù)據(jù)源之間高效的數(shù)據(jù)同步功能虫碉。

Github地址:https://github.com/alibaba/DataX

  • Features
    將不同數(shù)據(jù)源的同步抽象為從源頭數(shù)據(jù)源讀取數(shù)據(jù)的Reader插件贾惦,以及向目標(biāo)端寫入數(shù)據(jù)的Writer插件,理論上DataX框架可以支持任意數(shù)據(jù)源類型的數(shù)據(jù)同步工作敦捧。同時DataX插件體系作為一套生態(tài)系統(tǒng), 每接入一套新數(shù)據(jù)源該新加入的數(shù)據(jù)源即可實(shí)現(xiàn)和現(xiàn)有的數(shù)據(jù)源互通须板。
在這里插入圖片描述
  • 設(shè)計(jì)理念
    DataX將復(fù)雜的網(wǎng)狀的同步鏈路變成了星型數(shù)據(jù)鏈路,DataX作為中間傳輸載體負(fù)責(zé)連接各種數(shù)據(jù)源兢卵。當(dāng)需要接入一個新的數(shù)據(jù)源的時候习瑰,只需要將此數(shù)據(jù)源對接到DataX,便能跟已有的數(shù)據(jù)源做到無縫數(shù)據(jù)同步秽荤。

DataX3.0設(shè)計(jì)框架

在這里插入圖片描述

DataX本身作為離線數(shù)據(jù)同步框架甜奄,采用Framework + plugin架構(gòu)構(gòu)建。將數(shù)據(jù)源讀取和寫入抽象成為Reader/Writer插件窃款,納入到整個同步框架中课兄。

  • Reader:Reader為數(shù)據(jù)采集模塊,負(fù)責(zé)采集數(shù)據(jù)源的數(shù)據(jù)晨继,將數(shù)據(jù)發(fā)送給Framework
  • Writer: Writer為數(shù)據(jù)寫入模塊烟阐,負(fù)責(zé)不斷從Framework取數(shù)據(jù),并將數(shù)據(jù)寫入到目的端紊扬。
  • Framework:Framework用于連接reader和writer蜒茄,作為兩者的數(shù)據(jù)傳輸通道,并處理緩沖餐屎,流控,并發(fā)啤挎,數(shù)據(jù)轉(zhuǎn)換等核心技術(shù)問題。

支持插件體系

經(jīng)過幾年積累庆聘,DataX目前已經(jīng)有了比較全面的插件體系,主流的RDBMS數(shù)據(jù)庫伙判、NOSQL象对、大數(shù)據(jù)計(jì)算系統(tǒng)都已經(jīng)接入。DataX目前支持?jǐn)?shù)據(jù)如下:

詳情參考:https://github.com/alibaba/DataX

在這里插入圖片描述

DataX3.0核心架構(gòu)

DataX3.0開源版本支持單機(jī)多線程模式完成同步作業(yè)運(yùn)行勒魔,本小節(jié)按一個DataX作業(yè)聲明周期的時序圖甫煞,從整體架構(gòu)設(shè)計(jì)非常簡要說明DataX各個模塊相互關(guān)系冠绢。


在這里插入圖片描述
  • 核心模塊介紹:
  1. DataX完成單個數(shù)據(jù)同步的作業(yè)抚吠,我們稱之為Job,DataX接受到一個Job之后弟胀,將啟動一個進(jìn)程來完成整個作業(yè)同步過程楷力。DataX Job模塊是單個作業(yè)的中樞管理節(jié)點(diǎn)孵户,承擔(dān)了數(shù)據(jù)清理、子任務(wù)切分(將單一作業(yè)計(jì)算轉(zhuǎn)化為多個子Task)夏哭、TaskGroup管理等功能。
  2. DataXJob啟動后何址,會根據(jù)不同的源端切分策略械念,將Job切分成多個小的Task(子任務(wù))头朱,以便于并發(fā)執(zhí)行龄减。Task便是DataX作業(yè)的最小單元,每一個Task都會負(fù)責(zé)一部分?jǐn)?shù)據(jù)的同步工作希停。
  3. 切分多個Task之后,DataX Job會調(diào)用Scheduler模塊亚隙,根據(jù)配置的并發(fā)數(shù)據(jù)量,將拆分成的Task重新組合阿弃,組裝成TaskGroup(任務(wù)組)羞延。每一個TaskGroup負(fù)責(zé)以一定的并發(fā)運(yùn)行完畢分配好的所有Task渣淳,默認(rèn)單個任務(wù)組的并發(fā)數(shù)量為5伴箩。
  4. 每一個Task都由TaskGroup負(fù)責(zé)啟動,Task啟動后,會固定啟動Reader—>Channel—>Writer的線程來完成任務(wù)同步工作怔蚌。
  5. DataX作業(yè)運(yùn)行起來之后旁赊,Job監(jiān)控并等待多個TaskGroup模塊任務(wù)完成,等待所有TaskGroup任務(wù)完成后Job成功退出终畅。否則,異常退出声离,進(jìn)程退出值非0
  • DataX調(diào)度流程:

舉例來說瘫怜,用戶提交了一個DataX作業(yè),并且配置了20個并發(fā)鲸湃,目的是將一個100張分表的mysql數(shù)據(jù)同步到odps里面。 DataX的調(diào)度決策思路是:

  1. DataXJob根據(jù)分庫分表切分成了100個Task暗挑。
  2. 根據(jù)20個并發(fā),DataX計(jì)算共需要分配4個TaskGroup垃它。
  3. 4個TaskGroup平分切分好的100個Task,每一個TaskGroup負(fù)責(zé)以5個并發(fā)共計(jì)運(yùn)行25個Task国拇。

部署DataX

直接下載DataX工具包:DataX下載地址(http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
下載后解壓至本地某個目錄惯殊,進(jìn)入bin目錄酱吝,即可運(yùn)行同步作業(yè):

$ cd  {YOUR_DATAX_HOME}/bin
$ python datax.py {YOUR_JOB.json}

在oushudb中準(zhǔn)備源表和目標(biāo)表

create table source_table(id int); //準(zhǔn)備源表
INSERT INTO source_table select generate_series(1,1000); 往源表中寫入測試數(shù)據(jù)
create table target_table(id int); //準(zhǔn)備目標(biāo)表

根據(jù)postgresql模板配置json

# 對應(yīng)參數(shù)說明文檔
https://github.com/alibaba/DataX/blob/master/postgresqlreader/doc/postgresqlreader.md
https://github.com/HashDataInc/DataX/blob/master/gpdbwriter/doc/gpdbwriter.md

python datax.py -r postgresqlreader -w gpdbwriter >oushudb.json.tamplate

編寫json:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "postgresqlreader",
                    "parameter": {
                        "column": [ "id"],
                        "connection": [
                            {
                                "jdbcUrl": [ "jdbc:postgresql://127.0.0.1:5432/postgres" ],
                                "table":  [ "public.source_table" ]
                            }
                        ],
                        "password": "gpadmin",
                        "username": "gpadmin"
                    }
                },
                "writer": {
                    "name": "gpdbwriter",
                    "parameter": {
                        "column": [ "id" ],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:postgresql://127.0.0.1:5432/postgres",
                                "table": [ "public.target_table" ]
                            }
                        ],
                        "preSql": [ "select 'beginTime: '||now();truncate table target_table" ],
                        "postSql": [ "select 'endTime: '||now() " ],
                        "segment_reject_limit": 0,
                        "username": "gpadmin",
                        "password": "gpadmin"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

執(zhí)行job

python datax.py oushu.json
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末土思,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子己儒,更是在濱河造成了極大的恐慌,老刑警劉巖该镣,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異损合,居然都是意外死亡省艳,警方通過查閱死者的電腦和手機(jī)嫁审,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辐烂,“玉大人,你說我怎么就攤上這事纠修〕” “怎么了扣草?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵颜屠,是天一觀的道長。 經(jīng)常有香客問我甫窟,道長,這世上最難降的妖魔是什么粗井? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮呆瞻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘径玖。我一直安慰自己,他們只是感情好赞赖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布冤灾。 她就那樣靜靜地躺著,像睡著了一般韵吨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天漏峰,我揣著相機(jī)與錄音届榄,去河邊找鬼浅乔。 笑死铝条,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的班缰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芯砸,長吁一口氣:“原來是場噩夢啊……” “哼给梅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起动羽,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渔期,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疯趟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倦青,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年盹舞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踢步。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖述雾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玻孟,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布取募,位于F島的核電站,受9級特大地震影響玩敏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜织阳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一砰粹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碱璃,春花似錦、人聲如沸嵌器。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讥珍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趟卸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工衰腌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觅赊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓吮螺,卻偏偏與公主長得像帕翻,于是被迫代替她去往敵國和親萝风。 傳聞我的和親對象是個殘疾皇子嘀掸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 概覽 DataX 是一個異構(gòu)數(shù)據(jù)源離線同步工具睬塌,致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(MySQL、Oracle等)揩晴、HDFS...
    tracy_668閱讀 701評論 0 1
  • 開篇 ?最早接觸DataX是在前阿里同事在現(xiàn)在的公司引入的時候提到的贪磺,一直想抽空好好看看這部分代碼,因?yàn)镈ataX...
    晴天哥_王志閱讀 42,089評論 16 45
  • 1. DataX 概述及安裝 DataX 是被廣泛使用的數(shù)據(jù)同步工具寒锚,由阿里巴巴集團(tuán)使用 Java 和 Pytho...
    珺王不早朝閱讀 10,609評論 0 2
  • DataX簡介 DataX是什么?它是干什么用的泳赋?下面是官方給的介紹。 DataX 是阿里巴巴集團(tuán)內(nèi)被廣泛使用的離...
    Rudolf_liu閱讀 2,288評論 0 0
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月祖今,有人笑有人哭轧飞,有人歡樂有人憂愁撒踪,有人驚喜有人失落过咬,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,536評論 28 53