1.1HBase概念
HBase是一個分佈式(有角色,搭建集羣)的面向列的數據庫。
面向行:面向行的特點是,即是某一行的某一列沒有存儲數據,那麼這一列也會佔用空間,另外在磁盤的存儲上,每一行的各個列的數據也都是順序存儲在一起的。
面向列:每一行的數據可以有不同的列,有多少列就佔用多少存儲空間,沒有的列就不佔用存儲空間。在磁盤的存儲上,是以列族存儲的。
HBase與hive的比較
hive數據庫分析工具,將元數據存儲在mysql中,將業務數據存儲在hdfs上
HBase數據庫,業務數據也是存儲在hdfs的,元數據是由它本身管理的
HBase與mysql相比,具有以下特點
- 能存儲的數據量大
- 讀(150w次/s)寫(10w次/s)的速度快
1.2HBase的特點
- 海量存儲
能夠處理PB級別的海量數據,並在採用廉價的pc端的情況下,能夠在幾十到幾百毫秒之間返回數據。這一特點與HBase較好的擴展性有很大的聯繫。
2.列式存儲
這裏所說的列式存儲就是列族存儲,HBase是根據列族來存儲數據的。
列族(column family):就是列的分類,列族在創建表的時候必須指定,每一個列族中可以包含多個列,列可以在插入數據的時候指定。
在插入數據時,必須指定行鍵(rowkey),行鍵,類似於mysql中的主鍵,用來表示某條數據的唯一性,相同的行鍵,就代表是同一條數據。
3.極易擴展
HBase的擴展主要體現在兩個方面:
一個是基於存儲的擴展(HDFS)。也就是隻要部署的機器多,HDFS存儲的數據就多,那麼HBase存儲的數據也多。
另一個是基於上層處理能力(RegionServer)的擴展,當存儲的數據多時,相應的也應該有多個能夠處理這些數據的進程RegionServer。
RegionServer:和HDFS中的DataNode與YARN中的NodeManager的地位相似,是具體幹活的小弟。
HBase是典型的master/slave(主從)架構,也是分角色的,老大是Hmaster或者Master,具體幹活的小弟是HRegionServer或者RegionServer。
【注意】在部署HBase集羣的時候,要將HBase與HDFS部署在一起,因爲HBase是基於HDFS的,部署在一起,可以提高HBase的讀寫速度,即數據本地化:數據放在本地處理。
HBase的表是由Region(區、片)組成的,當HBase的表越來越大的時候,表就會分爲若干個Region,Region是由RegionServer負責管理的,一個RegionServer可以管理多個Region(這些Region可以是同一個表中的多個Region,也可以是不同表中的Region)
一個表由一個Region或者多個Region組成;
一個Region只能由一個RegionServer管理。
4.高併發
HBase要將數據寫到HDFS上,再由HDFS寫到磁盤上,過程雖然繁瑣,但是單個IO延遲下降的並不多,主要突出了HBase框架的優越性,能夠獲得高併發,低延遲的服務。
5.稀疏
稀疏主要是指列的靈活性,可以指定任意多個的列,當列爲空的時候,不佔用任何的存儲空間。