美文网首页
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系列 - HBase Shell操作

    HBase Shell 基本操作 进入HBase客户端命令行bin/hbase shell 查看帮助命令hbase...

  • hbase一直等待

    先用这个命令 hbase-daemon.sh stop master 再用这个命令 stop-hbase.sh

  • HBase结合Phoenix使用初探

    hbase命令帮助: hbase的create以及put命令帮助: 创建二级索引 有了索引表之后,直接在hbase...

  • 使用Hbase命令

    使用Hbase命令 hbase提供了一个shell的终端给用户交互 如果退出执行quit命令 命令 通用命令 数据...

  • Hbase命令

    hbase提供了一个shell命令终端进行交互首先需要找到hbase执行目录,执行hbase命令 查看所有的表 创...

  • HBASE SHELL常用命令

    HBASE SHELL常用命令 标签: HBase Shell 1. 进入hbase shell console ...

  • 使用命令行创建和使用HBase数据库

    1. 连接到hbase数据库 执行hbase shell命令。 hbase shell 2. 显示HBase Sh...

  • 22.Hbase 常用命令

    1.hbase shell 进入安装有Hbase的设备,执行hbase shell命令这里最好使用hbase用户 ...

  • HBase

    1、启zookeeper、Hbase服务 2、进入hbase命令: hbase shell ##list会显示hb...

  • Hbase shell的基本操作

    HBase的命令行工具,最简单的接口,适合HBase管理使用,可以使用shell命令来查询HBase中数据的详细情...

网友评论

      本文标题:HBASE命令

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