HBase簡介:
1、HBase是 bigtable的開源 java版本。基於 hdfs的資料庫系統,提供高可靠性,高性能,列存儲,可擴展性,實時讀寫 nosql。
2、介於 nosql和 RDBMS之間,數據只能通過主鍵(row key)和主鍵的range進行檢索。
3、只支持單行事務(可以通過hive支持實現複雜的操作,比如多表join)。
4、通常用於存儲結構化和半結構化鬆散數據。
5、Hbase查詢數據功能非常簡單,不支持像join這樣的複雜操作和複雜事務(在行級別)。
6、支持在 Hbase中的數據類型: byte []
7、像 hadoop一樣, Hbase的目標主要是通過不斷增加廉價的商業伺服器來提高計算和存儲能力。
HBase中的表通常具有以下特徵:
1、大型:一張表可以有十億行,數百萬列
2、稀疏:對於空(null)列,不會佔用存儲空間,因此可以將表設計得非常稀疏。
3、面向列:面向列(族)的存儲和權限控制,列(族)獨立檢索。
為何使用 HBase
1、Hadoop是 hbase存儲的基礎。這幾年興起的 Hadoop擁有高性能、高穩定性、易管理的大數據應用平臺。基於 Hadoop衍生出大量優秀的開放源碼項目, Hadoop即將成為大數據的代名詞。
2、Hadoop實現了一種分布式文件系統(HDFS)。HDFS具有高度容錯的特性,可以部署在廉價的硬體上,並且為訪問應用程式數據提供高吞吐量,適合那些擁有超大數據集的應用程式。一個 Hadoop基礎意味著 HBase天生就具有超強的可擴展性。
3、HBase採用 Key/Value存儲方式,也就是說,即使隨著數據量的增加,查詢的性能也很少會下降。HBase又是一個列資料庫(與傳統的行式資料庫相比),當表中的欄位很多時,甚至可以將其中一些欄位放置在集群的一部分計算機上,將另一些欄位放置在另一部分計算機上,這樣就完全分散了負載壓力。但是,如此複雜的存儲結構和分布式存儲方式的代價就是:即使只存儲少量數據,也不會太快。因此,hbase並不快,只是在數據量大時慢得不明顯。
4、任何事情都不可能只有優點,沒有缺點。對於 HBase,數據分析是一個弱點,因為它基本上不支持表關聯,這對 HBase甚至整個 NoSQL生態圈都是如此。如果您想要實現 group by或 orderby,您將發現要實現 MapReduce需要編寫大量代碼。
5、所以請不要盲目使用 HBase。
1、如果情況大致符合下列任一條件:一,主要的要求是數據分析,例如做報告。二:單表的數據量不超過千萬。請勿使用 HBase,使用像 MySQL或 Oracle這樣的產品可以使你的腦細胞免於痛苦。
2、如果情況大致符合下列任一條件:一:單表數據量超千萬,並發相當高。二、數據分析要求較弱,或不需要如此靈活和實時。用 HBase吧,它不會讓你失望!!!
如需轉載請註明出處(創作不易請見諒)和巨嬰程序猿一起成長。讓自己變得更優秀想了解更多精彩內容,快來關注跟著巨嬰去逆襲我最近一直在思考(大數據通俗講解)的問題,你的看法是什麼呢?關注我快說出來一起交流一下吧~