HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表。
容量巨大
HBase 的單表可以有百億行、百萬列,可以在橫向和縱向兩個維度插入數據,具有很大的彈性。當關系型數據庫的單個表的記錄在億級時,查詢和寫入的性能都會呈現指數級下降,這種龐大的數據量對傳統數據庫來說是一種災難,而 HBase 在限定某個列的情況下對于單表存儲百億甚至更多的數據都沒有性能問題。
HBase 采用 LSM 樹作為內部數據存儲結構,這種結構會周期性地將較小文件合并成大文件,以減少對磁盤的訪問。
列存儲
與很多面向行存儲的關系型數據庫不同,HBase 是面向列的存儲和權限控制的,它里面的每個列是單獨存儲的,且支持基于列的獨立檢索。
稀疏性
通常在傳統的關系性數據庫中,每一列的數據類型是事先定義好的,會占用固定的內存空間,在此情況下,屬性值為空(NULL)的列也需要占用存儲空間。
而在 HBase 中的數據都是以字符串形式存儲的,為空的列并不占用存儲空間,因此 HBase 的列存儲解決了數據稀疏性的問題,在很大程度上節省了存儲開銷。所以 HBase 通常可以設計成稀疏矩陣,同時這種方式比較接近實際的應用場景。
擴展性強
HBase 工作在 HDFS 之上,理所當然地支持分布式表,也繼承了 HDFS 的可擴展性。HBase 的擴展是橫向的,橫向擴展是指在擴展時不需要提升服務器本身的性能,只需添加服務器到現有集群即可。
HBase 表根據 Region 大小進行分區,分別存在集群中不同的節點上,當添加新的節點時,集群就重新調整,在新的節點啟動 HBase 服務器,動態地實現擴展。這里需要指出,HBase 的擴展是熱擴展,即在不停止現有服務的前提下,可以隨時添加或者減少節點。
高可靠性
HBase 運行在 HDFS 上,HDFS 的多副本存儲可以讓它在岀現故障時自動恢復,同時 HBase 內部也提供 WAL 和 Replication 機制。
WAL(Write-Ahead-Log)預寫日志是在 HBase 服務器處理數據插入和刪除的過程中用來記錄操作內容的日志,保證了數據寫入時不會因集群異常而導致寫入數據的丟失;而 Replication 機制是基于日志操作來做數據同步的。
當集群中單個節點出現故障時,協調服務組件 ZooKeeper 通知集群的主節點,將故障節點的 HLog 中的日志信息分發到各從節點進行數據恢復。
回答所涉及的環境:聯想天逸510S、Windows 10。
HBase是一個高可靠、高性能、面向列、可伸縮的分布式數據庫,是谷歌BigTable的開源實現,主要用來存儲非結構化和半結構化的松散數據。HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數據和數百萬列元素組成的數據表。
特點
容量巨大
HBase 的單表可以有百億行、百萬列,可以在橫向和縱向兩個維度插入數據,具有很大的彈性。當關系型數據庫的單個表的記錄在億級時,查詢和寫入的性能都會呈現指數級下降,這種龐大的數據量對傳統數據庫來說是一種災難,而 HBase 在限定某個列的情況下對于單表存儲百億甚至更多的數據都沒有性能問題。
HBase 采用 LSM 樹作為內部數據存儲結構,這種結構會周期性地將較小文件合并成大文件,以減少對磁盤的訪問。
列存儲
與很多面向行存儲的關系型數據庫不同,HBase 是面向列的存儲和權限控制的,它里面的每個列是單獨存儲的,且支持基于列的獨立檢索。
稀疏性
通常在傳統的關系性數據庫中,每一列的數據類型是事先定義好的,會占用固定的內存空間,在此情況下,屬性值為空(NULL)的列也需要占用存儲空間。
而在 HBase 中的數據都是以字符串形式存儲的,為空的列并不占用存儲空間,因此 HBase 的列存儲解決了數據稀疏性的問題,在很大程度上節省了存儲開銷。所以 HBase 通常可以設計成稀疏矩陣,同時這種方式比較接近實際的應用場景。
擴展性強
HBase 工作在 HDFS 之上,理所當然地支持分布式表,也繼承了 HDFS 的可擴展性。HBase 的擴展是橫向的,橫向擴展是指在擴展時不需要提升服務器本身的性能,只需添加服務器到現有集群即可。
HBase 表根據 Region 大小進行分區,分別存在集群中不同的節點上,當添加新的節點時,集群就重新調整,在新的節點啟動 HBase 服務器,動態地實現擴展。這里需要指出,HBase 的擴展是熱擴展,即在不停止現有服務的前提下,可以隨時添加或者減少節點。
高可靠性
HBase 運行在 HDFS 上,HDFS 的多副本存儲可以讓它在岀現故障時自動恢復,同時 HBase 內部也提供 WAL 和 Replication 機制。
WAL(Write-Ahead-Log)預寫日志是在 HBase 服務器處理數據插入和刪除的過程中用來記錄操作內容的日志,保證了數據寫入時不會因集群異常而導致寫入數據的丟失;而 Replication 機制是基于日志操作來做數據同步的。
當集群中單個節點出現故障時,協調服務組件 ZooKeeper 通知集群的主節點,將故障節點的 HLog 中的日志信息分發到各從節點進行數據恢復。
回答所涉及的環境:聯想天逸510S、Windows 10。