• 沒有找到結果。

第二章 文獻探討

第三節  雲端運算

三、  Apache HBase

 tasktracker 失敗(tasktracker failure):jobtracker 會定期檢查 tasktracker 的 狀態,如果因為當機或執行過於緩慢,則會重新安排工作。

 jobtracker 失敗(jobtracker failure):這種情況是最嚴重的錯誤,不過發生 的機率非常低,目前Hadoop 還沒有機制來處理這種情況。未來的 Hadoop 發行版本將可以執行多個 jobtracker 來解決這個問題。

三、 Apache HBase 一節點造成的負擔,雖然 Hadoop 檔案系統 HDFS (Hadoop Distributed File System) 內的資料是分散式儲存,但卻是以檔案的型態存放,無法支援隨機存取 (Random Reads and Writes)的功能。為了能更方便的存取資料,就必須仰賴 Hadoop 與HBase 的結合。

HBase 為 Apache open source 專案之一,是一個開源的非關係型分布式資料 庫(NoSQL),是Google Bigtable 的開源實現,用以儲存大規模的資料數據,HBase 是建立在Hadoop 的 HDFS 之上,可提供開發者或使用者更為直觀的資料存取介 面,讓資料能更有效率的儲存及運用。HBase 是一個高可靠性、高性能、面向列、

可伸縮的分散式存儲資料庫,利用此技術可在多台廉價PC Server 上搭建起大規 模結構化儲存集群,且可用來儲存Petabytes 級的資料量。HBase 具有以下特性:

1. 分散式(Distributed): HBase 由 HMaster、Zookeeper 和 Region Server 三 個元件所組成,HMaster 負責管理的功能,Region Server 負責實際的資 料儲存,Zookeeper 負責協調各個節點之間的聯繫。

2. 多維度儲存(Multi-Dimensional Map):以 Key-Value 的概念來儲存資料,

透過Rowkey、Column Family、Column Qualifier 來產生一個多維度的 資料結構表。

3. 高可靠性(High-Availability):因建構於 HDFS 之上,故每個節點均有多筆 複製(replication),任一節點故障都有其他節點可以替代,不會影響正常 運作功能。

4. 高效能(High-Performance):在 HBase 環境中,每個節點均擁有運算能力,

且Hbase 支援 Hadoop MapReduce 的程式設計模式,可藉由分散式運算 達成高效能的運作。

5. 容易擴充(Scalability):不需要高規格的機器,擴充時只要增加新的 Region Server 即可完成。

HBase 和其他欄導向資料庫(column-oriented database)一樣,常常被用來與傳 統 關 連 式 資 料 庫(RDBMS) 比 較 。 如 前 文 所 述 , HBase 是 一 個 分 散 式 、 column-oriented 的資料儲存系統,它實作了在 HDFS 隨機存取與寫入的機制,可 在數千台一般電腦上有效率的執行資料存取。對於許多傳統中小型的資料庫程式 (例如:MySQL),具備了許多特性,像是簡單易用、良好的彈性及強大的功能。

但是當資料量過於龐大時,這些傳統的中小型的資料庫程式的讀寫效能就會變得 非常低落,這是傳統RDBMS 在現今所會面臨的問題之一,且難以改善。從 HBase 於Streamy.com 的應用例子可得知,HBase 解決了原先使用 PostgreSQL 所帶來的 擴充性低落的問題(Hadoop:The Definitive Guide,2011)。如何在便利性及可擴充 性(Scalability)維持一個平衡,在現今資料爆炸的時代中是一個很重要的議題。

HBase 的架構主要由 HMaster、Zookeeper 和 Region Server 三個元件所組成,

其架構圖如圖 2-6 HBase 叢集架構圖所示:

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

21

圖 2-6 HBase 叢集架構圖

HMaster:

 負責管理 region servers。

 適度分配 regions 給 region servers。

 負責處理使用者的查詢,並提供資料所在的 region server 資訊給使用者。

Region server:

 實際儲存表格的地方。

 負責處理使用者的 request (write/read/scan) 。

 定時送 heartbeat 給 master。

Zookeeper:

 負責協調各個節點之間的溝通運作。

因為HBase 會將所有資料存放於表格中,當表格隨著記錄數不斷增加之後,

會逐漸分裂成多份splits,成為 regions,不同的 region 會被 HMaster 分配给相對 應的Region Server 進行管理。Region Server 主要負責回應用户 I/O 請求(read,write or scan),實際上每個 Region 會分散儲存在不同的 HBase 主機上,且不ㄧ定是連 續存放,其概念示意圖如圖 2-7 HBase 邏輯表格與實際表格對照圖所示。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

22

圖 2-7 HBase 邏輯表格與實際表格對照圖

HBase 是一種 column-oriented 的資料庫,資料儲存時皆以表格(table)型態存 放在各個 region serves 上,一個 HBase 的資料表 (table) 是由許多 row 及數個 column family 所組成的,且 HBase 在邏輯配置上的主要切割單位是 Column Family,這句話的意思是說,HBase 在儲存資料時,會以 Column Family 為單位 儲存,不同Column Family 儲存在不同的檔案中,故設計表格時與傳統關聯式資 料庫有些許不同,其邏輯資料模型(Logical Data Model)如圖 2-8 HBase Table 邏 輯資料模型圖所示:

 Row Key:是用來檢索記錄的主鍵(primary key)。HBase 存放資料的順序是依 照row key 的排序結果,且因 HBase 的掃描(scan)支持局部 Key 掃描(partial key scans),掃描時可以設定要讀出row key 中的哪些資料,故 row key 的設 計會直接影響到資料存取的效率,所以設計row key 時可將經常同時存取的 資料給予ㄧ連續的row key,以提升資料讀取的速度。

 Timestamp(時間戳):在 HBase 之中,每一筆資料都有一個時間戳記 ,可以看 作是資料的版本號碼(version number),所以 HBase 主要是利用 Timestamp 來保存多個版本的資料。

 Column Family:HBase Table 在水平方向有一個或者多個 Column Family,

在創建資料表時就必須決定Column Family 的數量,ㄧ般來說建議不要超過 3 個 Column Family,否則會使得存取效能低落。

 Column Qualifier:每個 Column Family 底下會有ㄧ個或多個 Column Qualifier,

這些Column Qualifier 可以視需求隨時新增。

相關文件