datax 是阿里巴巴集團內被廣泛使用的離線資料同步工具/平台,實現包括 mysql、oracle、sqlserver、postgre、hdfs、hive、ads、hbase、ots、odps 等各種異構資料來源之間高效的資料同步功能。
datax本身作為資料同步框架,將不同資料來源的同步抽象為從源頭資料來源讀取資料的reader外掛程式,以及向目標端寫入資料的writer外掛程式,理論上datax框架可以支援任意資料來源型別的資料同步工作。同時datax外掛程式體系作為一套生態系統, 每接入一套新資料來源該新加入的資料來源即可實現和現有的資料來源互通。
datax是離線資料同步工具,當需要遷移增量時,建議使用dts,而不是datax;
針對離線資料,當資料量很大或表非常多時,建議使用datax。此時配置檔案可編寫指令碼批量生成,詳見odps資料遷移指南。同時可以增大datax本身的併發,並提高執行datax的任務機數量,來達到高併發,從而實現快速遷移;
如下是datax的配置檔案示例:
},"writer":}}
],"setting":}}
}
整個配置檔案是乙個job的描述;
job下面有兩個配置項,content和setting,其中content用來描述該任務的源和目的端的資訊,setting用來描述任務本身的資訊;
content又分為兩部分,reader和writer,分別用來描述源端和目的端的資訊;
本例中由於源和目的都是odps,所以型別為odpsreader和odpswriter。均包含accessid,accesskey與odpsserver的api位址。
同時預遷移表的project,table以及列名和分割槽資訊都要一一填寫清楚。
setting中的speed項表示同時起20個併發去跑該任務。
執行datax任務很簡單,只要執行python指令碼即可。
python /home/admin/datax3/bin/datax.py ./json/table_1.json
執行後,可在終端檢視執行資訊。建議真正跑任務時,可按照odps遷移指南中給出的批量工具的方式執行。即將所有的命令整理到乙個s**件中,最後再用nohup執行該檔案。
cat /root/datax_tools/run_datax.sh
python /home/admin/datax3/bin/datax.py ./json/table_1.json > ./log/table_1.log
#實際執行
nohup /root/datax_tools/run_datax.sh > result.txt 2>&1 &
datax調優要分成幾個部分,任務機指執行datax任務所在的機器。
網路本身的頻寬等硬體因素造成的影響;
datax本身的引數;
從源端到任務機;
從任務機到目的端;
即當覺得datax傳輸速度慢時,需要從上述四個方面著手開始排查。
此部分主要需要了解網路本身的情況,即從源端到目的端的頻寬是多少,平時使用量和繁忙程度的情況,從而分析是否是本部分造成的速度緩慢。一下提供幾個思路。
可使用從源端到目的端scp的方式觀察速度;
結合監控觀察任務執行時間段時,網路整體的繁忙情況,來判斷是否應將任務避開網路高峰執行;
觀察任務機的負載情況,尤其是網路和磁碟io,觀察其是否成為瓶頸,影響了速度;
可通過增加如下的core引數,去除掉datax預設對速度的限制;
}}
},"job":
}
針對odpsreader有如下引數可以調節,注意並不是壓縮速度就會提公升,根據具體情況不同,速度還有可能下降,此項為試驗項,需要具體情況具體分析。
...
「parameter」:
針對odpswrtier有如下引數可以調節,其中iscompress選項同reader,blocksizeinmb,為按塊寫入,後面的值為塊的大小。該項值並不是越大越好,一般可以結合tunnel做綜合考量。過分大的 blocksizeinmb 可能造成速度波動以及記憶體oom。
...
「parameter」:
針對任務本身,有如下引數可以調節,注意如果調整了tunnel的數量,可能會造成jvm虛擬機器崩潰,故需修改相應的引數;
"job":
}channel增大,為防止oom,需要修改datax工具的datax.py檔案。如下所示,可根據任務機的實際配置,提公升-xms與-xmx,來防止oom。由此可以看出,tunnel並不是越大越好,過分大反而會影響宿主機的效能。
default_jvm = "-xms1g -xmx1g -xx:+heapdumponoutofmemoryerror -xx:heapdumppath=%s/log" % (datax_home)
可使用datax從源端傳輸分割槽資訊到本機,來觀察速度。並和初始任務的速度進行比較,從而判斷是哪一部分的原因造成的速度緩慢;具體配置檔案如下:
"writer":
試驗時,注意觀察任務機本身的io負載。
如果判斷結果是源端的速度慢,可將任務機遷移至源端所在的集群,並再次執行任務,觀察結果;
odpscmd --config=odps_config.ini.src
tunnel download -thread 20 project_name.table_name/dt='20150101' log.txt;
如果是在專有雲環境可嘗試指定源端的tunnel server的ip進行測試,從而排除從網域名稱到負載均衡部分的網路造成的影響。源端的tunnel server的ip需要諮詢雲端管理員。
...「parameter」:,,,
,],
"fielddelimiter": ","
}如果判斷結果是源端的速度慢,可將任務機遷移至源端所在的集群,並再次執行任務,觀察結果;
可嘗試用odpscmd,直接從本地上傳分割槽到目的端,和上述結果作比較。如果odpscmd速度快,可嘗試調整datax的相關引數;
odpscmd --config=odps_config.ini.src
tunnel upload ./log.txt mingxuantest/pt='20150101';
如果是在專有雲環境可嘗試指定指定端的tunnel server的ip進行測試,從而排除從網域名稱到負載均衡部分的網路造成的影響。源端的tunnel server的ip需要諮詢雲端管理員。
...
注意此步驟可選擇負載較低的tunnel_server。
觀察源端tunnel server的負載情況,尤其是磁碟io和網絡卡的負載,從而判斷是否為tunnel sever負載過高造成了資源瓶頸。
通過對datax本身引數,源端到任務機、任務機到目的端的網路、負載等情況綜合考量,進行針對各個部分的優化;
同時,可在多台機器上部署datax,將任務平均分配到多台機器上併發執行,來提高速度;
Ubuntu apt 使用指南
起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...
CImageList使用指南
1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...
CImageList使用指南
cimagelist使用指南 1.綜述 在 mfc中cimagelist類封裝了影象列表控制項的功能,影象列表是乙個具有相同大小的影象 可以是不同型別 的集合,其主要用於應用程式中大 規模圖示的儲存,該控制項是不可見的。通常與其它如clistbox,ccombobox,ccomboboxex以及ct...