HBase轻松入门

Posted chorm590

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  暂时不更。

 

以上是关于HBase轻松入门的主要内容,如果未能解决你的问题,请参考以下文章

HBase学习01(HBase入门及HBase Shell简单操作)

HBase学习01(HBase入门及HBase Shell简单操作)

HBase学习01(HBase入门及HBase Shell简单操作)

大数据入门学习指南

Hbase入门笔记----架构以及应用介绍

大数据技术之HBaseHBase简介HBase快速入门HBase进阶