ETL-kettle 核心執行邏輯

1、大數據下的ETL工具是否還使用Kettleweb

      kettle 做爲通用的ETL工具,很是成熟,應用也很普遍,這裏主要講一下 目前咱們如何使用kettle的?redis

     在進行大數據處理時,ETL也是大數據處理的主要場景之一。 針對大數據下的ETL, 在大數據研究之初,曾經花費很大精力去尋找大數據下比較成熟的ETL工具,可是很少。主要分類以下:sql

    •       開源的圖形界面 相似 kettle 的nifi 
    •       命令形式的 如 sqoop、DataX
    •      還有使用Spark 自定義開發ETL框架的

大數據下的ETL處理過程和傳統關係型數據庫下的ETL處理過程,個人理解本質仍是同樣的,要說區別 多是大數據下須要ETL處理的數據速度足夠快,這就要求能夠充分利用分佈式的能力,好比利用分佈式的資源進行分佈式的的計算。數據庫

基於使用經驗和產品成熟度,在大數據下咱們針對一些對數據處理速度不是很是之高的場景,咱們仍然使用kettle。 這裏我爲何不說數據量,由於對於一個ETL過程,說數據量是無心義的,好的ETL工具的核心引擎必定是一個相似如今的流式計算數據結構

也就是說數據向水同樣的流動,流動的過程當中作數據處理。也可kettle自己的含義相似。多線程

 基於我的的理解,任務kettle的優點主要體如今如下幾點架構

  1.  設計時:
    • 提供了成熟的圖形界面,相比命令行形式的etl工具,更容易被推廣應用
    • 提供了豐富的各類數據庫類型的插件,數據轉換插件,涵蓋場景衆多

2.運行時框架

  • 控制流和數據流的設計思想的劃分
  • 真正意義的數據流驅動的數據處理引擎,這一點也認爲是同ESB等控制流產品不一樣的地方
  • 經過多線程執行插件實例和分佈式執行,提高執行速度
  • 和目前大數據主流的數據庫進行集成,固然這個地方主要仍是集成調用

3.可擴展性分佈式

    • 良好的插件架構,保證了設計時和運行時的可擴展性

4.待完善點工具

  • kettle 任務定義多了,當數據結構發生變化時,須要修改較多,最好有統一的數據對象管理
  • kette的圖形化設計器雖然好用,可是web 化的設計器更容易多人使用,提高設計效率 

 目前kettle 的定位:

    • 傳統關係型數據庫和大數據庫之間數據導入導出
    • 基於關係型數據庫和大數據庫由數據驅動的簡單數據流任務
    目前針對kettle作的擴展開發
           插件開發
      • 基於ES的sdk 開發ES的 input和output插件
      • 封裝支撐Druid 數據導出的input 插件
      • 封裝支持redis的插件
      • 封裝支持調用Kylin build job的插件
      • 封裝支持調用Tidb sql的插件
      • 優化基於Azure wasb存儲的hbase input 和output 插件
    • 調度集成
      • 大數據下的調度主要使用的Ooize,界面上主要使用HUE,經過擴展開發HUE 的插件的形式 調用Kettle的web服務進行調度集成
    • 待完善點
      • kettle的商業版中包含了元數據管理,下一步須要將kettle中使用的表和字段,和大數據的數據治理集成
      • kettle處理日誌經過ELK將日誌採集到ES進行進一步的分析
      • kettle web 提升kettle任務的定義效率
  • 2、核心執行邏輯
         kettl的數據流處理過程,充分體現了其引擎對數據的流式處理過程。這裏主要經過展示kettle 源碼序列圖的方式進行體現,但願你們能夠經過這裏的序列圖瞭解其執行的基本原理,也就方便進行插件的擴展開發和平常問題的解決。 
    2.2 數據流處理核心邏輯

    2.2  數據流處理的核心序列
        2.2.1 任務的執行頂層序列

  • 2.2.2步驟的初始化

          

 

  • 2.2.3  步驟的執行
      

           每一個步驟隊列的分配過程
        

        數據放入隊列
          

     

     

  • 2.2.4  具體步驟 -table input

 

   2.2.5 table out put
       

以上 是kettle 核心數據流處理的核心過程。分享給你們 

相關文章
相關標籤/搜索