zoukankan      html  css  js  c++  java
  • HBase学习笔记

    关键类:

    HBaseAdmin 管理Hbase的,主要负责DDL操作

    HTable 管理表中数据,主要负责DML操作

    1、为了避免热点,更多的建表方法

    在Shell中:

     create 'tb_splits',{NAME=>'cf',VERSION=>3},{SPLITS=>['a','b','c']}
    --直接创建多个region的table,每个region的startkey和endkey由参数依次指定,第一个region没有开始startkey,最后一个没有endkey
    --rowkey参数的选择必须有意义,才能实现均匀分布,否则分多个region无意义
    --多个region可以分布在多个regionserver上,添加数据的时候数据可以均匀分布在region中,实现负载均衡

    在Java中

    hBaseAdmin.createTable(tableDescriptor,Bytes.toBytes(0L),Bytes.toBytes(100L),10);
    hBaseAdmin.createTableAsync(tableDescriptor,keyValueArray);
    

    2、原子操作

    原子插入(compare-and-set)

    hTable.checkAndPut(row,family,qualifier,value,put)
    

    原子删除(compare-and-delete)

    hTable.checkAndDelete(row,family,qualifier,value,delete)
    

    3、计数器:

    用于实时收集信息,原子操作

    在Shell下操作

    incr 't1','20150226','daily:hits',1
    -- t1 表名
    --20150226 行健
    -- daily是列族
    --hits 是列,最后是值
    get_counter 't1','row_key','daily:hits' 

    在java中操作

    hTable.incrementColumnValue(...)
    hTable.increment(increment)
    

      

    HBase的数据格式:

    1、Region 存储数据有三部分组成,包括HLog、MemStore、HStore

    2、WAL(write-ahead-log),RegionServer共享一个HLog实例。

    往region写数据之前,先往HLog里面写数据,同时往MemStore里面写

    HLog是为了保证事务,MemStore保证客户端访问速度

    *当MemStore文件快满的时候,会合并并写StoreFile写入HDFS;当StoreFile很多的时候,会合并合并为一个大文件

    *HBase还有个存储结构,LMS树的文件会不断合并;和一般的索引文件不同,索引一般用B+树结构:宽度非常宽,深度很浅

    HFile 是存储数据最根本的,storefile是对hfile的简单封装

  • 相关阅读:
    hdu5081
    hdu5079
    hdu5076
    hdu5072
    codeforces 739E
    codeforces 739D
    2017.2其他简要题解
    spring事务传播回滚策略
    mybatis一级缓存和二级缓存
    spring-boot-mybatis-starter工作原理
  • 原文地址:https://www.cnblogs.com/hpuCode/p/5217135.html
Copyright © 2011-2022 走看看