Hbase快速入门

【1,hbase是什么?】

答:hbase是一个开源的然后非关系分布式数据库,

【2,hbase是数据保存在哪里?】

答:hbase的数据保存在hdfs上,但还有少量数据是保存在内存中的。

【3,hbase有哪些特性?】

答:高可靠,高并发读写,面向列,可伸缩,易构建.

优势:

  • 海量数据存储。hdfs分布式文件系统存储数据
  • 快速随机访问。hdfs中数据通常是顺序读取,原因就是吞吐能力,hbase是随机写入和访问。
  • 大量写操作的应用。

【4,hbase中什么叫面向列?】

答:数据存储有两种,一种是面向行存储(关系型数据库),一种是面向列存储。

面向行存储特点:

1.优点:就是写入的时候一次性要完成,并且它是保证你数据的完整性.每一列都必须有值,而且必须保证其完整性。

2.缺点:读数据的时候会产生很多冗余的数据。

  • select name from user ;
  • 内部在读取数据的时候是把整条记录都读取出来

面向列的特点:

1.优点:读取数据的时候不会产生冗余的数据。

  • select name from user ;
  • 内部在读取数据的时候是只把列存储的name直接读取出来,其他字段不会去查。

2.缺点:写入数据的效率差,不能保证数据的完整性。

【5,列存储的具体内容】

假设说它分了四列(如下图8所示),列存储它就是分了四个不同的文件,每一个文件它的存储是这样存的,比如说你列字段里面都有值了,我们只做A和B和C和name和zhangsan和list做例子,其中第一个文件应该是这么存的: A \tzhangsan,B \t lisi,因为c没有name,所以就不存了

图8:

**NOTE:**Nosql里面它不是要求你所有的字段都是要有值的,因为是稀疏存储.

【6,Hbase主要应用在哪些领域? 】

  • 互联网搜索引擎数据存储
  • 海量数据写入
  • 消息中心
  • 内容服务系统(schema-freee)
  • 大表复杂&多维度索引
  • 大批量数据读取

【7,Hbase的数据模型? 】

图12

rowkey在整个的hbase表里面一定是按照你的字节去排序.行键其实就是hbase表的主键。

  • 什么是Column Family?

    每一条记录里面或者是在你去建Hbase的Schema设计的时候要指定好Column Family,那什么是Column Family呢?你可以认为就是一个列族,但是它这个列你可以在列族里面又可以细分出多个列出来,就是Column Family下面可以细分出多个子列,那这些子列称为Column qualifiar。

  • 什么是时间戳?

    简单点说就是版本号,需要注意的是时间戳是按照倒序排序的。每次修改列族的值, 不是在原来的基础上修改,而是帮你去重新复制一份记录出来,然后再复制出来的记录上去修改名字,原来这个名字这个记录,它会以某一种版本的形式给你记录起来明白了把?就是通过一个时间戳给你记录起来。

下面看两外一个例子

  1. 当我们去读数据的时候默认是将最新的时间戳这个记录读取出来,不是把所有时间戳的数据都读出来。
  2. a这个columnqualifier它这里面是包含了很多的一些列的名字,但是b里面就包含了一个,那这个columnqualifier这个设计就可以允许,就是hbase设计表的时候就非常的灵活。

Hbase你的检索能够更快速并且你的数据的维护更合理,那它这里面会体现了一个三维有序的这么一个特点

什么叫做三维有序

第一个纬度就是你的rowkey
第二个纬度就是它的列(cf和cq)
第三维就是version-value

【8,Hbase的物理模型? 】

数据模型和物理模型这两个是有什么差异,这个大家应该是没有什么问题了,就是物理模型是称数据模型的实现。

Hbase的一张表其实它是由一个或多个Hreging来组成的,那什么叫做Hreging呢?那在Hreging大家可以暂时先认为它就是一个区域或者分区,所以认为一个Hbase一张表它是由一个或多个分区组成,然后并且这张表的数据是按照rowkey进行字典排序的,我们看上图23图中的图,相当于就是一张用户表,就类似于刚才那张一样。

每一个region的内部他们这个rowkey按照顺序排序的,而且region与region之间也是按照这种全局排序的,这是一个整体的一个物理的逻辑图。


那这个region呢因为是有大小概念的,有的region包含的记录多也有的region包含的记录少,那什么时候会region会变多有时候会变少?因为你这个数据是随着你的插入,使这个region是不断的增大。

如果数据是稀疏的:

如果要插入88,在第2个region中,那么会在99的位置开个口子,将88填充进去。随着不断的插入,第2个region不断增大,region就应该一分为二,变成76~100。

【9,什么情况下region会自动分裂?】

这个Region他有一个默认配置可以配,默认是10G。一个region里面它所管辖的数据里面超过了10个G的话,它会自动的去切分,region你可以认为是在Hbase整个集群里面是数据分布的一个最小的单位。

region它仅只能是属于某一个机器的,那这个机器的名字叫做regionService,一个region它只属于一个regionService,但是不允许一个region它既属于regionService又属于另外一个regionService。

总结:
1,一个region只能属于一个regionService.
2,一个regionServer可以包含多个region(不同表的region)。
3,region代表一个区域,是一个逻辑概念。

【10,如果在列族中既有写又有读,hbase是怎么处理的?】

只修改里面其中一个字段,其他字段不修改,把整行记录加锁明白这意思把?所以Hbase它是按行锁定的

【11,regionService用来干什么的?】

主要是负责用户的IO请求.

  • 什么是IO请求

    就是读和写.读和写的目的是干嘛?不就是操作数据嘛对不对?那它的数据哪里来的呢?就是在这个HDFS上,这个RegionService就给你提供了这么一个IO的一个入口然后供你客户端来对HDFS进行一个交互,所以RegionService在这上面是一台机器,但是在这个机器上面它会运行着一个进程,这个进程就叫做HRegionServer,这是进程,它这个进程是在Hbase里面是属于一个非常非常核心的一个进程,一个HRegionServer内部管理了一系列的HRegion对象.


【12,Hregion与region区别?】 Region是你对应Table的一个Region,然后HRegion相当于是对着Region一个封装,你可以简单理解就是这个Region就是逻辑概念,而HRegion就是一个物理概念。 **【13,HTable ,Hbase,Hstore HFile?】**
  • HTable

    就是表——>表

  • Hstore

    Hbase你是可以分多个Column Family的对吧,一个Column Family就是一个Hstore,你可以认为就是一系列的文件,你简单理解就是一个文件.

Hstore由两部分组成:

  1. 内存区(memstore)
  2. HFiles真正落入磁盘的数据的一个数据

首先把你的数据往memstore去写,当写到一定程度的时候,它就会把这个内存里面的数据做一个内存溢并写出多个Hfiles出来。什么叫有序KV?有序KV这个之前我们讲mapreduce的时候,那不是有一个排序嘛?按key进行排序这不就是一个有序kv嘛对吧.

Hbase的这个memstore大小是:128m.这个系统默认的128m可以改的,一旦达到了这个128m的时候它就开始往磁盘上存。

mapreduce里面memstore它的默认的空间大小是多大来着?是100m

通过下面图看出他们的联系:

BlockCache是一个也是类似于像menStor一样是一块内存区域,它这个缓存区是用来读的。

BlockCache就是一个读缓存,一个RegionService它可以管理着很多个Region是吧?然后这每一个Region里面又包含了很多的Hstore,然后每一个Hstore里面它又包含了一个MemStore又包含着很多的StoreFile,其实StoreFile本质就是一个HFile,HFile就直接落地到了你的DataNode上面去了。

【14,hbase的系统架构】
Hbase整个系统架构就主要包含了四个部分是吧?那就是Client和Master和Region Server和Zookeeper。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值