Hbase
mischen520
JAVA高级架构师
展开
-
HBase中RowKey如何设计
1)生成随机数、hash、散列值2)字符串反转原创 2021-07-07 07:43:40 · 98 阅读 · 0 评论 -
什么是Phoenix?
6.1.1Phoenix定义Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。6.1.2Phoenix特点1)容易集成:如Spark,Hive,Pig,Flume和Map Reduce;2)操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改;3)支持HBase二级索引创建。6.1.3Phoenix架构...原创 2021-05-30 09:11:32 · 376 阅读 · 0 评论 -
HBase与Hive的对比
1.Hive(1) 数据分析工具Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。(2) 用于数据分析、清洗Hive适用于离线的数据分析和清洗,延迟较高。(3) 基于HDFS、MapReduceHive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。2.HBase(1) 数据库是一种面向列族存储的非关系型数据库。(2) 用于存储结构化和非结构化的数据适用于单表原创 2021-05-30 09:00:59 · 89 阅读 · 0 评论 -
HBase生产优化
5.1预分区每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据所要投放的分区提前大致的规划好,以提高HBase性能。1.手动设定预分区hbase> create 'staff1','info',SPLITS => ['1000','2000','3000','4000']2.生成16进制序列预分区create 'staff2','info'.原创 2021-05-29 10:03:40 · 240 阅读 · 0 评论 -
Region Split
默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:1.当1个region中的某个Store下所有StoreFile的总大小超过hbase.hregion.max.filesize,该Region就会进行拆分(0.94版本之前)。2.当1个region...原创 2021-05-29 09:51:35 · 298 阅读 · 0 评论 -
StoreFile Compaction
由于memstore每次刷写都会生成一个新的HFile,且同一个字段的不同版本(timestamp)和不同类型(Put/Delete)有可能会分布在不同的HFile中,因此查询时需要遍历所有的HFile。为了减少HFile的个数,以及清理掉过期和删除的数据,会进行StoreFileCompaction。Compaction分为两种,分别是MinorCompaction和MajorCompaction。MinorCompaction会将临近的若干个较小的HFile合并成一个较大的HFile,并清理...原创 2021-05-29 09:41:49 · 133 阅读 · 0 评论 -
Hbase读数据详细流程
1)整体流程2)Merge细节读流程1)Client先访问zookeeper,获取hbase:meta表位于哪个RegionServer。2)访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个RegionServer中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。3)与目标RegionServer...原创 2021-05-29 09:34:10 · 301 阅读 · 0 评论 -
Hbase常用表操作
2.2.1基本操作1.进入HBase客户端命令行[mischen@hadoop102 hbase]$ bin/hbase shell2.查看帮助命令hbase(main):001:0> help2.2.2namespace的操作1.查看当前Hbase中有哪些namespacehbase(main):002:0> list_namespaceNAMESPACE ...原创 2021-05-29 09:11:45 · 927 阅读 · 0 评论 -
HBase高可用设计
在HBase中HMaster负责监控HRegionServer的生命周期,均衡RegionServer的负载,如果HMaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对HMaster的高可用配置。1.关闭HBase集群(如果没有开启则跳过此步)[mischen@hadoop102 hbase]$ bin/stop-hbase.sh2.在conf目录下创建backup-masters文件[mischen@hadoop102 hba原创 2021-05-27 01:19:55 · 102 阅读 · 0 评论 -
HBase与Hive的比较
1.Hive(1) 数据分析工具Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。(2) 用于数据分析、清洗Hive适用于离线的数据分析和清洗,延迟较高。(3) 基于HDFS、MapReduceHive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。2.HBase(1) 数据库是一种面向列族存储的非关系型数据库。(2) 用于存储结构化和非结构化的数据适用于单表原创 2021-05-21 06:31:55 · 148 阅读 · 0 评论 -
MemStore Flush
MemStore刷写时机:1.当某个memstore的大小达到了hbase.hregion.memstore.flush.size(默认值128M),其所在region的所有memstore都会刷写。当memstore的大小达到了hbase.hregion.memstore.flush.size(默认值128M)*hbase.hregion.memstore.block.multiplier(默认值4)时,会阻止继续往该memstore写数据。2.当region server中...原创 2021-05-20 07:09:51 · 233 阅读 · 0 评论 -
HBase写数据流程
写流程:1)Client先访问zookeeper,获取hbase:meta表位于哪个RegionServer。2)访问对应的Region Server,获取hbase:meta表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个RegionServer中的哪个Region中。并将该table的region信息以及meta表的位置信息缓存在客户端的meta cache,方便下次访问。3)与目标RegionServer进行通讯;4)将数据顺序写入(追加)...原创 2021-05-20 06:59:33 · 863 阅读 · 0 评论 -
RegionServer 架构
1)StoreFile保存实际数据的物理文件,StoreFile以Hfile的形式存储在HDFS上。每个Store会有一个或多个StoreFile(HFile),数据在每个StoreFile中都是有序的。2)MemStore写缓存,由于HFile中的数据要求是有序的,所以数据是先存储在MemStore中,排好序后,等到达刷写时机才会刷写到HFile,每次刷写都会形成一个新的HFile。3)WAL由于数据要经MemStore排序后才能刷写到HFile,但把数据保存在内存中会有很高的概率..原创 2021-05-20 06:51:40 · 253 阅读 · 1 评论 -
HBase基本架构
架构角色:1)RegionServerRegionServer为 Region的管理者,其实现类为HRegionServer,主要作用如下:对于数据的操作:get, put, delete;对于Region的操作:splitRegion、compactRegion。2)MasterMaster是所有RegionServer的管理者,其实现类为HMaster,主要作用如下:对于表的操作:create, delete, alter对于RegionServer的操作:分配...原创 2021-05-20 06:42:05 · 130 阅读 · 0 评论