0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Hbase的基础性介绍与入门

汽车玩家 来源:今日头条 作者:不一样的程序猿 2020-03-15 17:21 次阅读

无论是 NoSQL,还是大数据领域,HBase 都是非常"炙热"的一门数据库。本文将对 HBase 做一些基础性的介绍,旨在入门。

一、简介

HBase 是一个开源的、面向列的非关系型分布式数据库,目前是Hadoop体系中非常关键的一部分。在最初,HBase是基于谷歌的 BigTable 原型实现的,许多威廉希尔官方网站 来自于Fay Chang在2006年所撰写的Google论文"BigTable"。与 BigTable基于Google文件系统(File System)一样,HBase则是基于HDFS(Hadoop的分布式文件系统)之上而开发的。

HBase 采用 Java 语言实现,在其内部实现了BigTable论文提到的一些压缩算法、内存操作和布隆过滤器等,这些能力使得HBase 在海量数据存储、高性能读写场景中得到了大量应用,如 Facebook 在 2010年11 月开始便一直选用 HBase来作为消息平台的存储层威廉希尔官方网站 。HBase 以Apache License Version 2.0开源,这是一种对商业应用友好的协议,同时该项目当前也是Apache软件基金会的顶级项目之一。

有什么特性

基于列式存储模型,对于数据实现了高度压缩,节省存储成本

采用 LSM 机制而不是B(+)树,这使得HBase非常适合海量数据实时写入的场景

高可靠,一个数据会包含多个副本(默认是3副本),这得益于HDFS的复制能力,由RegionServer提供自动故障转移的功能

高扩展,支持分片扩展能力(基于Region),可实现自动、数据均衡

强一致性读写,数据的读写都针对主Region上进行,属于CP型的系统

易操作,HBase提供了Java API、RestAPI/Thrift API等接口

查询优化,采用Block Cache 和 布隆过滤器来支持海量数据的快速查找

与RDBMS的区别

对于传统 RDBMS 来说,支持 ACID 事务是数据库的基本能力,而 HBase 则使用行级锁来保证写操作的原子性,但是不支持多行写操作的事务性,这主要是从灵活性和扩展性上做出的权衡。

ACID 要素包含 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)

总体来说, HBase 与传统关系数据库的区别,如下表所示:

Hbase的基础性介绍与入门

二、数据模型

下面,我们以关系型数据库的一个数据表来演示 HBase 的不同之处。

先来看下面这张表:

Hbase的基础性介绍与入门

这里记录的是一些家庭设备上报的状态数据(DeviceState),其中包括设备名、状态、时间戳这些字段。

在 HBase 中,数据是按照列族(Column Family,简称CF)来存储的,也就是说对于不同的列会被分开存储到不同的文件。那么对于上面的状态数据表来说,在HBase中会被存储为两份:

列族1. 设备名

Hbase的基础性介绍与入门

列族2. 状态

Hbase的基础性介绍与入门

这里Row-key是唯一定位数据行的ID字段,而Row-key 加上 CF、Column-Key,再加上一个时间戳才可以定位到一个单元格数据。其中时间戳用来表示数据行的版本, 在HBase中默认会有 3 个时间戳的版本数据,这意味着对同一条数据(同一个Rowkey关联的数据)进行写入时,最多可以保存3个版本。

在查询某一行的数据时,HBase需要同时从两个列族(文件)中进行查找,最终将结果合并后返回给客户端。 由此可见如果列族太多,则会影响读取的性能,在设计时就需要做一些权衡。

由此可见,HBase的使用方式与关系型数据库是大不相同的,在使用 HBase 时需要抛弃许多关系型数据库的思维及做法,比如强类型、二级索引、表连接、触发器等等。

然而 HBase 的灵活性及高度可伸缩性却是传统 RDBMS 无法比拟的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 大数据
    +关注

    关注

    64

    文章

    8895

    浏览量

    137503
  • Hbase
    +关注

    关注

    0

    文章

    27

    浏览量

    11192
收藏 人收藏

    评论

    相关推荐

    TCSH shell 编程入门

    ICer从业人员最先需要掌握的语言,就是linux shell语言。TCSH是ICer使用最多的Shell语言,可以说ICer入门语言从TCSH开始。
    发表于 11-01 10:45 0次下载

    WinCC 7.5入门指南

    WinCC 7.5入门指南
    发表于 10-21 10:37 4次下载

    NHET入门

    电子发烧友网站提供《NHET入门.pdf》资料免费下载
    发表于 10-14 11:26 0次下载
    NHET<b class='flag-5'>入门</b>

    【全新课程资料】正点原子《ESP32基础及项目实战入门》培训课程资料上线!

    正点原子《ESP32基础及项目实战入门》全新课程资料上线啦!正点原子工程师手把手教你学!熟练掌握ESP-IDF开发,突破ESP32入门难题! 一、课程介绍 本课程针对ESP32的入门
    发表于 09-24 17:59

    BQ76925入门

    电子发烧友网站提供《BQ76925入门.pdf》资料免费下载
    发表于 09-19 13:34 0次下载
    BQ76925<b class='flag-5'>入门</b>

    MCAN(CAN FD)模块入门

    电子发烧友网站提供《MCAN(CAN FD)模块入门.pdf》资料免费下载
    发表于 09-14 10:08 0次下载
    MCAN(CAN FD)模块<b class='flag-5'>入门</b>

    BQ产品入门指南

    电子发烧友网站提供《BQ产品入门指南.pdf》资料免费下载
    发表于 09-02 12:00 4次下载
    BQ产品<b class='flag-5'>入门</b>指南

    新书推荐 | TSMaster开发从入门到精通

    书名:TSMaster开发从入门到精通书号:9787302667193作者:杨金升刘矗刘功申定价:99.80元《CANoe开发从入门到精通》作者又一力作!本书旨在帮助广大汽车工业领域的研发工程师快速
    的头像 发表于 08-30 12:37 561次阅读
    新书推荐 | TSMaster开发从<b class='flag-5'>入门</b>到精通

    HBase集群数据在线迁移方案探索

    一、背景 订单本地化系统目前一个月的订单的读写已经切至jimkv存储,对应的HBase集群已下线。但存储全量数据的HBase集群仍在使用,计划将这个HBase集群中的数据全部迁到jimkv,彻底
    的头像 发表于 06-12 11:54 1181次阅读
    <b class='flag-5'>HBase</b>集群数据在线迁移方案探索

    芯海应用笔记:CPW3101入门指南

    本威廉希尔官方网站 说明文档提供关于 CPW3101 开发板 UFCS_EVB_V1.2 功能介绍、特性说明、使用说明、IAP升级、使用注意事项等,旨在帮助用户更好地使用 CPW3101 开发板_V1.2,进行芯
    发表于 05-16 14:39

    HyperLynx入门指南

    HyperLynx入门指南
    发表于 05-06 10:17 4次下载

    CW32快速开发入门

    CW32快速开发入门
    的头像 发表于 04-24 18:56 2002次阅读
    CW32快速开发<b class='flag-5'>入门</b>

    [RK3588从入门到精通]系列内容专栏目录及介绍

    [RK3588从入门到精通] 专栏目录及介绍
    的头像 发表于 04-10 10:40 748次阅读
    [RK3588从<b class='flag-5'>入门</b>到精通]系列内容专栏目录及<b class='flag-5'>介绍</b>

    allegro快速入门教程

    电子发烧友网站提供《allegro快速入门教程.pdf》资料免费下载
    发表于 02-29 09:32 71次下载

    半导体封装的可靠测试及标准介绍

    本文将介绍半导体的可靠测试及标准。除了详细介绍如何评估和制定相关标准以外,还将介绍针对半导体封装预期寿命、半导体封装在不同外部环境中的可靠
    的头像 发表于 01-13 10:24 5419次阅读
    半导体封装的可靠<b class='flag-5'>性</b>测试及标准<b class='flag-5'>介绍</b>