大數據倉庫理論(二)Kettle+Sqoop+Azkaban+Impala


大數據倉庫理論(二)Kettle+Sqoop+Azkaban+Impala

一、Kettle

1、Kettle的介紹

Kettle是一款開源的、元數據驅動的ETL工具集,是開源ETL工具里功能比較強大的一個。

Kettle需要對數據進行 抽取、轉換、裝入和加載 ,它的中文名字可以稱為水壺。

其名字的起源:希望把各種數據放到一個壺里然后以一種指定的格式流出。

2、Kettle程序啟動

1)Kettle程序啟動分為兩種:作業、轉換

2)作業調用啟動腳本:kitchen.sh (kitchen.bat)

3)轉換調用啟動腳本:pan.sh (pan,bat)

3、Kettle的組件說明:JOB(作業調用)

分為串行執行和並行執行。
串行執行是先執行完其中一條線再執行另一條線;
並行是兩條線同時執行,同一條線上的兩個步聚會先執行前面的再執行后面的。
每個步驟執行結果分兩種:true(成功)/false(失敗),根據返回結果可以控制流程走向。

4、Kettle的組件說明:TRANSFORMATION(轉換調用)

一開始所有步驟同時運行,記錄會從最前端的步驟向后 傳遞
傳遞到相應步驟則該記錄被該步驟作相應 處理
處理完成再把記錄往后 傳遞
記錄傳遞分 復制和分發兩種模式

 5、Kettle常用組件

 6、Kettle輸出日志說明

Nothing:不顯示任何輸出
Error:僅僅顯示錯誤信息
Minimal:使用最小的日志
Basic:缺省的日志級別(一般上線的項目采用該日志)
Detailed:給出日志輸出的細節(適用於未上線的項目)
Debug:調試目的,調試輸出
Rowlevel:打印出每一行記錄的信息

二、Sqoop

Sqoop是Apache旗下的一款“Hadoop和關系數據庫服務器之間傳送數據”的工具

三、Azkaban

1、Azkaban簡介

Azkaban是LinkedIn開源的 任務調度框架,類似於JavaEE中的JBPM和Activiti工作流框架。
如ETL的過程:
Sqoop在凌晨1點從RDBMS中抽取數據(E),在凌晨2點用Hadoop或Spark轉換數據(T),在凌晨3點用Sqoop再把結果數據加載(L)進RDBMS或NOSQL。
假設沒有Azkaban這樣的調度框架,一般用crontab+shell,
crontab+shell雖然簡單易用,但也有明顯的缺點,如 任務的依賴處理、任務監控、任務流的可視化等,就需要一個調度框架來統一。
常見的任務調度框架有 Apache Oozie、LinkedIn Azkaban、Apache Airflow、Alibaba Zeus
由於 Azkaban具有輕量可插拔、友好的WebUI、SLA告警、完善的權限控制、易於二次開發等優點,也得到了廣泛應用。

2、Azkaban架構

 Relational Database: 存儲元數據,如項目名稱、項目描述、項目權限、任務狀態、SLA規則等。
 Azkaban WebServer: 項目管理、權限授權、任務調度、監控executor
 Azkaban ExecutorServer: 作業流執行的Server

3、Azkaban的部署方式

1)solo-server模式
DB使用的是一個內嵌的H2,Web Server和Executor Server運行在同一個進程里。
這種模式包含Azkaban的所有特性,但一般用來學習和測試。
2)two-server模式
DB使用的是MySQL,MySQL支持master-slave架構,Web Server和ExecutorServer運行在不同的進程中。
3)分布式multiple-executor模式
DB使用的是MySQL,MySQL支持master-slave架構,Web Server和ExecutorServer運行在不同機器上,且有多個Executor Server。

四、Impala

1、Impala簡介

基於GOOGLE的Dremel為原型的查詢引擎, Cloudera公司推出, 提供對HDFS、HBase數據的高性能、低延遲的交互式SQL查詢功能。
  • Impala服務器是一個分布式,大規模並行處理(MPP)的服務引擎。
  • 基於Hive使用內存計算,兼顧數據倉庫、具有實時、批處理、多並發等優點。
  • 是CDH平台首選的PB級大數據實時查詢分析引擎。

2、SMP和MPP

 3、Impala架構

注:Impala目前沒有很好的容錯機制
1)Statestore Daemon
  • 負責收集分布在集群中各個impalad進程的資源信息、各節點健康狀況,同步節點信息。(存儲元數據
  • 負責query的調度
2)Catalog Daemon
  • 分發表的元數據信息到各個impalad中
  • 接收來自statestore的所有請求
3)Impala Daemon
  • 接收client、hue、jdbc或者odbc請求、Query執行並返回給中心協調節點子節點上的守護進程,
  • 負責向statestore保持通信,匯報工作

詳情參考: https://www.cnblogs.com/liuxinrong/articles/12918799.html

4、Impala的優勢

1) Impala不需要把中間結果寫入磁盤,省掉了大量的I/O開銷。
2) 省掉了MR作業啟動的開銷。
      MR啟動task的速度很慢,Impala直接通過相應的服務進程來進行作業調度,速度快了很多。
3)Impala完全拋棄了MR這個不太適合做SQL查詢的范式,而是像Dremel一樣借鑒了 MPP並行數據庫的思想另起爐灶,
      因此 可做更多的查詢優化,從而 省掉不必要的shuffle、sort等開銷
4)用C++實現, 做了很多有針對性的硬件優化,例如使用SSE指令。
5) 使用了支持Data locality的I/O調度機制,盡可能地將數據和計算分配在同一台機器上進行, 減少了網絡開銷

5、Impala資源管理

注:因為impala沒有很好的容錯機制所以需要對其進行資源管理

1)靜態資源池

2)動態資源池

3)資源管理相關參數配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM