您当前的位置:首页 > 互联网百科 > 大数据

大白话详解大数据HBase,老刘真的很用心

时间:2021-03-04 10:26:19  来源:  作者:

老刘今天复习HBase知识发现很多资料都没有把概念说清楚,有很多专业名词一笔带过没有解释。比如这个框架高性能、高可用,那什么是高性能、高可用?怎么实现的高性能高可用?没说!

如果面试官听了你说的,会有什么反应?我的感觉就是你说的东西都是别人的,没有自己的理解。所以老刘才会写用大白话讲大数据这个系列,就是争取把东西讲清楚,讲明白!如果觉得老刘写得不错,给老刘点个赞吧!

01 HBase知识点

大白话详解大数据HBase,老刘真的很用心

 

第1点:HBase的定义

大白话详解大数据HBase,老刘真的很用心

 

官网画红框中直接就说,HBase是一个分布式、可扩展的大数据存储Hadoop数据库。试想下,你是面试官,别人这样回答你,你会不会满意?老刘觉得学的东西要用自己的话讲出来,才是真正的掌握。

在老刘看来,HBase,即Hadoop database,即Hadoop数据库。

它的数据通常存储在HDFS上,HDFS为HBase提供了高可靠性的底层存储的支持;利用Hadoop MapReduce来处理HBase中的海量数据,为HBase提供了高性能的计算能力;利用ZooKeeper为HBase提供了稳定的服务。

根据上述所说,就可以总结为HBase是一个建立在HDFS之上,具有高可靠、高性能、可扩展、支持海量数据存储的分布式数据库。

一般是在存储数据比较大的时候,并且对读写性能要求比较高的时候,才会用到HBase数据库。

那你们知道什么是读写性能比较高吗?那就是读的比较快、写的也比较快的时候,才是读写性能比较高!

第2点:HBase的特点

1)极易扩展

HBase底层依赖HDFS,当磁盘空间不足的时候,我们只需要动态增加DataNode节点就可以了。当然也可以通过增加服务器来对集群的存储进行扩容。

2)海量存储

可以存储大批量的数据。在存储海量数据的前提下,能在几十到百毫秒内返回数据。这点和HBase的极易扩展性非常相关。正因为HBase良好的扩展性,才为海量数据的存储提供了便利。

3)列式存储(这里一定要搞清楚列式存储和行式存储的区别)

这里的列式存储其实说的是列族存储,HBase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须要指定了。

4)稀疏

稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

5)数据类型单一

它所有的数据都是以字节数组进行存储。

第3点:HBase表的数据模型

大白话详解大数据HBase,老刘真的很用心

 

先给出一张HBase的设计表,根据这张表进行介绍表的结构。

rowkey行键

1)它是表(table)的主键,table中的记录按照rowkey的字典序进行排序,这里就必须要说说什么是字典序?

有多机构的资料就是一笔带过,一点也不负责,让人非常不爽。老刘就不得不去搜搜字典序排序的相关知识。

通俗地讲,字典序排序大概就是两个作比较的内容从第一个字母开始比较,按照ASCII码表比较大小,小的放在前面,第一个相同就比较下一个,都相同且一个比较完了,则短的排在前面。

常见ASCII码的大小规则:0~9<A~Z<a~z

2)rowkey行键它可以是任意的字符串,其中它的最大长度是 64KB,实际应用中长度一般为 10-100bytes。

Column Family列族

1)HBase表中的每个列,都归属于某个列族。

2)列族是表的schema的一部分(而列不是),即建表时至少指定一个列族。

3)比如我们创建user表,包含info、data两个列族,代码就为create 'user', 'info', 'data'。

Column列

列肯定是表的某一个列族下的一个列,用列族名:列名表示,比如`info`列族下的`name`列,就表示为`info:name`。

Cell单元格

大白话详解大数据HBase,老刘真的很用心

 

如上图,我们通过指定rowkey行键、列族、列,就可以确定的一个Cell单元格。在Cell中的数据是没有任何类型的,全部都是以字节数组的形式进行存储的。

Timestamp时间戳

这个说的就是可以对表中的Cell多次赋值,每次赋值操作时的时间戳timestamp,可看成Cell值的版本号version number。

也就是一个Cell可以有多个版本的值的意思。

第4点:HBase架构

大白话详解大数据HBase,老刘真的很用心

 

从图中可以看出,这是一个非常典型的主从架构。下面详细说下各个组件:

Client客户端

Client它是操作HBase集群的入口,利用Client,再通过RPC与HMaster进行通信,可以完成表的增、删、改操作。也可以通过RPC与RegionServer通信,完成读写表数据的操作。

一般我们可以利用HBase shell或者JAVA API进行编程,完成上述表的操作。

ZooKeeper集群

ZooKeeper是什么有什么用,老刘已经在ZooKeeper框架那篇文章中详细讲解了,大家可以去看看。那它在HBase集群中的作用,就非常明显了,① 它实现了HMaster的高可用,多HMaster间进行主备选举。② 保存了HBase的元数据信息meta表。③ 对HMaster和HRegionServer各个节点进行监控。

HMaster

HBase集群也是主从架构,HMaster是主角色,是集群的老大,主要负责管理表和Region。

那它管理表和Region做一些什么呢?

1)管理Client对表的增删改的一些操作;

2)管理Region的操作就会比管理Client多一点。当Region分裂后,负责新Region分配到指定的HRegionServer上;当HRegionServer宕机后,负责其上的region的迁移;以及管理HRegionServer之间的负载均衡。

那大家有没有了解负载均衡,什么是负载均衡?

举个例子,一个网站最开始建立的时候,它的访问量比较小,但当它的流量变得特别大的时候,并发量就变得特别大了,网站就会出现访问延迟的一些现象。这个时候呢,就需要用到负载均衡了。以前这个网站是一个单一服务器,现在就可以配置多个服务器集群,那样就可以把访问流量分发到集群中的不同服务器上,这样就大大减少了单一服务器上的压力,也就是负载均衡想要做的事。

HRegionServer

它是HBase集群中从角色,是集群中的小弟。它主要负责响应客户端的读写数据请求,以及负责管理一系列的Region。

Region

它是HBase集群中分布式存储的最小单元,一个Region对应一个Table表的部分数据。简单理解就是表存储在HBase中,并且都是以Region为单位进行存储。

第5点:HBase shell命令

说一些常用的基础操作命令:

创建user表,包含info、data两个列族
create 'user', 'info', 'data'

使用put命令向user表中插入信息,row key为rk0001,列族info中添加名为name的列,值为zhangsan
put 'user', 'rk0001', 'info:name', 'zhangsan'

获取user表中row key为rk0001的所有信息(即所有cell的数据)
get 'user', 'rk0001'
获取user表中row key为rk0001,info列族的所有信息
get 'user', 'rk0001', 'info'

更新数据操作 将user表的f1列族版本数改为5
alter 'user', NAME => 'info', VERSIONS => 5

删除数据以及删除表操作
删除user表row key为rk0001,列标示符为info:name的数据
delete 'user', 'rk0001', 'info:name'

清空表数据
truncate 'user'

删除表
首先需要先让该表为disable状态,使用命令:
disable 'user'
然后使用drop命令删除这个表
drop 'user'
注意:如果直接drop表,会报错:Drop the named table. Table must first be disabled创建user表,包含info、data两个列族
create 'user', 'info', 'data'

使用put命令向user表中插入信息,row key为rk0001,列族info中添加名为name的列,值为zhangsan
put 'user', 'rk0001', 'info:name', 'zhangsan'

获取user表中row key为rk0001的所有信息(即所有cell的数据)
get 'user', 'rk0001'
获取user表中row key为rk0001,info列族的所有信息
get 'user', 'rk0001', 'info'

更新数据操作 将user表的f1列族版本数改为5
alter 'user', NAME => 'info', VERSIONS => 5

删除数据以及删除表操作
删除user表row key为rk0001,列标示符为info:name的数据
delete 'user', 'rk0001', 'info:name'

清空表数据
truncate 'user'

删除表
首先需要先让该表为disable状态,使用命令:
disable 'user'
然后使用drop命令删除这个表
drop 'user'
注意:如果直接drop表,会报错:Drop the named table. Table must first be disabled

再说一下HBase的高级操作命令:

显示服务器状态
status 'node01'

显示HBase当前用户
whoami

显示当前所有的表
list

统计指定表的记录数
count 'user' 

检查表是否存在,适用于表量特别多的情况
exists 'user'

检查表是否启用或禁用
is_enabled 'user'
is_disabled 'user'

禁用一张表/启用一张表
disable 'user'
enable 'user'

删除一张表,记得在删除表之前必须先禁用
drop

上述都是HBase shell命令的内容,还有用JAVA API进行表操作的内容,但是这部分老刘就不讲解了,有需要的话,可以联系老刘,我会分享给你。

02 HBase总结

今天是HBase知识点的第一部分,老刘尽量用大白话讲这些知识点讲述出来了,如果还有疑问,可以联系老刘哦!

最后希望今天讲的内容对大数据感兴趣的同学有帮助,也希望能够得到大家的批评和指点。



Tags:HBase   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
老刘今天复习HBase知识发现很多资料都没有把概念说清楚,有很多专业名词一笔带过没有解释。比如这个框架高性能、高可用,那什么是高性能、高可用?怎么实现的高性能高可用?没说!如...【详细内容】
2021-03-04  Tags: HBase  点击:(136)  评论:(0)  加入收藏
一、NoSQL的简介NoSQL比关系型数据库性能高数倍。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场。CP型分布式数据库,能够保证数据的强一致性和分区...【详细内容】
2021-02-25  Tags: HBase  点击:(446)  评论:(0)  加入收藏
在大数据相关行业的面试中,经常会被问到这个问题:Redis、传统数据库、HBase以及Hive的区别。 本文将针对这个面试问题,做以下分析:1.问题分析面试官考核的是你对不同数据存储技...【详细内容】
2021-02-23  Tags: HBase  点击:(337)  评论:(0)  加入收藏
Redis定位在"快",MongoDB定位在"灵活",HBase定位于"大"。在一般使用情况下,MongoDB可以当作简单场景下的但是性能高数倍的MySQL,Redis基本只会用来做缓存,HBase用来存储海量数据...【详细内容】
2020-11-11  Tags: HBase  点击:(173)  评论:(0)  加入收藏
数据模型传统的关系型数据库,一张表(table)由行(row)和列(column)组成。相对Hbase分布式数据库却有所差别,可以把Hbase中的表理解成不同维度Map的集合。包含以下主要概念。 ta...【详细内容】
2020-10-29  Tags: HBase  点击:(166)  评论:(0)  加入收藏
导读:HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSQL数据库,它的出现补齐了大数据场景下快速查询数据能力的短板。它非常适用于对平台中的热数据进行存储并提供查...【详细内容】
2020-10-14  Tags: HBase  点击:(105)  评论:(0)  加入收藏
Hbase是Hadoop开源项目下的一个子项目,是一个构建在hdfs之上,支持分布式,水平扩展,数据多版本等特性的NoSQL数据库。现广泛应用于大数据的存储和查询场景。单机模式安装安装包下...【详细内容】
2020-10-13  Tags: HBase  点击:(145)  评论:(0)  加入收藏
今天给大家分享的内容是LSM树,它的英文是Log-structed Merge-tree。看着有些发怵,但其实它的原理不难,和B树相比简直算是小儿科了。 并且这也是一个非常经典的数据结构,并且在大...【详细内容】
2020-09-22  Tags: HBase  点击:(148)  评论:(0)  加入收藏
大数据存储: HBase API,DDL,DML4.1 环境准备新建项目后在pom.xml中添加依赖:<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId>...【详细内容】
2020-08-25  Tags: HBase  点击:(98)  评论:(0)  加入收藏
首先,需要明确的是,HBase写入速度比读取速度要快,根本原因LSM存储引擎。LSM树全称是基于日志结构的合并树(Log-Structured Merge-Tree)。No-SQL数据库一般采用LSM树作为数据结构,H...【详细内容】
2020-08-10  Tags: HBase  点击:(152)  评论:(0)  加入收藏
▌简易百科推荐
张欣安科瑞电气股份有限公司 上海嘉定 201801 摘要:随着电力行业各系统接入,海量数据涌现,如何利用电网信息化中大量数据,对客户需求进行判断分析,服务于营销链条,提升企业市场竞...【详细内容】
2021-12-14  安科瑞张欣    Tags:大数据   点击:(9)  评论:(0)  加入收藏
1、什么是数据分析结合分析工具,运用数据分析思维,分析庞杂数据信息,为业务赋能。 2、数据分析师工作的核心流程:(1)界定问题:明确具体问题是什么;●what 发生了什么(是什么)●why 为...【详细内容】
2021-12-01  逆风北极光    Tags:大数据   点击:(25)  评论:(0)  加入收藏
在实际工作中,我们经常需要整理各个业务部门发来的数据。不仅分散,而且数据量大、格式多。单是从不同地方汇总整理这些原始数据就花了大量的时间,更不用说还要把有效的数据收集...【详细内容】
2021-11-30  百数    Tags:数据   点击:(21)  评论:(0)  加入收藏
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出。密码技术,是实现数据安全最经济、最有效、最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环...【详细内容】
2021-11-26  炼石网络    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
导读:网易大数据平台的底层数据查询引擎,选用了Impala作为OLAP查询引擎,不但支撑了网易大数据的交互式查询与自助分析,还为外部客户提供了商业化的产品与服务。今天将为大家分享...【详细内容】
2021-11-26  DataFunTalk    Tags:大数据   点击:(15)  评论:(0)  加入收藏
导读:数据挖掘是一种发现知识的手段。数据挖掘要求数据分析师通过合理的方法,从数据中获取与挖掘项目相关的知识。作者:赵仁乾 田建中 叶本华 常国珍来源:华章科技数据挖掘是一...【详细内容】
2021-11-23  华章科技  今日头条  Tags:数据挖掘   点击:(20)  评论:(0)  加入收藏
今天再给大家分享一个不错的可视化大屏分析平台模板DataColour。 data-colour 可视化分析平台采用前后端分离模式,后端架构设计采用微服务架构模式。 前端技术:Angularjs、Jq...【详细内容】
2021-11-04  web前端进阶    Tags:DashboardClient   点击:(39)  评论:(0)  加入收藏
在Kubernetes已经成了事实上的容器编排标准之下,微服务的部署变得非常容易。但随着微服务规模的扩大,服务治理带来的挑战也会越来越大。在这样的背景下出现了服务可观测性(obs...【详细内容】
2021-11-02  大数据推荐杂谈    Tags:Prometheus   点击:(40)  评论:(0)  加入收藏
同一产品对老客户的要价竟然比新客户要高?这是当下“大数据杀熟”的直接结果。近年来,随着平台经济的蓬勃发展,大数据在为用户服务之外,也引发了多种不合理现象。为了有效遏制“...【详细内容】
2021-10-29    海外网   Tags:大数据   点击:(31)  评论:(0)  加入收藏
本人03年开始从事贸易行业,多年来一直致力于外贸获客和跨境电商选品等领域,最近有些小伙伴反馈海关数据演示的都挺好为啥用起来不是那么回事?大家看到数据时关注的有产品、采购...【详细内容】
2021-10-28  QD云龙    Tags:数据   点击:(33)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条