DATAX 異構數據源離線同步工具

DATAX 相關了解


簡介

​DataX 是一個異構數據源離線同步工具,致力於實現包括關係型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各類異構數據源之間穩定高效的數據同步功能python


設計理念

​爲了解決異構數據源同步問題,DataX將複雜的網狀的同步鏈路變成了星型數據鏈路,DataX做爲中間傳輸載體負責鏈接各類數據源。當須要接入一個新的數據源的時候,只須要將此數據源對接到DataX,便能跟已有的數據源作到無縫數據同步。mysql

alt 圖片


使用步驟

  • 下載datax的安裝包linux

  • 解壓gz包git

    • 運行解壓命令,我這裏解壓到home目錄
    tar -zxvf ./datax.tar.gz
    • linux解壓之後目錄有
    bin  conf  job  lib  log  log_perf  plugin  script  tmp
    • 參考我本身配置的job.json( 注意參考使用的時候,去除註釋)
    {
    "job": {
        "setting": {
            "speed": {
            	"channel": 15,
    				"record":-1,
    				"byte":-1,
    				"batchSize":2048
            }
        },
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "username": "xxxx",
                        "password": "xxxx",
    						"column": ["*"],
                        "where":"",
                        "connection": [
                            {
    
                                "jdbcUrl": ["jdbc:oracle:thin:@ip:1521:SID"],
    								"table": ["T_PLT_VEHICLE_LOCATION"]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "xxxx",
                        "password": "xxxx",
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://ip:3306/庫名?useUnicode=true&characterEncoding=utf-8",
                                "table": [
                                    "t_plt_vehicle_location"
                                    ]
                                }
                            ]
                        }
                    }
                }
            ]
        }
    }
  • 編寫本身的jobgithub

    • 進入解壓的job 目錄,編寫一個本身的job.json 官網參考地址
    • 參考已經支持的數據源讀寫配置,創建本身的job
  • 進行運行sql

    • 執行
    python2 /home/datax/bin/datax.py  /home/datax/job/job1.json
  • 優化datax策略數據庫

    • 參數優化
    "speed": {
            	"channel": 20,  ##線程數量
    				"record":-1, ##此處解除對讀取行數的限制
    				"byte":-1, ##此處解除對字節的限制
    				"batchSize":2048 ##每次讀取batch的大小
            }
    • 運行的jvm 優化
    --jvm="-Xms3G -Xmx3G"
    
    例子:nohup  python2 /home/datax/bin/datax.py --jvm="-Xms3G -Xmx3G"  /home/datax/job/job1.json &

運行成功之後,查看運行的日誌,以及去寫入的數據源進行查看,數據已經正常寫入。json

測試結果1000萬數據,耗時9分鐘,線程數10,其餘默認oracle

相關文章
相關標籤/搜索