1. 程式人生 > >Hbase學習(一)零基礎開始學習

Hbase學習(一)零基礎開始學習

hbase是谷歌bigdata論文的一個程式碼實現,hbase是開源軟體,在大資料處理領域應用廣泛。今天樓主先來介紹一些基本原理,後面用工程程式碼方式來敘述API的用法。樓主是新手,如有錯誤,歡迎大家指正。

簡介

Hbase(Hadoop database)是一個高可靠性(資料儲存在HDFS檔案儲存系統上,十分可靠,有機會樓主再寫HDFS的博文)、高效能(傳統單機資料庫在資料量高於百萬數量級後效能很差)、面向列、可伸縮實時讀寫的分散式資料庫。
hbase主要用來儲存非結構化和半結構化的鬆散資料。

資料結構

首先介紹一下基本概念

row key

決定一行資料;按照字典順序排序,資料有結構;row key最大為64K(注意只能儲存位元組陣列,要先轉換成位元組陣列才能存入hbase)

time stamp 時間戳

hbase每個cell儲存單元對同一份資料由多個版本,根據時間戳來區分不同版本,不同版本的資料按照時間倒序排列,最新的資料排在最前面。時間戳是64為整形資料,在寫入資料時自動賦值(使用者也可以自己給時間戳賦值)。hbase並不會儲存每個時間戳的歷史資料,由使用者設定一個最大版本數來約束版本的數量,多餘的版本在合併時被刪除。

column family

(新手可以暫時這樣理解:傳統關係型資料庫裡面的列的集合就是hbase裡面的列族)hbase把同一列族裡面的資料存在同一目錄下,一個列族可以有多個列成員(eg:course這個列族可以有以下幾列 math、cs
訪問時,列名為:course:math)

cell

由行和列的座標決定,單元格是有版本的。

資料結構總述

要想唯一確定一個單元格首先確定行,再確定列族,再確定列,再確定時間戳。
話不多說了,一切盡在下圖中:
這裡寫圖片描述

Hlog

除了介紹操作還記錄資料(eg 插入5,不僅記錄插入這個操作,還記錄5這個數字),hlog檔案是用來容災的,在發現意外時,可以恢復資料庫。

HBase體系結構

這裡寫圖片描述

client

包含訪問hbase的介面並維護cache加快對hbase訪問

zookeeper

任何時候保證叢集中只有一個master;儲存所有region的定址入口

master

負責負載均衡,發現失效的region server並重新分配;其實master主要作用是管理協調,並不直接處理請求

region server

維護region;切分在執行過程中變得更大的region

region

hbase的表被水平劃分為多個區域,每個region會儲存一個表中的某個區域。region增大到一定閾值,會等分成兩個region;region server資料太多時,由master協調增加region server個數。一個region由多個store組成,一個store對應一個CF。

store(memstore和storefile)

store由一個memstore和多個storefile組成。memstore是寫快取,寫操作首先寫入memstore,memstore到達一定量級被儲存為storefile。store file以hfile格式存在HDFS上面。