Kettle

國外開源的ETL工具

Kettle是一款國外開源的ETL工具,純java編寫,可以在Windows、Linux、Unix上運行,數據抽取高效穩定。

Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺裡,然後以一種指定的格式流出。

Pentaho Data Integration以Java開發,支持跨平台運行,其特性包括:支持100%無編碼、拖拽方式開發ETL數據管道;可對接包括傳統資料庫、文件、大數據平台、介面、流數據等數據源;支持ETL數據管道加入機器學習演演算法。

Pentaho Data Integration分為商業版與開源版,開源版的截止2021年1月的累計下載量達836萬,其中19%來自中國 。在中國,一般人仍習慣把Pentaho Data Integration的開源版稱為Kettle。

產生背景


廣泛利用內部數據(例如:ERP、CRM、POS、設備數據、日誌)以及外部數據(行業數據、宏觀經濟數據、社交媒體、評論)來對現有業務做各樣分析以及對未來做預測,最終以數據驅動業務,已經是任何組織賴以生存的必要手段。然後,要使有價值的數據分析在組織內各層級管理人員的手機、Pad以及大屏呈現之前,數據必須先從各個源頭進行抽取(Extract),載入(Load)至數據湖(Data Lake),然後需要對在大數據存儲里(例如: Hadoop,S3,MongoDB)的數據各類加工,包括清洗(Cleanse)、把來自不同來源、不同格式的數據混合(Blend)、轉換(Transform),再把數據按照分析需求進行建模(Modeling)和聚合(Aggregation),或者在數據挖掘之前進行數據預備和特徵工程(Data Preparation & Feature Engineering),最終數據被載入至數據倉庫或數據集市中。整個過程比30年前剛出現ETL的概念已經複雜了許多;再加上組織需要處理除了結構化數據(例如:傳統關係型資料庫),還包括非結構化數據(例如:日誌、客戶評論、圖片),同時,各組織已不滿足於T+1的滯後分析而紛紛對數據進行更有價值的實時或近實時數據分析(real-time or near-real-time analysis),導致數據集成(Data Integration)的複雜度大大提高。作為全球累計下載量超過835萬,源於開源的數據集成平台 ,Pentaho Data Integration平均每半年一次大版本升級,以應對數據集成不斷變化的需求。

介紹


KETTLE圖
KETTLE圖
Kettle這個ETL工具集,它允許你管理來自不同資料庫的數據,通過提供一個圖形化的用戶環境來描述你想做什麼,而不是你想怎麼做。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
作為Pentaho的一個重要組成部分,現在在國內項目應用上逐漸增
多。
Kettle最早是一個開源的ETL工具,全稱為KDE Extraction, Transportation, Transformation and Loading Environment。在2006年,Pentaho公司收購了Kettle項目,原Kettle項目發起人Matt Casters加入了Pentaho團隊,成為Pentaho套件數據集成架構師 ,從此,Kettle成為企業級數據集成及商業智能套件Pentaho的主要組成部分,Kettle亦重命名為Pentaho Data Integration 。Pentaho公司於2015年被Hitachi Data Systems收購。 (Hitachi Data Systems於2017年改名為Hitachi Vantara )
Kettle
Kettle

運行平台支持


kettle 8.2版本可以支持windows、linux和mac os操作系統

主要功能


Pentaho Data Integration作為一個端對端的數據集成平台,可以對多種數據源進行抽取(Extraction)、載入(Loading)、數據落湖(Data Lake Injection)、對數據進行各種清洗(Cleasing)、轉換(Transformation)、混合(Blending),並支持多維聯機分析處理(OLAP)和數據挖掘(Data mining)。部分特色功能包括:
無代碼拖拽式構建數據管道
Pentaho採用拖拽組件、連線、配置的方式來構建數據管道,透過超過200個不同的組件 ,用戶可以在不編寫一句代碼就能輕鬆完成對數據源讀取,對數據進行關聯、過濾、格式轉換、計算、統計、建模、挖掘、輸出到不同的數據目標。極大程度地降低開發技術門檻和有效減低開發和維護成本。
多數據源對接
關係型資料庫支持類型包括:AS/400, DB2, Google BigQuery, Greenplum, Hive, Impala, MS SQL Server, MySQL, Oracle, PostgreSQL, SAP, Snowflake, SparkSQL, Sybase, Teradata, Vertica等 。大數據源支持包括:Avro, Cassanddra, HBase, HDFS, MongoDB, ORC, Parquet, Splunk等。文件格式支持包括:CSV, TXT, JSON, Excel, XML等。流數據支持包括:AMPQ, JMS, Kafka, Kinesis, MQTT, 其他數據源對接包括:HL7, S3, SAS, Salesforce, HCP, REST等。
數據管道可視化
Pentaho Data Integration支持用戶在數據管道任何一個步驟對當前數據進行查看(Examine),並可以在線以表格和圖表(例如:柱狀圖、餅圖等)輸出步驟的數據,甚至可以支持不落地直接把任何一個步驟的數據以JDBC的方式提供給第三方應用訪問 。
模板化開發數據管道
在數據抽取的過程中,ETL工程師通常要從眾多不同的數據源把數據抽取到數倉的ODS層,或者到HadoopHDFS,整個過程的數據轉換邏輯比較簡單,但往往因為數據源很多而導致大量低價值重複開發工作,為了有效節省開發的時間和成本,Pentaho Data Integration提供了一個叫MDI的功能,MDI全稱是Metadata Injection元數據注入,用戶可以透過MDI把數據轉換模板化,然後把像數據表名、文件路徑、分隔符、字符集等等這些變數放在一個表或者文件里,然後利用MDI把這些變數注入數據轉換模板,Pentaho Data Integration就能夠自動生成所需要的數據轉換了 。這個功能為很多客戶節省了大量的開發時間。
可視化計劃任務
Pentaho Data Integration提供可視化方式配置任務計劃(Schedule),用戶可透過Spoon或網頁端的Pentaho User Console來配置和維護任務具體的執行時間、間隔、所使用的參數值、以及具體運行的伺服器節點。用戶亦可以透過Spoon或Pentaho User Console查看任務計劃列表 ;當然,用戶也可以透過Spoon或Pentaho User Console對任務執行情況進行實時監控。
深度Hadoop支持
Pentaho Data Integration針對Hadoop主流廠家預置專用的對接插件,支持的Hadoop版本包括Cloudera, Hortonworks, AWS EMR, Google Dataproc等,用戶除了可以透過插件輕鬆對接Hadoop集群的數據源(HDFS, Hive, HBase, Impala等)Pentaho還提供與Kerberos、Sentry和Ranger等Hadoop企業級安全機制對接,以滿足企業安全要求;另外,Pentaho Data Integration的Pentaho MapReduce提供用戶以無編碼方式定義MapReduce任務;同時,用戶亦可以在作業中執行SqoopPigMapReduce、Oozie和Spark任務。 
數據任務下壓Spark集群
對於很多使用Hadoop的企業,往往因為數據量大,考慮到性能,會以腳本的方式來在集群里直接進行數據轉換,我們一般叫這個做ELT(Extract-Load-Transform),就是先把數據載入到Hadoop,再在Hadoop集群里進行轉換。為了讓用戶仍然能夠透過Pentaho Data Integration簡單的拖拽方式構建數據轉換管道,同時又可以讓數據在集群里進行In-Cluster轉換,Pentaho提供了把數據轉換任務下壓到Spark來執行的AEL(Adaptive Execution Layer)功能,搭建好的數據管道會被AEL轉成Spark任務來執行 ,這樣數據就不需要離開集群,而是在集群里透過Spark強大的分散式處理能力來進行處理。
數據挖掘與機器學習支持
最新版的Pentaho9.1預置了超過20種數據挖掘演演算法類的轉換步驟,用戶可以輕鬆把把機器學習集成到數據管道里,用來做數據模型訓練和進行預測分析。預置演演算法包括:決策樹、深度學習、線性回歸、邏輯回歸、Naive貝爾斯、隨機森林等等,用戶也可以利用Pentaho Data Integration作數據預備,然後把數據以dataframe的方式輸入到Python或R中進行模型訓練或預測。

版本記錄


PDI (Kettle) 主要版本歷史
時間主版本號主要變化
2006年6月PDI 2.3Kettle被Pentaho收購后第一個版本 
2007年11月PDI 3.0產品整體重新設計,性能提升 
2009年4月PDI 3.2加入新功能、可視化與性能優化 
2010年6月PDI 4.0加入企業級功能,例如:版本管理 
2013年11月PDI 5.0優化大數據支持、轉換步驟負載均衡、作業事務性支持、作業斷點重啟 
2015年12月PDI 6.0Pentaho Data Service,元數據注入(Metadata Injection),數據血緣追蹤 
2016年11月PDI 7.0數據管道可視化、Hadoop安全性支持、Spark支持優化、資源庫功能完善、元數據注入功能優化 
2017年4月PDI 7.1任務下壓至Spark集群運行(Adaptive Execution Layer) 
2017年11月PDI 8.0實時數據對接、AEL優化、大數據格式支持優化 
2018年6月PDI 8.3數據源支持優化:Snowflake, RedShift, Kinesis, HCP等 
2020年1月PDI 9.0多Hadoop集群支持、大型機(Mainframe)數據對接支持、S3支持優化 
2020年10月PDI 9.1Google Dataproc支持、數據目錄Lumada Data Catalog對接

運行環境


Pentaho Data Integration伺服器端支持:Windows Server, CentOS, RHEL, Ubuntu
Pentaho Data Integration開發客戶端(Spoon)支持:Windows, Ubuntu Desktop, MacOS
Pentaho User Console(瀏覽器端)支持:Internet Explorer, Chrome, Firefox, Safari, Edge

產品家族


Kettle家族目前包括4個產品:Spoon、Pan、CHEF、Kitchen。
SPOON 允許你通過圖形界面來設計ETL轉換過程(Transformation)。
PAN 允許你批量運行由Spoon設計的ETL轉換 (例如使用一個時間調度器)。Pan是一個後台執行的程序,沒有圖形界面。
CHEF 允許你創建任務(Job)。任務通過允許每個轉換,任務,腳本等等,更有利於自動化更新數據倉庫的複雜工作。任務通過允許每個轉換,任務,腳本等等。任務將會被檢查,看看是否正確地運行了。
KITCHEN 允許你批量使用由Chef設計的任務 (例如使用一個時間調度器)。KITCHEN也是一個後台運行的程序。