HBase学习二
作者:互联网
本次记录是用于:SparkStreaming对接Kafka、HBase记录
一、简介
①HBase本身是一个菲关系型数据库,存储数据结构时以key-value结构来进行存储,HBase中的数据是稀疏的。
②基于Hadoop运行,但是HBase的效率在秒级别
③基于列存储:传统行存储方式在查询特定列时,大部分时间花在磁盘寻址;而实际开发中,查询数据往往不是整表查询,往往是查询几列,此时列存储效率就高一些
④HBase中可以设计多个列族,但是一般不超过3个
⑤列族在创建表时需要指定,但是在添加数据时,可以向列族中添加不同的列
⑥HBase本身是基于HDFS进行存储,HDFS的特点是一次写入不能修改。在HBase中,如果修改数据,不是修改最原始的数据而是追加数据,在获取数据时,如果不指定,默认获取最新的(timestamp)数据。时间戳在HBase的数据称之为这个数据的版本VERSION
⑦HBase利用Zookeeper进行管理。HMaster通过Zookeeper监听HRegionServer。这个过程中,HBase自带了一个Zookeeper,如需配置额外的Zookeeper,则需禁用自带的HBase
⑧如果一个HBase集群中启动了多个HMaster,则会按照启动顺序,先启动的节点作为active HMaster,后启动的节点自动为HMaster的备份
⑨当HBase启动时,每个节点都会自动在Zookeeper上注册一个临时节点,在注册临时节点时,注册的不是ip而是主机名
⑩HBase与Hive区别:
1)HBase是菲关系型数据库,Hive是基于Hadoop的数仓工具
2)Hive必须基于Hadoop;HBase可以不基于Hadoop,HBase可以脱离Hadoop存在
3)HBase只提供了基本CRUD能力;Hive提供了大量的函数允许对数据进行ETL过程
4)HBase存储的数据是稀疏/半结构化的,Hive存储是结构化的数据
5)HBase针对列操作;Hive针对行操作
二、物理存储
①在HBase中,会将一个Table中的一行或多行划分为一个HRegion,也就意味着一个Table可以认为是由一个或多个HRegion构成,表刚创建时,默认只有一个HRegion
②每个HRegion可以分布到不同的节点(HRegionServer)上,方便表的分布式存储
③随着表的不断扩大,一个HRegion中的数据越来越多,达到一定的限度后,HRegion会裂为均等的两个HRegion
④分裂的限度为10G,这个值可以设置,一般集群中可以将这个值设置在1~20G
⑤HRegion在分裂完成后,这些HRegion会转移到其他节点上从而保证数据的分布式存储
⑥HRegion转移过程对用户是屏蔽的,由HBase自动完成,并且HBase在转移HRegion会考虑负载均衡(尽量保证每个节点的HRegion的个数差不多)
⑦负载均衡是由HMaster控制,HRegion是分布式存储的最小单位,每个HRegionServer上都会存储1到多个HRegion
⑧HRegion不是最小的存储单位,HRegion中包含了1个或多个HStore,每一个列族对应一个HStore
⑨每一个HStore中包含了1个memStore以及0或多个StoreFile
⑩StoreFile落地到HDFS上时,称之为HFile
三、技术细节
标签:存储,HRegion,Hive,学习,HBase,数据,节点 来源: https://www.cnblogs.com/rmxd/p/12268964.html