hadoop fs –ls /hbase 无内容_hadoop大数据复习过程(五) ------Hbase

v2-ec0d9f66656ce4714e08413bc9c72ec1_1440w.jpg?source=172ae18b

Hbase

72d9fe09bfbee67cc6e36cb0ec810249.png

前言:说到Hbase个人理解就是一个新类型的数据库,和传统数据库有很大的区别,但是也离不开传统数据库的存储模式。处理数据量很大,

实时性,hbase可以说只有两个字段,rowkey和column family(列族),当然这是简单的说法。下面的图片是hbase的架构图可以说明在hadoop

中充当的角色。

以下总结一下hbase的内容

Hbase

hbase是数据库

特点

高可靠性

高性能

面向列

可伸缩

实时读写

数据量

十亿级别的行

百万级别的列

速度快的原因

充分利用内存

使用了LSM树

缓存机制

文件是顺序读

数据模型

rowkey

相当于MySQL中的主键,唯一标识一行记录

rowkeys是字典序

rowkey的长度最长是64k,但是一般推荐10-100字节

column family

一组列的集合

列族必须作为表的schema定义给出

列族是权限,存储的最小单元

qulifier

可以动态的,随机的插入

表定义之后没有限制列,随着值的插入也把列插入

列必须归属于某一个列族

timestamp

时间戳,64为整数,精度是毫秒

起版本号的作用,一个Cell中可以存在多版本的数据

时间戳可以自己定义,但是一般不推荐

cell

存储数据的最小单元(逻辑概念)

存储的是KV格式的数据

K: rowkey+column family+qulifier+timestamp

V:value

hbase的cell存储数据的时候没有类型的区分,存放的都是字节数组

架构

hbase是主从架构

角色

client

操作hbase的接口,并维护客户端缓存

zookeeper

保证任何时刻集群中有且仅有一台avtive的master

存储所有region的寻址入口

所有region元数据存储在哪一台regionserver

监控regionserver的上线和下线信息,并实时通知master

存储相关的表的schema数据

master

分配region

保证整个集群中的所有regionserver的负载均衡

当发现某一台regionserver宕机之后,重新分配上面的region

当region变大进行裂变的时候,master去分配region到哪一台regionserver

regionserver

负责接受客户端的读写请求,处理对于region的IO

当某一个region变大之后,负责等分为两个region

region

相当于表的概念,一张表至少对应一个region

当表的数据过大的时候,region会发生裂变

store

相当于列族

角色

memstore

位于内存

每一个store有一个memstore

storefile

磁盘存储空间,将数据持久化的存储位置

每一个region有一个或者多个storefile

storefile可以进行合并操作

存储结构:使用了LSM的数据模型

读写流程

读流程

1、客户端向zk中发送请求

2、从zk中拿到metadata的存储节点

3、去存储metadata的节点获取对应region的所在位置

4、访问对应的region获取数据

5、先去memstore中查询数据,如果有结果,直接返回

6、如果没有查询到结果,去blockcache查找数据,如果找到,直接返回

7、如果没有找到,去storefile中查找数据,并将查询到的结果缓存会blockcache中,方便下一次查询

8、将结果返回给客户端

注意:blockcache是缓存,有大小限制,会有淘汰机制,默认将最早的数据淘汰

写流程

1、client向zk发送请求

2、从zk中拿到metadata的存储节点

3、去存储matadata的节点获取对应region所在的位置

4、访问对应的region写数据

5、首先会向wal中写数据,写成功之后才会存储到memstore

6、当memstore中的数据量达到阈值之后,进行溢写,溢写成storefile

7、store file是一个个的小文件,会进行合并(minor,major)

8、store file是对hfile的封装,hfile是实际存储再hdfs上的数据文件

WAL

write ahead log

放置数据丢失

先写内存,再向hdfs上溢写,但是是异步的方式

JAVAAPI

HBaseAdmin

管理表

createtable

disabletable

deletetable

HTable

管理数据

put

get

scan

delete

最后说一下hbase和hive的区别,因为经常有人问

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。HBase是Hadoop的数据库,一个分布式、可扩展、大数据的存储。单个的从字面意思上或许很难看出二者的区别,别急,下面我们就对二者做个详细的介绍。

两者的特点

Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDBC兼容的,同时,它也能够和现存的SQL工具整合在一起。运行Hive查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive的分区机制来控制。分区允许在数据集上运行过滤查询,这些数据集存储在不同的文件夹内,查询的时候只遍历指定文件夹(分区)中的数据。这种机制可以用来,例如,只处理在某一个时间范围内的文件,只要这些文件名中包括了时间格式。

HBase通过存储key/value来工作。它支持四种主要的操作:增加或者更新行,查看一个范围内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据可以被删除,然后通过Hbase compactions就可以释放出空间)。虽然HBase包括表格,但是schema仅仅被表格和列簇所要求,列不需要schema。Hbase的表格包括增加/计数功能。

限制

Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。

HBase查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID特性,虽然它支持某些特性。最后但不是最重要的–为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。

应用场景

Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。

Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。

总结

Hive和Hbase是两种基于Hadoop的不同技术–Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。当然,这两种工具是可以同时使用的。就像用Google来搜索,用FaceBook进行社交一样,Hive可以用来进行统计查询,HBase可以用来进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

HBaseDAOImp这是Hbase的实现类,可以看一下,理解代码,不用自己写。

附:HbaseDaoImp HBASE 增删改查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值