2018-12-20

关键词: HBase是什么 、 什么是HBase 、 HBase基本概念


本篇文章系本人根据目前所掌握的知识对 HBase 的基本概念作出的一篇轻简式科普文章。关于文章所述的知识点本人不保证其绝对、完全正确性。

1、从一幅画说起

绘画界有一支流派被称为 “印象派” ,印象派画系里数莫奈的 《日出 · 印象》 知名度比较高了。话说印象派这一派系的由来还和莫奈这幅画有关。当时有位记者嘲讽这幅画:“完全就是凭印象胡乱画出来的!”  或许这是阴差阳错,亦或许这就是自然的本质,这种 “凭印象胡乱画出来的” 画作终究还是被世人所接纳了。

《日出 · 印象》

2、“画”与 HBase 有什么关系?

“画” 与 HBase 当然没有关系。但是我却从画的派系里得到一些感悟。

印象派的风格初看起来确确实实如那位记者所言:“完全是凭印象胡乱画出来的” 。 但即使如此,印象派还是成了一支大派系,得到世人的认可。事实上,当你看多几,会发现这幅画也是很美的。我想这足以说明 “仅凭印象” 这一模式是一种可行的模式,或者说至少会是另一种分支的发展路线。那我们联想到 IT 行业来。IT 行业,尤其是软件行业,技术迭代的周期非常短,程序员要想在这个行业长久地保持竞争力,就必须不断地学习新技术。而一门 IT 技术几乎都会含有大量的知识点内容,处于工作状态中的程序员们通常不会有太多的时间来学习新技术。因此,如何快速学习并应用新技术成了每一个程序员不得不关注的事。如今,快速阅读与碎片化阅读几乎成了现代人的主流学习方式了。这种学习方式基本上是粗略地阅读书籍、博客或者某些公众号推文,然后抓取一些关键字眼来学习。它在我看来与 “印象派画” 有异曲同工之妙。印象派画往往都是在很短的时间内匆匆完成的,稍有停顿,你想画的景色就已经改变了。

提到 “快速阅读” 、 “抓关键字阅读” 等字眼我想不少人一时之间都会很难认可这种学习方式。觉得你不对知识点细嚼慢咽,如何能真正学到技术知识呢?对,想要真正学好知识,确实得沉下心来慢慢研究,就像传统画派那般仔细严谨。但我前面说了:这种 “仅凭印象” 、 “快速完成” 的模式已经被证实确实是一种可行的模式,只是它有别与传统流派而已。两种模式没有对错之分,只是各自有应用领域之别而已。现代社会是一个快节奏的社会,要想跟上社会发展的进程,那学习自然也不能慢下脚步来。在这里我敢断言:现代社会快速阅读、快速学习的重要性比起传统精研细究的方式更高!

那么回到我们关于 HBase 的话题。本篇文章,我主要以自己的语言来介绍 HBase 是什么。目标是让那些从未接触过 HBase 而又打算学习 HBase 的同学能有个 “启蒙式” 印象。同时,会对涉及到的每一个知识点提取出一些关键字眼来,基本上,记住这些关键字眼就能记住这一个知识点的了。

3、从哲学三问看 HBase

哲学史上有三个终极问题,传说只要能回答这三个终极问题,就代表着哲学已经到达尽头了:

1. 我是谁?

2. 我从哪里来?

3. 我要到哪里去?

今天我们就以这三个问题来认识一下 HBase 。当然,这三个问题在 HBase 上是可以得到回答的,只是回答了这三个问题只能代表这我们首次踏入了 HBase 的大门而不是已经到达了终点。

3.1、灵魂第一问:我是谁?

首先来看看 HBase 到底是什么。

HBase 是 Apache 旗下的一款面向海量数据的数据库软件。它根据 Google 在 2006 年发表的论文 《BigTable》 设计而来,这篇论文论述了如何实现大规模结构化数据的分布式存储。HBase 于 2008 年正式成为 Apache 基金会下的项目。一句话:HBase 是一款处理海量数据的分布式数据库软件

这里有一个概念不得不提,何谓 “海量数据” ?个人对海量数据的定义有两点:

1. 数据本身足够大。TB 及以上级别的数据量。

2. 数据增长速度足够快。每天以几十上百 GB 甚至更高的速度在增长。

3.2、灵魂第二问:我从哪里来?

其次,我们来聊聊 HBase 是基于什么样的环境,或者说需求下而诞生的。

我们都知道,能量是不可能凭空产生的,HBase 亦如是。一个新事物的诞生,必然是出于人们对旧有事物的不满足。在HBase诞生之前,人们使用的数据库软件基本都是面向 “行” 存储的。什么是面向行存储呢?从逻辑上讲就是我们把同一张表中的数据按一行一行的形式保存起来。从物理上讲则是我们把同一张表中的数据按一行一行的形式存储在介质上。下面有一幅简图:

传统数据库的按行存储

上图右侧部分就是行存储方式在硬盘上的存储形式。

这种行式存储的数据库以 MySQL 、Oracle 为代表,长期占据各大中小型企业机房。但随着经济与互联网的发展,各大企业数据量也呈爆发式增长。传统关系型数据库因为只能把同一个数据库中的数据存储在一个文件里,当数据量大到一定程度时就必然会引发性能问题。并且传统关系型数据库对字段空值也要占据一块物理存储空间,这在某些情况下就可能会造成极大的空间浪费了。于是乎,HBase 就以一种类似于 “上帝说要有光,于是便有了光” 的形式出现了。一句话:HBase 的诞生是为了解决海量数据存储问题的

 

3.3、灵魂终极问:我要到哪里去?

最后,我们来说说 HBase 它适合于哪些场景以及我们该如何来学习 HBase 。

首先我们得知道几个关于 HBase 的特性。HBase 是基于 HDFS 的一款数据库软件,而 HDFS 又是一款被设计用于部署在廉价硬件之上的文件管理系统。 HBase 是基于列在物理介质上存储的数据库,这就意味着同一张表中的数据很有可能会被保存在不同的机器上。HBase 是属于非关系型数据库,不支持表关联及各种关系型查询。简要总结一下 HBase 的特性就是

1. 存储成本低廉

2. 查询响应速度不高

3. 不适用于做数据分析

因此,我们可以总结出当你的数据业务同时满足以下 4 条时,HBase 再适合不过了:

1. 主体需求不是做数据分析

2. 查询时不需要那么灵活以及实时

3. 单表数据量超过千万,且并发较高

4. 对于硬件没有太多的预算

然后再来看看该如何来学习 HBase 。

这里主要讲我们程序员如何给自己搭建一个纯学习环境,当然,如果你或者说你的公司条件很好,能够直接上生产环境来学习,自然是最好不过的。

准备一台性能好一点的电脑。何谓 “性能好一点” 呢?

1. 内存 16GB 及以上

2. CPU 笔记本标压 U 的话能上 i7 就最好了,台式机随便一个 i 都行。

3. 硬盘 50GB 以上就行

4. 手感很好的键盘

现在主流操作系统应该是 windows 吧?装一个虚拟机软件。笔者用的是 vmware ,然后 CentOS 虚拟机。windows 系统是你日常查资料做笔记用的。 CentOS 虚拟机用于安装 HBase 学习环境。HBase 非常依赖 HDFS 与 Zookeeper ,关于这两个框架的知识,本文就不涉及了,有兴趣的同学可以自行查阅资料学习。关于更多详细的软件部署步骤,还需要各位同学自行查阅,本文这里不适合啰嗦太多这些内容。

最后,学习环境搞定了,那该如何进一点学习呢?笔者根据个人经验作出如下建议

1、主要的学习资料应为: 1. 培训机构教学视频 ;2. 书籍

2、入门靠培训机构教学视频,视频讲解虽然非常详细,但往往非常消耗时间,并且很容易走神,初期靠教学视频有了一个模糊的概念就可以了

3、知识点巩固与进阶要靠书籍 。并且应该大量阅读不同书籍,基本上,同一个知识点,在不同的书上你都能 “解锁一些新姿势”。

4、不知道去哪里找培训机构的教学视频? 1. 淘宝; 2. 闲鱼。 试试看?

5、不知道有什么书可以看? 淘宝京东当当亚马逊 等书籍电商网站去逛逛?

6、书籍太多,不知道哪些书好,纠结买哪本? 建议把每一本书都看一遍。什么?买书买到肉疼?同学,学习就是一场投资行为,没有付出是不行的。(不过这些书都买的话确实要花很多钱,而且往往后面还有很多框架等着我们学。长此以往,经济压力确实不小。不过,仍然是有解决的办法的,笔者在这方面摸索出了一套自己的学习方式,但是我在这里不能说太多:不一定要看纸质书)

好,今天关于 HBase 暂且聊到这。


2018 - 12 - 20 发表

2019 - 04 - 05 修改

HBase · 印象的更多相关文章

  1. HBASE学习笔记-初步印象

    HBASE概念: HBASE是一个分布式架构的数据库,通过对数据进行多层的分块打散储存.从而改写传统数据库的储存能力和读取速度. HBASE的集群服务器: HBASE的集群主要分为Zookeeper集 ...

  2. HBase、Redis、MongoDB、Couchbase、LevelDB主流 NoSQL 数据库的对比

    最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...

  3. [转载] HBase vs Cassandra:我们迁移系统的原因

    转载自http://www.csdn.net/article/2010-11-29/282698 我的团队近来正在忙于一个全新的产品——即将发布的网络游戏www.FightMyMonster.com. ...

  4. HBase之CF持久化系列(续1)

    这一节本来打算讲解HRegion的初始化过程中一些比较复杂的流程.不过,考虑前面的博文做的铺垫并不够,因此,在这一节,我还是特意来介绍HBase的CF持久化.关于这个话题的整体流程性分析在博文< ...

  5. HBase之行信息简析

    这一节我们简单介绍一下HBase的行信息.文章前半部分会对照源码介绍,后面会有我自己画的图,大家如果对这些信息已经比较了解了,跳过源码对照部分看后面的图,加深一下印象. 下面简单分析一下HBase中对 ...

  6. HBase——HMaster启动之一(HMaster的构建)

    首先,让我们来到HMaster的main方法.我们今天的流程就从这里开始. 我们需要注意,下图所示的tool的类型就是HMasterCommandLine. 接下来,让我们来到HMasterComma ...

  7. hbase源码系列(十一)Put、Delete在服务端是如何处理?

    在讲完之后HFile和HLog之后,今天我想分享是Put在Region Server经历些了什么?相信前面看了<HTable探秘>的朋友都会有印象,没看过的建议回去先看看,Put是通过Mu ...

  8. hbase源码系列(八)从Snapshot恢复表

    在看这一章之前,建议大家先去看一下snapshot的使用.这一章是上一章snapshot的续集,上一章了讲了怎么做snapshot的原理,这一章就怎么从snapshot恢复表. restoreSnap ...

  9. 公司HBase基准性能测试之结果篇

    上一篇文章<公司HBase基准性能测试之准备篇>中详细介绍了本次性能测试的基本准备情况,包括测试集群架构.单台机器软硬件配置.测试工具以及测试方法等,在此基础上本篇文章主要介绍HBase在 ...

随机推荐

  1. 环境配置(pycharm+virtualenv+git+github等)

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/87315081 铺垫 数据表示方式 - 计算机使用二进制作为自己的机器语言也就是数据的表示方 ...

  2. Zookeeper 分布式机器部署

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  3. vivo如何录制手机视频 分享简单的操作方法

    智能手机功能不断的发展更新,手机已经普及到每一个人,在日常的生活或者工作中都离不开手机,手机中的功能例如一些小视频软件都是非常有趣的,vivo如何录制手机视频?下面我们一起来看看吧! 使用工具:手机 ...

  4. Android studio设置文件头,定制代码注释

    一.说明 在下载或者看别人的代码我们常会看见,每一个文件的上方有个所属者的备注.如果要是一个一个备注那就累死了. 二.设置方法 File >>> Setting >>&g ...

  5. 模拟ES6中的Promise实现,让原理一目了然

    简介 Promise 对象用于延迟(deferred) 计算和异步(asynchronous )计算.一个Promise对象代表着一个还未完成,但预期将来会完成的操作.Promise 对象是一个返回值 ...

  6. FT 软件项目管理

    FT 软件项目: 以Feature Team形式组织起来的软件研发项目. 项目是临时组织不是长期组织.  人员临时组织起来, 无组织汇报关系.大家需要充分理解和认同项目的目标,通过项目获得技术.经验. ...

  7. UPUPW配置

    UPUPW下载地址 https://sourceforge.net/projects/upupw/files/ANK/?tdsourcetag=s_pctim_aiomsg 配置 在这里插入图片描述

  8. mybatis配置文件说明(configuration)

    1. xml结构(可查看mybatis-3-config.dtd) <!ELEMENT configuration (properties?, settings?, typeAliases?, ...

  9. 记录Vim常用命令

    命令 简单说明 i 进入编辑模式,光标在原位置 I 进入编辑模式,光标在行首位置 o 从光标所在行,下面一行开始编辑 O 从光标所在行,上面一行开始编辑 a 从光标当前字符后编辑 A 从光标所在行的行 ...

  10. 我的第一个python web开发框架(31)——定制ORM(七)

    几个复杂的ORM方式都已介绍完了,剩下一些常用的删除.获取记录数量.统计合计数.获取最大值.获取最小值等方法我就不一一详细介绍了,直接给出代码大家自行查看. #!/usr/bin/env python ...