[Hbase]Hbase章1 Hbase框架及基本概念
Hbase框架介紹
HBase是一個分散式的、面向列的開源資料庫。
不同點:
l 和一般的關係資料庫不同,hbase是一個適合於非結構化資料儲存的資料庫。
l Hbase是基於列而不是基於行的模式。
在分散式的生產環境中,HBase 需要執行在 HDFS 之上,以 HDFS 作為其基礎的儲存設施。HBase上層提供了訪問的資料的 Java API 層,供應用訪問儲存在 HBase 的資料。在 HBase 的叢集中主要由 Master 和 Region Server 組成,以及 Zookeeper,
基本概念:
l RowKey
是Byte array,是表中每條記錄的“主鍵”,方便快速查詢,Rowkey的設計非常重要;
l Timestamp
版本號,型別為Long,預設值是系統時間戳,可由使用者自定義
l ColumnFamily
列族,擁有一個名稱(string),包含一個或者多個相關列
l Column
屬於某一個columnfamily,familyName:columnName,每條記錄可動態新增
l Value(Cell)
單元格由行鍵、列族、時間戳唯一決定
單元格的資料是沒有型別的,全部以位元組碼形式儲存
Hbase組成
l Master
Hmaster用於調整多個regionServer,偵測各個regionServer之間的狀態,並平衡regionServer之間的負載。Hmaster還有一個職責就是分配region給regionServer。
Hmaster允許多個Hmaster節點共存,但是這需要Zookeeper的協助。不過當多個Hmaster節點共存時,只有一個Hmaster是提供服務的,其它的Hmaster節點處於待命的狀態。當正在工作的Hmaster節點宕機時,其它的Hmaster則會接管Hbase叢集。
l RegionServer
對於一個regionServer而言,其包括了多個region。regionServer的作用只是管理表格,以及實現讀寫操作。Client直接連線regionServer,並通訊獲取Hbase中的資料。
l Region
Region是hbase中分散式儲存和負載均衡的最小單位,但不是最小的儲存單元。如個一個表格很大,並由多個CF組成時,那個表的資料將存放在多個region中,並且每個region會關聯多個儲存單元store。表在行方向分割為多個region,region是按大小分割的,隨著region不斷增大,當增大到一個閥值的時候,region就會分成兩個region。
l Store
每個region中包含了多個store物件,一個store包含一個memstore和若干個storefile,storefile中包含一個或多個hfile。Memstore存放在記憶體中,storefile存放在hdfs上。
l Hfile
Hfile由很多個數據塊(block)組成,並且有一個固定的結尾塊。其中的資料塊是由一個header和多個key-value的鍵值對組成。在結尾塊中包含了資料相關的索引資訊,系統也是通過結尾塊的索引資訊找到hfile中的資料。