首页 > 大数据 > > Hbase初次接触与总结
1.Hbase的应用场景及特点
2.Hbase的概念与定位
3.Hbase架构体系与设计模型
4.Hbase的安装部署
5.Hbase shell使用
1.
海量数据存储
HBase表:
上百亿行*上百万列
一般关系数据库不会超30列
Hbase不会
准实时查询
查询时间在百毫秒内
上百万行数据没有必要用Hbase
应用场景:海量数据并且需要在百毫秒内查询数据的需求
Hbase的应用场景及特点
实际场景:交通、金融、电商、移动信息
Hbase的特点
容量大:Hbase单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据两级都非常具有弹性
关系型数据库单表不会超过五百万,列不超过30列
面向列:Hbase是面向列的存储和权限控制,并支持独立检索。
列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段的时候,能大大减少读取的数据量
多版本:Hbase每一个列的数据存储有多个Version(类似历史数据)
稀疏性:为空的列并不占用存储空间,表可以设计的非常稀疏(比如没有数据的列在Hbase中没有这个列)
扩展性:底层一栏HDFS

HDFS的文件读取原理,主要包括以下几个步骤:
· 首先调用FileSystem对象的open方法,其实获取的是一个DistributedFileSystem的实例。
· DistributedFileSystem通过RPC(远程过程调用)获得文件的第一批block的locations,同一block按照重复数会返回多个locations,这些locations按照hadoop拓扑结构排序,距离客户端近的排在前面。
· 前两步会返回一个FSDataInputStream对象,该对象会被封装成 DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流。客户端调用read方法,DFSInputStream就会找出离客户端最近的datanode并连接datanode。
· 数据从datanode源源不断的流向客户端。
· 如果第一个block块的数据读完了,就会关闭指向第一个block块的datanode连接,接着读取下一个block块。这些操作对客户端来说是透明的,从客户端的角度来看只是读一个持续不断的流。
· 如果第一批block都读完了,DFSInputStream就会去namenode拿下一批blocks的location,然后继续读,如果所有的block块都读完,这时就会关闭掉所有的流。

HDFS的文件写入原理,主要包括以下几个步骤:
· 客户端通过调用 DistributedFileSystem 的create方法,创建一个新的文件。
· DistributedFileSystem 通过 RPC(远程过程调用)调用 NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode 就会记录下新文件,否则就会抛出IO异常。
· 前两步结束后会返回 FSDataOutputStream 的对象,和读文件的时候相似,FSDataOutputStream 被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode和 DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列 data queue。
· DataStreamer 会去处理接受 data queue,它先问询 NameNode 这个新的 block 最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的 DataNode,把它们排成一个 pipeline。DataStreamer 把 packet 按队列输出到管道的第一个 DataNode 中,第一个 DataNode又把 packet 输出到第二个 DataNode 中,以此类推。
· DFSOutputStream 还有一个队列叫 ack queue,也是由 packet 组成,等待DataNode的收到响应,当pipeline中的所有DataNode都表示已经收到的时候,这时akc queue才会把对应的packet包移除掉。
· 客户端完成写数据后,调用close方法关闭写入流。
· DataStreamer 把剩余的包都刷到 pipeline 里,然后等待 ack 信息,收到最后一个 ack 后,通知 DataNode 把文件标示为已完成。
HDFS 副本存放策略
namenode如何选择在哪个datanode 存储副本(replication)?这里需要对可靠性、写入带宽和读取带宽进行权衡。Hadoop对datanode存储副本有自己的副本策略,在其发展过程中一共有两个版本的副本策略,分别如下所示

高可靠性:WAL机制保证了数据写入时不会因集群异常而导致数据丢失:Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且HBase底层使用HDFS HDFS本省也有备份。
高性能:底层LSM数据结构和Rowkey有序排列等架构上的独特设计,使得HBase具有非常高的写入性能。Region切分、主键索引使得HBase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能够到达毫秒级别。
HBase的概念与定位
下载地址:
http://archive.apache.org/dist/hbase/
Cdh5 (版本对应)
http://archive.cloudera.com/cdh5/
HBase架构体系与设计模型

HBase有两个进程,RegionServer和Master。HBase依赖于两个服务,ZooKeeper和HDFS。
红线流程:
RegionServer:相当于DateNode,用来管理表里的数据,当一个表数据量很大的时候,可以进行分区,一个区对应的就是一个Region。每个Region管理自己的数据,RegionServer就是管理集群里的Region。
RegionServer会实时地报告Master,首先RegionServer需要实时地将自己的状态报告给Master(比如RegionServer是否是存活地,目前运行状态如何),第二个RegionServer管理了哪些Region,Master也要知道。这样Master就知道了每个RegionServer的状态与RegionServer管理了哪些Region,这样当出现某个RegionServer宕机之后,Master就可以立即将这个RegionServer管理的Region切换到其他存活的RegionServer机器上节点上面。
黑线流程:
同红线,ZooKeeper的信息跟Master是一样的,它也知道哪些机器上的RegionServer是存活的,哪些是宕机的,也知道每个RegionServer管理了哪些Region。
HBase架构体系与设计模型
HBase表结构模型并举例说明:


当区域很多的时候用region对区域进行划分。可以自动或手动划分
总结:
Hbase是一个分布式的数据库
主要作用:海量数据的存储和海量数据的准实时查询
HBase特点
容量大
列式存储
多版本
…
二、定位
三、服务架构
1) Hbase的主要进程:naster regionserver
2) 2)Hbase所以来的两个外埠服务:zookeeper HDFS
四、安装部署
>>Hbase部署条件
1) JDK1.7以上
2) 2)Hadoop2.5x以上
3) 3)zookeeper3,。4x以上
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3168517/ ,如需转载,请注明出处,否则将追究法律责任。