美文网首页
HBASE命令

HBASE命令

作者: 你的努力时光不会辜负 | 来源:发表于2021-11-17 17:48 被阅读0次

    1. HBASE命令

    1.1 namespace概述

    在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。Apache HBase从0.98.0,0.95.2两个版本开始支持namespace级别的授权操作,HBase全局管理员可以创建、修改和回收namespace的授权。

    HBase系统默认定义了两个缺省的namespace:

    • hbase:系统内建表,包括namespace和meta表
    • default:用户建表时未指定namespace的表都创建在此

    1.2 命令的进退

    1、hbase提供了一个shell的终端给用户交互

    hbase shell

    image

    2、如果退出执行quit命令

    [图片上传中...(image-cc9398-1637142344151-20)]

    1.3 基本操作命令

    image.png

    具体实例:

    1、查看HBase运行状态 status

    image

    2、创建表 create <table>,{NAME => <family>, VERSIONS => <VERSIONS>}

    创建一个User表,并且有一个info列族

    [图片上传中...(image-8387f2-1637142344151-18)]

    3、查看所有表 list

    [图片上传中...(image-271644-1637142344151-17)]

    4、描述表详情 describe 'User'

    [图片上传中...(image-ad6089-1637142344151-16)]

    5、判断表是否存在 exists 'User'

    [图片上传中...(image-eee62b-1637142344151-15)]

    6、启用或禁用表 is_disabled 'User' is_enabled 'User'

    [图片上传中...(image-fccdbf-1637142344151-14)]

    7、添加记录,即插入数据,语法:put <table>,<rowkey>,<family:column>,<value>

    [图片上传中...(image-bbb9c4-1637142344151-13)]

    8、根据rowKey查询某个记录,语法:get <table>,<rowkey>,[<family:column>, ...]

    [图片上传中...(image-e1e538-1637142344151-12)]

    9、查询所有记录,语法:scan <table>,{COLUMNS => [family:column, ...], LIMIT => num}

    扫描所有记录

    [图片上传中...(image-146e79-1637142344151-11)]

    扫描前2条

    [图片上传中...(image-82b17f-1637142344151-10)]

    范围查询

    [图片上传中...(image-329fa5-1637142344151-9)]

    另外,还可以添加TIMERANGE和FILTER等高级功能,STARTROW、ENDROW必须大写,否则报错,查询结果不包含等于ENDROW的结果集。

    10、统计表记录数,语法:count <table>, {INTERVAL => intervalNum,CACHE => cacheNum}

    INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度。

    [图片上传中...(image-315792-1637142344151-8)]

    11、删除

    删除列

    [图片上传中...(image-d538be-1637142344151-7)]

    删除整行

    [图片上传中...(image-c59f23-1637142344151-6)]

    删除表中所有数据

    [图片上传中...(image-7fa3a7-1637142344151-5)]

    12、禁用或启用表

    禁用表

    [图片上传中...(image-4d28ff-1637142344151-4)]

    启用表

    [图片上传中...(image-d435f6-1637142344151-3)]

    12、删除表

    删除前,必须先disable

    [图片上传中...(image-7f6bbe-1637142344150-2)]

    1.4 批量命令

    1.4.1 bulkload

    bulkload为hbase的批量插入命令,应用于大数据量的插入,没有性能问题

    <pre style="margin: 0px; padding: 0px; overflow: auto; font-family: "Courier New"; font-size: 12px; overflow-wrap: break-word;">hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles \ -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024
    hdfs:///hfile_path
    hbase_namespace:table_name</pre>

    1.4.2 bulkload应用

    业务场景:Hive离线计算好的数据,需要同步到HBase供在线业务查询,思路是用HBase自带的ImportTsv工具。

    Hive跑批:

    建表语句,要用文本格式,即Tsv格式,分割符可以自己定义:

    [[图片上传中...(image-e39a29-1637142344144-1)]](javascript:void(0); "复制代码")

    <pre style="margin: 0px; padding: 0px; overflow: auto; font-family: "Courier New"; font-size: 12px; overflow-wrap: break-word;">CREATE TABLE IF NOT EXISTS tableA(
    rowkey STRING,
    ...
    )
    PARTITIONED BY (dt STRING) -- format: 2020-07-28 ROW FORMAT DELIMITED
    FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;</pre>

    [[图片上传中...(image-a49dd9-1637142344144-0)]](javascript:void(0); "复制代码")

    跑批语句,注意设置不要compress,否则ImportTsv工具无法识别

    <pre style="margin: 0px; padding: 0px; overflow: auto; font-family: "Courier New"; font-size: 12px; overflow-wrap: break-word;">SET hive.exec.compress.output=false;
    INSERT OVERWRITE TABLE tableA
    PARTITION( tx_date = "$CALC_DATE" )
    SELECT ..</pre>

    生成中间的HFile

    <pre style="margin: 0px; padding: 0px; overflow: auto; font-family: "Courier New"; font-size: 12px; overflow-wrap: break-word;">hbase --config config_dir org.apache.hadoop.hbase.mapreduce.ImportTsv \ -Dmapreduce.job.queuename=queue \ -Dimporttsv.bulk.output=hdfs:///hfile_path
    -Dimporttsv.columns="HBASE_ROW_KEY,column_family:column_name.."
    hbase_namespace:table_name
    hdfs://hive_table_dir</pre>

    说明:config_dir是hbase的配置目录,里面包含hbase-site.xml,这个步骤ImportTsv会去读取hive_table_dir中的文件,并分析hbase table的region分布,生成对应region的hfile,放到hfile_path中

    bulkload

    <pre style="margin: 0px; padding: 0px; overflow: auto; font-family: "Courier New"; font-size: 12px; overflow-wrap: break-word;">hbase --config config_dir org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles
    hdfs:///hfile_path
    hbase_namespace:table_name</pre>

    说明:

    • Hive表必须是带分隔符的文本格式,而且不能压缩(比如启用了mapreduce的output snappy压缩也不行)
    • ImportTsv可以直接一条条插入hbase,这时mapper解析一条,就插入一条,没有reduce阶段;相比bulkload,大批量数据性能不好
    • bulkload的优点是快,生成的hfile直接注册到region server,数据对应用立即可见,没有wal log,没有flush;

    来源:https://www.cnblogs.com/swordfall/p/8737328.html

    相关文章

      网友评论

          本文标题:HBASE命令

          本文链接:https://www.haomeiwen.com/subject/vftrtrtx.html