ETL工具Datax、sqoop、kettle 的區別
一、Sqoop主要特點:
1.可以將關係型資料庫中的數據導入到hdfs,hive,hbase等hadoop組件中,也可以將hadoop組件中的數據導入到關係型資料庫中;
2.sqoop在導入導出數據時,充分採用了map-reduce計算框架(默認map數為4),根據輸入條件生成一個map-reduce作業(只有map,沒有reduce),在hadoop集群中運行。採用map-reduce框架同時在多個節點進行import或者export操作,熟讀比單節點運行多個並行效率高,同時提供了良好的並發性和容錯性;
3.支援insert,update模式,可以選擇參數,若內容存在就更新,若不存在就插入;
4.對國外主流關係型資料庫支援性更好。
二、Datax 主要特點:
1、異構資料庫和文件系統之間的數據交換;
2、採用 Framework + plugin 架構構建,Framework 處理了緩衝,流控,並發,上下文載入等高速數據交換的大部分技術問題,提供了簡單的介面與插件交互,插件僅需實現對數據處理系統的訪問;
3、數據傳輸過程在單進程(單進程多執行緒)內完成,全記憶體操作,不讀寫磁碟,也沒有 IPC(進程之間的通訊);
4、開放式的框架,開發者可以在極短的時間開發一個新插件以快速支援新的資料庫/文件系統。
三、Kettle 主要特點:
1、kettle (數據抽取、清洗、轉換、裝載)是由 java 編寫,可以在 Window、Linux、Unix 上運行。支援多數據源, 多種中間件的專業 ETL 工具。
2、支援圖形化 GUI 設計介面,組件多樣性,支援 http 請求,上手簡單支援拖拽,支援 sql , 可以編寫js ,可以編寫一些 java 程式碼,然後以工作流的形式流轉。如果沒有衝突可以並行執行,並行開發。在工具內可以查看 讀 寫 修改 輸出 更新 拒絕 錯誤 等 一些參數,快速定位和糾錯。
四、Sqoop 和 Datax 的區別:
1、sqoop 採用 map-reduce 計算框架進行導入導出,而 datax 僅僅在運行 datax 的單台機器上進行數據的
抽取和載入,速度比 sqoop 慢了許多;
2、sqoop 只可以在關係型資料庫和 hadoop 組件之間進行數據遷移,而在 hadoop 相關組件之間,比如
hive 和 hbase 之間就無法使用 sqoop 互相導入導出數據,同時在關係型資料庫之間,比如 mysql 和
oracle 之間也無法通過 sqoop 導入導出數據。與之相反,datax 能夠分別實現關係型資料庫 hadoop 組件
之間、關係型資料庫之間、hadoop 組件之間的數據遷移;
3、sqoop 是專門為 hadoop 而生,對 hadoop 支援度好,而 datax 可能會出現不支援高版本 hadoop 的現象;
4、sqoop 只支援官方提供的指定幾種關係型資料庫和 hadoop 組件之間的數據交換,而在 datax 中,用戶
只需根據自身需求修改文件,生成相應 rpm 包,自行安裝之後就可以使用自己訂製的插件;
五、Kettle 與 DataX 的區別:
1、Kettle 擁有自己的管理控制台,可以直接在客戶端進行 etl 任務制定,不過是 CS 架構(伺服器-客戶機),而不支援 BS(瀏覽器-伺服器)架構。DataX 並沒有介面,介面完全需要自己開發,增加了很大工作量。
2、Kettle 可以與我們自己的工程進行集成,通過 JAVA 程式碼集成即可,可以在 java 中調用 kettle 的轉換、執行、結束等動作,這個還是有意義的,而 DataX 是不支援的,DataX 是以執行腳本的方式運行任務的,當然完全吃透源碼的情況下,應該也是可以調用的。
3、支援的資料庫,都支援的比較齊全,kettle 支援的應該更多,DataX 是阿里開發,可以更好地支援阿里自身的資料庫系列,如 ODPS、ADS 等
4、Kettle 已經加入 BI 組織 Pentaho,加入後 kettle 的開發粒度和被關注度更進一步提升
5、DataX 開源的支援粒度不高,關注度遠沒有 kettle 高,程式碼提交次數更是少的很。
六、Kettle 與 Sqoop 的區別
1、Kettle 中有兩種腳本文件,transformation 和 job,transformation 完成針對數據的基礎轉換,job則完成整個工作流的控制;Sqoop 主要用於在 Hadoop(Hive)與傳統的資料庫(mysql、postgresql…)間進行數據的傳遞
2、kettle 有圖形化的操作介面,只需要描述你想做什麼,而不是你想怎麼做;sqoop 沒有圖形化介面,具體的數據流向需要手工配置。
3、kettle 底層使用多執行緒以提高效率;Sqoop 專為大數據批量傳輸設計,能夠分割數據集並創建 Hadoop任務來處理每個區塊。
4、kettle 可以利用 transformation 在數據傳輸過程中對數據的一些轉換處理;Sqoop 只是一個用來將Hadoop 和關係型資料庫中的數據相互轉移的工具
5、kettle 數據的具體流向可以指定,可以是各種數據的存儲工具;sqoop 只是完成 hdfs 到關係型資料庫或者 關係型資料庫到 hdfs 的數據傳輸,在傳輸的過程中保證傳輸數據的類型