• 3.1-3.3 HBase Shell创建表


    一、HBase Shell创建表

    1、HBASE shell命令

    ##
    hbase(main):001:0> create_namespace 'ns1'        //创建命名空间:ns1
    hbase(main):002:0> list_namespace            //查看命名空间
    
    
    ##
    hbase(main):003:0> create 'ns1:t1', 'cf'            //创建一个表t1,属于ns2命名空间,列族:cf
    
    hbase(main):005:0> create 'ns1:t2',{NAME =>'f1'},{NAME =>'f2'},{NAME =>'f3'}          //创建一张表,有三个列族f1 f2 f3
    hbase(main):009:0> create 'ns1:t3', 'f1', 'f2', 'f3'
    
    hbase(main):010:0> list_namespace_tables 'ns1'        //查看命名空间下的表
    
    hbase(main):011:0> describe 'ns1:t2'            //查看命名空间下的表的结构


    二、HBase表创建时的预分区

    1、预分区

    HBase默认建表时有一个region,这个region的rowkey是没有边界的,即没有startkey和endkey,在数据写入时,所有数据都会写入这个默认的region,
    随着数据量的不断  增加,此region已经不能承受不断增长的数据量,会进行split,分成2个region。在此过程中,会产生两个问题:
    1.数据往一个region上写,会有写热点问题。
    2.region split会消耗宝贵的集群I/O资源。
    基于此我们可以控制在建表的时候,创建多个空region,并确定每个region的起始和终止rowky,这样只要我们的rowkey设计能均匀的命中各个region,
    就不会存在写热点问题。自然split的几率也会大大降低。当然随着数据量的不断增长,该split的还是要进行split。像这样预先创建hbase表分区的方式,称之为预分区;


    2、预分区方式1

    hbase(main):015:0> create 'bflogs', 'info', SPLITS => ['20151001000000000', '20151011000000000', '20151021000000000']

    指定预估rowkey(年月日时分秒毫秒):
       ’20151001000000000’
       ’20151011000000000’
       ’20151021000000000’

    生成了4个region:

    image


    3、预分区方式2

    ##
    可以把预估rowkey,放到文件中
    
    [root@hadoop-senior datas]# cat bflogs-split.txt 
    20151001000000000
    20151011000000000
    20151021000000000
    
    
    ##建表
    hbase(main):016:0> create 'bflogs2', 'info', SPLITS_FILE => '/opt/datas/bflogs-split.txt'


    生成了4个region:

    image



    4、预分区方式3

    ##自动生成预分区rowkey,不常用
    
    ##方式1
    hbase(main):017:0> create 't11', 'f11', {NUMREGIONS => 2, SPLITALGO => 'HexStringSplit'}    //生成两个rowkey
    
    ##方式2
    hbase(main):018:0> create 't12', 'f12', {NUMREGIONS => 4, SPLITALGO => 'UniformSplit'}        //生成4个rowkey

    方式1

    image

    方式2

    image

  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10918875.html
Copyright © 2020-2023  润新知