阿裡雲•數加上如果要實作大資料上雲,可選的工具有以下幾種(如下圖所示),主要分為批量加載工具和實時采集工具兩大類。工具這麼多,那麼我應該選擇哪一個呢?

首先第一就是确定您的業務場景對實時性的要求。
a) 如果是實時性要求不高,則采用批量加載類工具,定時完成批量資料加載即可。比如離線數倉,離線bi資料分析等場景。
b) 如果對實時性要求很高,資料一産生就需要即時看到分析結果,則采用實時采集類工具。如實時監控,實時分析,實時大屏等場景。
不過也有例外,在某些離線場景下有時候也會采用實時采集工具來完成資料上雲。比如每天都有海量資料(可能tb級别甚至更多)需要同步,批量定時同步的話同步時間過長,無法滿足業務要求,此時可以考慮采用實時采集工具來完成資料上雲,以滿足對同步時間的要求。
資料內建(di)是數加提供的官方同步工具,分為界面向導模式和腳本模式兩種開發模式。如果您是離線資料加工場景,那麼優先推薦選擇它。它可以完成阿裡雲雲上資料到maxcompute的大部分離線場景。比如常見的:
a) 從rds/drds同步到maxcompute
b) 從ecs(自建mysql/oracle等)同步到maxcompute
c) 從ecs(檔案)同步到maxcompute
d) 從oss/ots等阿裡雲産品同步到maxcomdpute
e) 資料在idc機房,并且企業已經搭建阿裡雲實體專線連接配接,此時可以通過資料內建(di)自定義排程資源的方式完成資料上雲。
datax(開源)阿裡開源的離線資料同步工具,可以了解它是資料內建(di)的單機版實作,它與資料內建(di)所支援的資料源是基本相同的。但有些時候因為網絡、安全或者自定義需求等情況,無法用資料內建(di)來完成企業的需求,此時可以考慮使用datax來完成。比如:
a) 資料在本地idc機房,idc的機器無法添加為資料內建(di)的執行agent
b) 企業期望對同步任務資源占用有完全的控制權(包括但不限于記憶體占用量、完全掌控同步流控等);
c) 企業具有一定的系統運維能力,期待腳本化、定制化的資料上雲政策。比如本地環境已有任務排程系統,期待使用此排程系統觸發執行同步作業;
d) 資料上雲是臨時性的、一次性的操作;
di on hadoop适用于企業已有hadoop叢集,且對資料同步性能有很高的要求,此時用di on hadoop工具來完成資料上雲。它可以充分的利用現有hadoop 叢集的能力,來快速完成從hadoop 到 maxcompute的資料遷移或上雲。但它對網絡情況也有一定要求,它要求hadoop叢集的機器必須可以通過公網或者專線的方式,能過連通maxcompute。
maxcompute用戶端中有tunnel 指令,它适用于原始資料存在在檔案,臨時或一次性上傳一些資料到maxcompute。
tunnel sdk :在上述工具均無法滿足需求時,可以通過自己調用tunnel sdk實作更加靈活自由的資料上傳需求。比如:
a) 資料下載下傳過程中,需要根據資料内容不同,分發到不同的資料庫或分庫分表。
logstash / flume / flunted 為3個開源的資料采集工具,阿裡雲分别為其提供了寫入datahub的插件,可以實作資料采集後輸出到datahub。适用于大部分檔案類資料采集類需求,如行為日志,系統日志等。選擇這3個,主要取決于使用者自己的技術傾向。
logstash 為jruby開發,flume為java開發,flunted為ruby開發。三者性能上來看flunted略差,logstash和flume應該說不分仲伯吧,暫無明确資料對比。
log service(日志服務)是阿裡雲提供的針對日志類資料的一站式服務,它可以完成采集日志資訊,并将其投遞給各種下遊産品,其中就包括stream compute 和 maxcompute。它與logstash / flume / flunted 所完成的場景類似,選擇哪個主要取決于客戶的使用習慣或技術傾向,暫無比較明顯的差別。
dts(資料傳輸服務)是阿裡雲提供的雲上資料的實時傳輸服務,适用于采集rds(mysql)的實時更新資料,并将其傳輸給datahub或maxcompute。如果你有雲上rds(mysql)資料需要上傳到大資料平台,那麼可以選擇它。不過它采集的是binlog資訊,到maxcompute後還需對資料做合并和預處理。
ogg(oracle goldengate)主要适用于源庫為oracle,可以通過其采集實時更新資料到datahub中。一般在公共雲上比較少見,但在專有雲即線下機房比較常見。
di on hadoop 暫無,目前還未完全開放。