`

hbase使用场景了解

 
阅读更多

当我们对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用使用什么数据库?答案是什么,如果我们使用的传统数据库,肯定留有多余的字段,10个不行,20个,但是这个严重影响了质量。并且如果面对大数据库,pt级别的数据,这种浪费更是严重的,那么我们该使用是什么数据库?hbase数个不错的选择,那么我们对于hbase还存在下列问题:

 

1.Column Family代表什么?
2.HBase通过row和column确定一份数据,这份数据的值可能有多个版本,为什么会存在多个版本?
3.查询的时候会显示那个版本?
4.它们的存储类型是什么?
5.tableName是什么类型?
6.RowKey 和 ColumnName是什么类型?
7.Timestamp 是什么类型?

8.value 是什么类型?

带着以上几个问题去读下面内容:

 

引言

团队中使用HBase的项目多了起来,对于业务人员而言,通常并不需要从头搭建、维护一套HBase的集群环境,对于其架构细节也不一定要深刻理解(交由HBase集群维护团队负责),迫切需要的是快速理解基本技术来解决业务问题。最近在XX项目轮岗过程中,尝试着从业务人员视角去看HBase,将一些过程记录下来,期望对快速了解HBase、掌握相关技术来开展工作的业务人员有点帮助。我觉得作为一个初次接触HBase的业务开发测试人员,他需要迫切掌握的至少包含以下几点:
深入理解HTable,掌握如何结合业务设计高性能的HTable

掌握与HBase的交互,反正是离不开数据的增删改查,通过HBase Shell命令及Java Api都是需要的

掌握如何用MapReduce分析HBase里的数据,HBase里的数据总要分析的,用MapReduce是其中一种方式

掌握如何测试HBase MapReduce,总不能光写不管正确性吧,debug是需要的吧,看看如何在本机单测debug吧



本系列将围绕以上几点展开,篇幅较长,如果是HBase初学者建议边读边练,对于HBase比较熟练的,可以选读下,比如关注下HBase的MapReduce及其测试方法。

从一个示例说起

传统的关系型数据库想必大家都不陌生,我们将以一个简单的例子来说明使用RDBMS和HBase各自的解决方式及优缺点。
以博文为例,RDBMS的表设计如下:


 

为了方便理解,我们以一些数据示例下

 

上面的例子,我们用HBase可以按以下方式设计

 

同样为了方便理解,我们以一些数据示例下,同时用红色标出了一些关键概念,后面会解释

 


HTable一些基本概念

Row key


行主键, HBase不支持条件查询和Order by等查询,读取记录只能按Row key(及其range)或全表扫描,因此Row key需要根据业务来设计以利用其存储排序特性(Table按Row key字典序排序如1,10,100,11,2)提高性能。

Column Family(列族)

在表创建时声明,每个Column Family为一个存储单元。在上例中设计了一个HBase表blog,该表有两个列族:article和author。

Column(列)

HBase的每个列都属于一个列族,以列族名为前缀,如列article:title和article:content属于article列族,author:name和author:nickname属于author列族。
Column不用创建表时定义即可以动态新增,同一Column Family的Columns会群聚在一个存储单元上,并依Column key排序,因此设计时应将具有相同I/O特性的Column设计在一个Column Family上以提高性能。同时这里需要注意的是:这个列是可以增加和删除的,这和我们的传统数据库很大的区别。所以他适合非结构化数据。

Timestamp

HBase通过row和column确定一份数据,这份数据的值可能有多个版本,不同版本的值按照时间倒序排序,即最新的数据排在最前面,查询时默认返回最新版本。如上例中row key=1的author:nickname值有两个版本,分别为1317180070811对应的“一叶渡江”和1317180718830对应的“yedu”(对应到实际业务可以理解为在某时刻修改了nickname为yedu,但旧值仍然存在)。Timestamp默认为系统当前时间(精确到毫秒),也可以在写入数据时指定该值。
Value

每个值通过4个键唯一索引,tableName+RowKey+ColumnKey+Timestamp=>value,例如上例中{tableName=’blog’,RowKey=’1’,ColumnName=’author:nickname’,Timestamp=’ 1317180718830’}索引到的唯一值是“yedu”。

存储类型

TableName 是字符串
RowKey 和 ColumnName 是二进制值(Java 类型 byte[])
Timestamp 是一个 64 位整数(Java 类型 long)
value 是一个字节数组(Java类型 byte[])。


存储结构

可以简单的将HTable的存储结构理解为

 

即HTable按Row key自动排序,每个Row包含任意数量个Columns,Columns之间按Column key自动排序,每个Column包含任意数量个Values。理解该存储结构将有助于查询结果的迭代。

话说什么情况需要HBase

半结构化或非结构化数据

对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用HBase。以上面的例子为例,当业务发展需要存储author的email,phone,address信息时RDBMS需要停机维护,而HBase支持动态增加.


记录非常稀疏

RDBMS的行有多少列是固定的,为null的列浪费了存储空间。而如上文提到的,HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。


多版本数据

如上文提到的根据Row key和Column key定位到的Value可以有任意数量的版本值,因此对于需要存储变动历史记录的数据,用HBase就非常方便了。比如上例中的author的Address是会变动的,业务上一般只需要最新的值,但有时可能需要查询到历史值。


超大数据量

当数据量越来越大,RDBMS数据库撑不住了,就出现了读写分离策略,通过一个Master专门负责写操作,多个Slave负责读操作,服务器成本倍增。随着压力增加,Master撑不住了,这时就要分库了,把关联不大的数据分开部署,一些join查询不能用了,需要借助中间层。随着数据量的进一步增加,一个表的记录越来越大,查询就变得很慢,于是又得搞分表,比如按ID取模分成多个表以减少单个表的记录数。经历过这些事的人都知道过程是多么的折腾。采用HBase就简单了,只需要加机器即可,HBase会自动水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。

分享到:
评论

相关推荐

    HBASE使用注意事项

    通过对HBase的使用注意事项进行深入分析,我们了解到在表设计阶段应当重视RowKey的设计及其对数据分布的影响,同时还需要考虑压缩算法、过滤器的选择以及版本控制等因素。此外,对于Java API的使用也需要注意资源...

    hbase安装与使用

    ### HBase 安装与使用知识点详解 ...通过以上步骤,可以完成 HBase 的基本安装和配置,并了解不同模式下的基本操作。这些知识点对于初学者来说非常重要,能够帮助他们更好地理解和掌握 HBase 的使用方法。

    hbase 完全使用手册

    Apache HBase 是一个开源的非关系型分布式数据库(NoSQL),它建立在 Hadoop 文件系统(HDFS)之上,...这些高级功能使得 HBase 能够更好地适应不同的应用场景,并且能够最大化利用 HBase 的性能优势来处理大数据问题。

    云数据库HBase产品架构场景解析.pdf

    文档提到了多种HBase相关资料,这些资料可能包括技术文档、白皮书、使用案例分析等,用户可以参考这些资料深入了解HBase的各项特性和最佳实践。 HBase产品形态部分介绍了HBase的不同部署形态,包括单节点(开发中)...

    hbase用于查询客户端工具

    HBase是一种分布式、基于列族的NoSQL数据库,它在大数据领域中扮演着重要的角色,尤其是在需要实时查询大规模数据集时。...了解并熟练掌握这些客户端工具,可以极大地提高HBase的使用效率和灵活性。

    HBase学习利器:HBase实战

    总之,《HBase in Action》这本书全面覆盖了HBase的基础知识和高级应用技巧,对于想要深入了解HBase并将其应用于实际项目中的开发者来说,是非常宝贵的资源。通过本书的学习,读者不仅可以掌握HBase的基本操作,还能...

    Hbase权威指南(HBase: The Definitive Guide)

    通过上述内容可以看出,《HBase权威指南》全面而深入地介绍了HBase的相关知识和技术要点,无论是对于初次接触HBase的新手还是想要深入了解其内部机制的资深开发者来说,都是一本不可多得的好书。该书不仅详细解释了...

    hbase 资源合集 hbase 企业应用开发实战 权威指南 hbase 实战 hbase 应用架构

    《HBase实战》是一本实践导向的书籍,通过实际的项目案例,展示了HBase在不同场景下的应用,如实时分析、日志处理、推荐系统等。读者可以从中学习到如何根据业务需求设计合适的HBase表结构,以及如何进行高效的查询...

    HBase官方文档

    架构的了解对高效使用HBase以及进行性能优化非常重要。 ### 外部APIs HBase支持通过非Java语言的JVM交互、REST、Thrift以及C/C++ Apache HBase Client等多种方式与外部程序进行交互。 ### 性能调优 性能调优包括...

    hbase-1.2.6-bin.tar.gz

    HBase是Apache软件基金会的一个开源NoSQL数据库,它构建在Hadoop之上,专门设计用于处理大规模数据。HBase提供实时读写访问,并且...通过了解并掌握其核心特性和使用方法,我们可以有效地利用它来管理和处理海量数据。

    hbase-1.1.2-bin.tar.gz

    HBase是Apache Hadoop生态系统中的一个分布式、版本化、基于列族的NoSQL数据库,它在大规模数据存储和实时查询方面...了解并掌握HBase的原理和操作,对于从事大数据处理和分析的IT专业人士来说,是一项非常重要的技能。

    HbaseReferenceBook-Hbase参考指南英文版

    HBase shell是HBase操作非常重要的组成部分,对于初学者来说,使用shell了解HBase的基本操作和结构是非常好的入门方式。 3. HBase的设计(Design):这部分会介绍HBase的数据模型,以及HBase如何在底层存储数据。...

    HBase Essentials

    8. HBase在企业中的应用场景:HBase被广泛应用于电信、互联网和金融等多个行业,这些行业通常具有高并发、大数据量的业务场景。 由于技术原因,OCR扫描文字可能会有误,但通过语境理解,可以将识别错误或遗漏的部分...

    hbase+ycsb工具

    通过这些数据,你可以评估HBase在不同场景下的性能。 7. **优化HBase**:根据测试结果,对HBase的配置进行调整,如调整RegionServer的数量、内存分配、表分区策略等,以提升性能。 8. **再次测试**:优化后,再次...

    hbase指南 英文

    ### HBase 指南知识点概述 #### 一、HBase 概览 **1.1 什么是 HBase** HBase 是一个分布式的、面向列的开源...通过本教程的学习,读者可以对 HBase 有一个全面的了解,并掌握如何使用 HBase 进行数据管理和操作。

    Hbase调用JavaAPI实现批量导入操作

    通过理解和掌握这些知识点,开发者能够有效地使用Java API实现HBase的大规模数据导入,从而充分利用HBase的强大功能处理大数据场景。博客中的具体实现细节和示例代码可以提供更深入的理解,建议进一步阅读原文以获取...

    HBase 权威指南(HBase The Definitive Guide)

    《HBase 权威指南》是一本由 Lars George 编写的专业书籍,首次发布于2011年9月,主要针对那些希望深入了解 HBase 并掌握其使用方法的技术人员。 **标题**:“HBase 权威指南”这一标题明确指出了本书的主要内容...

    HBase Introduction

    作为HBase用户,了解HBase的内部工作原理非常重要,因为HBase并不会根据使用模式自动调整集群设置至最优状态。例如,表的设计、表设置(创建时定义)等都依赖于HBase的实现细节。这意呈现出对HBase内部机制的理解...

Global site tag (gtag.js) - Google Analytics