程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> HBase簡單介紹

HBase簡單介紹

編輯:DB2教程

HBase簡單介紹


前言

本周學習了部分關於Hadoop生態圈周邊的一些系統,簡單的做個小結,本篇文章主要講的是HBase的介紹。HBase是一個在HDFS上構建的面向列的分布式數據庫,他與傳統的RDBMS還是有許多的不同之處的。HBase的出現可以解決海量數據存儲的問題,而且他可以比較容易的解決伸縮性的問題,這個在以往的傳統關系型數據庫中都是很大的難題。下面是簡單的對於HBase的介紹。

HBase介紹

先說說我的個人感受,當我第一次看到HBase是一個面向列式的存儲結構時,我立馬想到了Google的BigTable,因為他也是面向列式存儲的,然後裡面同樣有列簇的概念,也是屬於稀疏存儲。所以如果你了解了BigTable相信理解HBase也不會太難。

HBase系統結構

這個當然用圖形的方式表現呢出來最直觀。

\

撇開圖片下方的Hadoop的部分,上一部分才是HBase的結構,因為HBase所存儲的數據是在Hadoop的HDFS中,所以會有所關聯。簡單的來說,HBase也遵循主從關系,即一個master,然後好多個slave。在這裡是一個master節點控制著若干個HRegionServer節點,然後在每個HRegionServer下又會控制到好多個HRegion。HRegion才是真正存儲數據的地方。然後這期間會由Zookeeper控制協調中間的服務。

HBase的面向列的存儲

HBase的面向列的存儲特性是他的一大特點,這樣就可以真正做到寬度的效果,列可以做到很多,同樣給出一個示例圖,在此示例圖中,有3個列簇。

\

其實在真實的存儲中,空余的部分其實是不占空間的,只是效果圖這麼畫而已。

HBase和RDBMS的比較

傳統的RDBMS歷經了了幾十年的發展,已經形成了許多成熟的特性,而且各方面已經成熟化了,比如MySQL這樣的。但是如果在數據並發讀寫和數據規模這2方面,傳統的關系型數據庫可能就會比較吃緊了。而HBase要做的事情恰恰在於此。因為HBase本身是一個分布式的數據庫系統,所以可以讓使用者專注於業務上的處理邏輯,中間的數據傳輸全部都被HBase抽象處理了。而且HBase支持自動分區,當表增長到一定阈值 ,他可以將一個HRegion分裂為2個HRegion。而且HBase可以實現簡單的擴展,通過增加節點數來進行線性的擴展。

在使用HBase時可能會碰到的問題

1、第一個問題是可能會碰到文件描述符用完的情況。因為在HBase中,數據文件在啟動 時就被打開,並在處理過程中始終保持打開狀態,以便節省每次訪問操作打開文件所需的代價,所以適當的時候可以增加最大文件描述符數量的限制。

2、datanode的線程用完的情況。默認情況下Hadoop的datanode上最大只能容納256個線程運行,而在datanode中打開每個文件連接都會使用一個線程,所以256個線程的限制很快就會達到。可以把dfs.datanode.max.xciervers的值調高,並重啟集群。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved