• 沒有找到結果。

第二章 文獻探討

第二節 HAWQ

三、 HAWQ 架構與組成元件

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

外由於HDFS 存儲資料是 Append-only,因此 HAWQ 資料庫也為 Append-only 形 式。

三、 HAWQ 架構與組成元件

在HAWQ 架構裡,每個 slave 節點都有一個實體 HAWQ Segment、HDFS DataNode,如果另外安裝 YARN 還會有 Node Manager,而這些服務都各自有一 個Master 來控管,分別為 HAWQ Master、HDFS NameNode 和 YARN Resource Manager。HAWQ Segment 在執行查詢時會生成多個查詢執行器( Query Executor, QE),來加快資料處理速度。下圖為 HAWQ 系統架構:

圖 二-4 HAWQ 架構圖

(資料來源:[18])

下面介紹HAWQ 裡面的重要組件[19],如圖 2-4:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

1. HAWQ Master:為整個系統架構的接口,所有客戶端下的指令都要經過 Master 後,再去溝通底下的 Segment,取得數據。Master 底下有幾個元 件:查詢解析器(Parser)、優化器(Optimizer)和查詢派遣器(Dispatcher)等。

2. HAWQ Segment:為系統平行處理資料的單位。當一個查詢從 Master 下 達後,執行引擎會啟動多個虛擬Segment 同時執行查詢,每一個虛擬 Segment 會分配一個 QE 來進行,最後將結果並行處理完傳回 Master。

3. HAWQ Interconnect:透過 UDP 來完成節點間的數據傳輸,實現高速網 路服務。

4. HAWQ Resource Manager:Master 要透過 Resource Manager 動態申請資 源,並有兩種模式YARN、StandAlone 可以選擇。

5. HAWQ Catalog Service:Master 讀取後用來確定 Segment 要掃描表的哪 些部分,用來存放資料在HDFS 的位置訊息。

6. HAWQ Fault Tolerance Service:負責檢測哪些節點失效,並排除之。

7. HAWQ Dispatcher:用以派遣計畫到節點上執行,並協調查詢執行的整 個過程。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 二-5 HAWQ 內部架構圖

(資料來源:[18])

HAWQ 是一個 Hadoop 原生的 MPP 資料庫分析引擎,功能類似傳統的關聯 式資料庫(Relational Database),但由於它架構特殊,所以有著大部分資料庫都不 具有的特性,如下:

l MPP 架構,比起其他 Hadoop 的 SQL 引擎快上數倍。

l 彈性的執行引擎,可以依據查詢指令的大小來決定使用節點個數及 QE 生成數目。

l 高可擴展性,如同其他 Hadoop 開源軟體,可隨時增加節點數目。

l Hadoop 原生的管理,可以透過 Hadoop Ambari 快速安裝部署,資源也 可以透過YARN 來分配。

l 支援高速網際網路,基於 UDP 達到數據快速傳輸。

l 成熟的並行優化器,針對複雜的查詢,找出優化的查詢計畫。

Hadoop 最初由 Dong Cutting 等[20]開發,是一個能提供儲存並管理巨量數據 的雲端平台,由於它是Apache 軟體基金會底下的開源軟體框架,在免費及龐大 的社群基礎上,因應設計許多與Hadoop 配套支援的應用程式。此節主要針對 HAWQ 安裝部署時,會使用到 Hadoop 的應用程式,像是可以進行快速安裝部署 的Ambari,或是幫助系統做資源分配的 YARN,亦或是作為系統底層下的分散 式檔案系統HDFS 等,都將在本節提及。

一、 Hadoop Distributed File System (HDFS)

HDFS[21]為一個分散式檔案系統,當叢集底下有數以千計的機器,即可視 作一台超級電腦,儲存TB(Tera Bytes)或是 PB(Peta Bytes)以上的資料都不成問 題。而HDFS 架構裡有幾個重要的構成元件,介紹如下[22]:

Name Node

Name Node 為 HDFS 的核心元件,負責管理整個集群,每個集群裡就只有 一個Name Node。此外,Name Node 裡面包含 Metadata,負責記錄所有檔案系統 的資料,像是權限、檔案Block 位置等。

Data Node

Data Node 為資料儲存的節點,儲存方式以 Block 作為單位,Block 大小預設 為64MB,大量分散於各個 Data Node 底下,交由 Data Node 管理。每個 Name Node 都會定期與Data Node 溝通,以確保它運行順利。

Secondary Node

Secondary Node 主要是把 Name Node 每個階段的狀態紀錄成 log 檔,為 Name Node 建立系統還原點。