hbase重点总结

Hbase

                                               官网:http://hbase.apache.org/

1hbase rowkey怎么创建比较好,列簇怎么创建比较好?

1、三维

Hbase有序存储的三维是指:rowkey(行主键),column key(columnFamily+qualifier)timestamp(时间戳)三部分组成的三维有序存储。

2Hbase 表添加大量数据

File/datas--->hfile--->bulk load into hbase table

一个region大量数据放到里面,regionServer有可能出问题,所以进行预分区,数据同时插入多个region

实质就是提前划分region

默认情况:startkeyendkey都为空

提前分区:提前创建多个region,为每个region划分rowkey的区间

实现预分区:rowkey是前缀匹配

创建预分区的三种方式:

Create “ns1:t1”,”info”,split => [‘10’,’20’,’30’,’40’,’50’]  6region

Create “ns1:t1”,”info”,SPLIT_FILE =>’split.txt’

Create“ns1:t1”,”info”,{NUMREGIONS =>6,SPLITALGO =>’HexStringSplit’}

3Rowkey设计:

默认情况下,是索引检索的唯一依据。

目的:尽量减少磁盘空间,加快索引速度,避免热点问题。

基本原则:根据企业业务需求设计

唯一原则:rowkey具有唯一性

设计原则:建议rowkey长度在100以内,越短越好8-16

散列原则避免热点问题,随机值+算法生成

反转字符串:123--->321

4、例如:

主表:rowkey  phone+time

1、索引表:rowkey别人号码+时间

列簇:info

列主表rowkey

主表与索引表同步-------->事务

https://phoenix.apache.org nosql中建立sql(客户端)jdbc同步

创建索引表的第二种方式

Solr

自动创建索引  cloudera search

  字符串拼接:随机值+话单+时间           

2、Hbase过滤器实现原则

 所有的过滤器都在服务端生效,叫做谓语下推(predicate push down),这样可以保证被过滤掉的数据不会被传送到客户端。

注意:

  基于字符串的比较器,如RegexStringComparatorSubstringComparator,比基于字节的比较器更慢,更消耗资源。因为每次比较时它们都需要将给定的值转化为String.截取字符串子串和正则式的处理也需要花费额外的时间。
  过滤器本来的目的是为了筛掉无用的信息,所有基于CompareFilter的过滤处理过程是返回匹配的值。

filter ==> SQL 中的Where

3Hbase读写数据的过程

hbase读写流程:


读的流程(zookeeper(regionserver地址)-->hbase(hbase(meta(regionserver(region(roekey)))))--
Region(操作))
具体流程:
1、语句检索rowkey 找到具体region-->链接zookeeper(查找meta的regionserver地址)--->找到hbase的regionserver及其管理的region-->
2、 读取一行数据--->先检查memstore等待修改的队列--->在检查blockcache看是否包含该行的block是否最近被访问过---> 最后访问硬盘上对应的hfile


写的流程:Put ‘tname’,’rowkey’,’cf:c’,’value’
先写到hlog,然后在向memstore写,memstore到达一定阈值后,在向hfile写。
具体流程:
1、语句检索:rowkey + cf +col -》  region
2、链接zookeeper(查找meta的regionserver地址)--->找到hbase的regionserver-->
Region-->store(向memstore写,memstore到达一定阈值后flush成一个storefile,storefile增长到一定阈值促发compatct合并操作,单个storefile超过一定阈值会促发split操作,把当前region split成两个region,原本的region下线,新生的两个region被HMaster分配到相应的regionserver)-->storefile(hfile)-->hdfs

4Hbase宕机如何处理

 

5Hbase怎么预分区

分区:

默认一张表一个region:

Rowkey:0000--1000

Region1:0000-0500  startkey:0000

Region2:0501-1000  startkey:0500

后面的数据:

1001--->region2

1002--->region2

1500-->region2-->region3:0501-1000

 region4:1001-1500             rowkey一直是递增的。

与分区:提前划分region

 默认情况下:startkeyendkey都为空

提前分区:提前创建多个region,为每个region划分rowkey

实现:

创建预分区的三种方式:

Create “ns1:t1”,”info”,split => [‘10’,’20’,’30’,’40’,’50’]  6region

Create “ns1:t1”,”info”,SPLIT_FILE =>’split.txt’

Create“ns1:t1”,”info”,{NUMREGIONS =>6,SPLITALGO =>’HexStringSplit’}

6、Hbase处理并发问题

锁与mvcc机制

具体参见此篇博客:http://www.cnblogs.com/leetieniu2014/p/5393755.html

HBase同步机制

HBase提供了两种同步机制,一种是基于

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值