微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

三、技术细节

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐