1. 程式人生 > >HBase輕鬆入門 HBase輕鬆入門之HBase架構圖解析

HBase輕鬆入門 HBase輕鬆入門之HBase架構圖解析

2018-12-13

 2018-12-20

1、基本概念

1.1、前言

    在瞭解HBase之前,非常有必要先了解一下最基礎的概念,畢竟瞭解概念是學習的第一步,也是必不可少的一步。

    首先我們以哲學史上三個終極問題來向HBase say hello.

      1、我是誰?

      2、我從哪裡來?

      3、我要到哪裡去?

 

    * HBase是什麼(我是誰)?

      HBase是Apache公司根據Google發表的幾篇關於如何處理海量資料的論文(GFS, MapReduce, BigTable)中的思想而創立的一個開源專案。一句話:HBase是一個用於儲存海量資料的分散式資料庫軟體

。這裡涉及到一個概念不得不提,何謂“海量資料”?個人對海量資料的定義有兩點:1. 資料本身足夠大。TB及以上級別的資料量; 2. 資料增長速度足夠快。每天以幾十上百GB的速度在增長。

 

    * 為什麼需要HBase(我從哪裡來)?

      我們都知道,能量是不可能憑空產生的。HBase如是,它並不是有一群人吃飽了沒事做要弄個HBase出來玩玩。一件新事物的誕生,必然是出於人們對舊有事物的不滿足。在HBase誕生之前,人們使用的資料庫軟體都是面向“行”儲存的。什麼是面向行儲存呢?我們都知道,資料庫儲存資料最終還是要以檔案的形式儲存到硬碟中的。一般來說,檔案在硬碟中都是物理連續地儲存起來的(機械盤,有土豪用固態盤作資料儲存?

),而面向行儲存呢,就是表中的每一行的所有資料都是連續地儲存起來的。如下圖所示:

圖1 傳統資料庫的儲存方式

      

      上圖右側部分就是面向行儲存的方式在硬碟上被儲存的形式。             傳統的關係型資料庫,資料一般都是以表的形式中心化儲存的,即所有資料都存在那一臺主機上,頂多搞多兩臺機器用來儲存備份資料。這種資料儲存方式,對於資料量不多的情況下還是很溜的,但一旦資料量上去了,其劣勢就愈發明顯了。最明顯的影響就是檢索效率的下降,並且檢索效率下降將會越來越嚴重,這是致命的。同時,注意到上圖Marry行的資料,sex列的資料是空的。即使某一行中某一列是沒有資料的,它在物理上仍然要佔據一塊空間!當你資料量上去以後,這種空間浪費的情況絕對會讓你腦闊疼。             出於上述這兩種原因( 事實上我所瞭解到的只有這兩種原因,但對於小白來說,已經夠了。
),那群人吃飽飯以後再翻翻Google發表的論文,就弄出了這個HBase。  

    * 該如何學習HBase(我要到哪裡去)?

      Linux Only!!!       先談談硬體裝置咯,工欲善其事,必先利其器。       前面我們提到HBase是一個用於處理大資料的分散式資料庫。它的核心在於分散式。既然要玩分散式,肯定少不了要準備幾臺電腦了。有條件的老鐵買它三四臺電腦來,裝上Linux就可以開幹了。但我相信大多數人都沒有這個條件的,即使真的有條件,我也不建議你這樣幹,畢竟連你自己都無法確定你的這股學習幹勁在明天起床以後還有沒有。。。       因此,硬體裝置建議:          1、一臺好一點的電腦;           記憶體儘量高一點16G或以上。CPU儘量好一點。硬碟就隨便了,畢竟是用來學習而不是投入生產的,256G的固態在現在應該是主流吧?          2、電腦主系統裝一個Windows 10;           什麼年代了,還用win7? 用XP的,建議你改行吧,你不適合搞IT。其實主系統是什麼影響並不大,純粹是覺得搞IT的自己的電腦系統就應該是最新的。          3、裝一個最新版的虛擬機器軟體;           虛擬機器這種玩虛擬化技術的東東,它的迭代肯定意味著對新硬體新技術以及他們自身的虛擬化技術都上了一個新的階層,或許是能跑的比以前更流暢,或許是佔用的資源比以前更小。總之這種東西你用新的就沒錯。我用的是vmware 15。          4、裝它三四臺Linux虛擬機器系統;           其實你硬要擡槓,一臺Linux虛擬機器就夠了。但個人建議至少裝三臺,既然要玩,就玩像一點。至於虛擬機器的配置,盡你的條件上高一點咯。硬碟空間不需要很多的,預設的20GB已經多到要爆炸了。我用的是ubuntu desktop 18.01 lts。

 

      接下來再談談軟體環境咯。有的人可能要說了,上面談硬體裝置的時候不是已經說了要win10,要虛擬機器了嗎,那個不是軟體環境嗎!  好像是這麼個理,但是,其實,它。。。不要在意這些細節啦,往下看咯。

      HBase的分散式能力完全是仰仗於Hadoop這頭小神象的(Hadoop的LOGO就是一隻歡快的小象象,如下圖2所示)。假如你瞭解了Hadoop以後再去學習HBase,你會有一種HBase就是把Hadoop的各種概念再用他自己的話“複述”一遍而已的感覺。

圖2 Hadoop LOGO

      然後還有一個Zookeeper,

      因此,有條件的老鐵,在學習HBase之前,可以先去了解一下Hadoop和Zookeeper。如果不想自己學習HBase的一腔熱血被強行中途打斷而去學習其它東東,也可以不去了解它們而直接學習HBase。因為我在後面也會講一下Hadoop和Zookeeper的一些相關概念的。

 

    如果你能堅持看到這裡,那麼我要開始刮一次目再來和你相看了,因為我已經開始有點相信你不是一時頭腦發熱而想去學習什麼鬼HBase的了。那話又說回來,既然看到了這裡,說明你在HBase上的哲學史三大終極問題都已經捋清楚了,對“自我”有一個基本的認識以後,就開始要稍微深入一點了。先來看看HBase的技術架構吧。

 

1.2、架構

  HBase的架構對於小白同學來講還是很複雜的。剛剛我才說到,幹嘛好學不學學什麼鬼HBase嘛,它真的超級多概念的,剛開始學的時候,光是記這些概念就能讓你。不過其實也沒有這麼嚴重了,因為。。。現在放棄還來得及!!!

  言歸正傳了,要看HBase的架構,直接抓取網上的一幅架構圖來講解吧:

圖3 HBase架構

    整個HBase系統是基於HDFS構建的。這個怎麼理解呢,呃,就像小米手機的 MIUI是基於Android原生系統構建的,錘子手機的smartisan os也是基於Android原生系統構建的一樣。一些很繁瑣很基礎的事情先由Android原生系統幫你搞定了,你再把你的精力專注於構建你自己的應用生態圈去那樣。HBase系統也是這樣。HDFS的全稱是Hadoop distributed file system,分散式的能力HDFS已經做的很優秀了,你HBase直接拿過來,專注於上層應用開發,整個專案就會簡單的多了。

    真正屬於HBase的東西只有兩樣:1、HMaster; 2、 HRegionServer。 HMaster是用來作決策的。HRegionServer是用來儲存資料的。

    Zookeeper也是一個第三方的程式。它是用來解決HBase系統中服務協同問題的。

    Client端其實就是HBase開放出來的給程式設計師們呼叫的各種API。當然你也可以把它理解成是在螢幕前操縱的人。

    關於HBase架構圖更詳細一點的介紹,本篇博文限於篇幅就不再贅述,有興趣的同學可以參考一下另一篇博文:  HBase輕鬆入門之HBase架構圖解析  。

 

 


 

2、安裝與部署 

   暫時不更。

 

 

 


 

3、Shell介面

   暫時不更。

 

 

 


 

4、Java API

  暫時不更。