HBase(九)集成MapReduce

HBase表中的数据最终都是存储在HDFS上,HBase天生的支持MR的操作,我们可以通过MR直接处理HBase表中的数据,并且MR可以将处理后的结果直接存储到HBase表中。 参考: http://hbase.apache.org/book.html#mapreduce 实战一:HBase表到HBase表 需求:读取HBase当中myuser这张表的f1:name、f1:age数据,将数据写入到另外一张myuser2表的f1列族里面去 第一步:创建myuser2这张hbase表... ... [查看更多]

Views: 12

HBase(八)Region 合并操作

Region的合并不是为了性能, 而是出于便于运维的目的 . 比如删除了大量的数据 ,这个时候每个Region都变得很小 ,存储多个Region就浪费了 ,这个时候可以把Region合并起来,进而可以减少一些Region服务器节点。 下面来看一下如何进行region合并: 通过Merge类冷合并Region 执行冷合并前,需要先关闭hbase集群 创建一张hbase表: 查看表region 需求: 通过查看UI界面,需要把test表中的前2个region数据进行合并,分别是: ... ... [查看更多]

Views: 13

HBase(七)表的预分区

HBase表的预分区 当一个table刚被创建的时候,Hbase默认的分配一个region给table。也就是说这个时候,所有的读写请求都会访问到同一个regionServer的同一个region中,这个时候就达不到负载均衡的效果了,集群中的其他regionServer就可能会处于比较空闲的状态。 解决这个问题可以用pre-splitting,在创建table的时候就配置好,生成多个region。 1 为何要预分区? 增加数据读写效率 负载均衡,防止数据倾斜 方便集群容灾调度r... ... [查看更多]

Views: 7

HBase(六)flush、compact机制

Flush 触发条件 memstore 级别限制 当Region中任意一个MemStore的大小达到了上限(hbase.hregion.memstore.flush.size,默认128MB),会触发Memstore刷新(flush)。 region 级别限制 当Region中所有Memstore的大小总和达到了上限(hbase.hregion.memstore.block.multiplier * hbase.hregion.memstore.flush.size,默认 ... ... [查看更多]

Views: 15

HBase(五)数据存储原理

一个HRegionServer会负责管理很多个region 一个region包含很多个store 一个列族就划分成一个store 如果一个表中只有1个列族,那么这个表的每一个region中只有一个store 如果一个表中有N个列族,那么这个表的每一个region中有N个store 一个store里面只有一个memstore memstore是一块内存区域,写入的数据会先写入memstore进行缓冲,然后再把数据刷到磁盘 一个store里面有很多个StoreFile,... ... [查看更多]

Views: 11