HBase基础及shell操作

这篇具有很好参考价值的文章主要介绍了HBase基础及shell操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是HBase

HBase是采用java语言编写的一款 apache 开源的基于HDFS的NoSQL型数据库,不支持 SQL,不支持事务,不支持Join操作,没有表关系

HBase特点

1.不支持事务
2.主要存储结构化数据以及半结构化的数据
3.​HBase中数据存储都是以字节的形式来存储的
4.HBase是易于扩展的

HBase的表具有三大特征:

  • 1- 大: 在一个表中可以存储上十亿行的数据, 可以拥有上百万个列
  • 2- 面向列: 是基于列族进行管理操作, 基于列族进行列式存储方案
  • 3- 稀疏性: 在HBase中, 对于NULL值的数据, 不占用任何的磁盘空间的, 对效率也没有任何的影响, 所以表可以设计的非常稀疏

HBase的应用场景:

  • 1- 数据量比较庞大
  • 2- 数据需要具备随机读写特性
  • 3- 数据具有稀疏性特性

HBase仅支持三种数据读取方案:

1- 基于rowkey(行键|主键)读取
2- 基于rowkey的range范围读取
3- 扫描全表数据

hbase的表模型

HBase基础及shell操作

rowkey : 行键 , 可理解为MySQL中的主键 , 只不过叫法不同而已

  1. 在hbase中, rowkey的长度最长为64KB,但是在实际使用中, 一般长度在 0~100个字节, 常常的范围集中在 10~30区间
  2. 在hbase中, 表中数据都是按照rowkey来进行排序, 不关心插入的顺序. 排序规则为 字典序的升序排列
    请将以下内容, 按照字典序的升序排序:
    1 2 10 245 3 58 11 41 269 3478 154
    排序结果为:
    1 10 11 154 2 245 269 3 3478 41 58
    字典序规则:
    先看第一位, 如果一致看第二位, 以此类推, 没有第二位的要比有第二位要小,其他位置也是一样的
  3. 查询数据的方式, 主要有三种:
    基于rowkey的查询
    基于rowkey范围查询
    扫描全表数据
  4. rowkey具备唯一性和非空性

column family: 列族(列簇)

  1. 在一个表中, 是可以有多个列族的, 但是一般建议列族越少越好, 能用一个解决, 坚决不使用多个
  2. 在hbase中, 都是基于列族的管理和存储的 (是一个列式的存储方案)
  3. 一个列族下, 可以有多个列名 . 可以达到上百万个
  4. 在创建表的时候, 必须指定表名和列族名

column qualifier: 列名(列限定符号)

  1. 一个列名必然是属于某一个列族的, 在一个列族下是可以有多个列名的
  2. 列名不需要在创建表的时候指定, 在插入数据的时候, 动态指定即可

timeStamp : 时间戳

每一个单元格背后都是具有时间戳的概念的, 默认情况下, 时间戳为插入数据的时间, 当然也可以自定义

versions: 版本号

  1. 在hbase中, 对于每一个单元格, 都是可以记录其历史变更行为的, 通过设置version版本数量, 表示需要记录多少个历史版本, 默认值为1
  2. 当设置版本数量为多个的时候, 默认展示的离当前时间最近的版本的数据

cell : 单元格

如何确定一个唯一的单元格呢? rowkey + 列族 + 列名 + 值

hbase的相关操作_shell命令

hbase的基本shell操作

进入shell

hbase shell

HBase基础及shell操作
查看整个集群的状态信息

status

HBase基础及shell操作
如何查看帮助文档信息

查看整个帮助文档
help

查看某一个具体的命令如何使用
help ‘命令名称’

HBase基础及shell操作
如何查看当前hbase中有那些表呢?

list

HBase基础及shell操作
如何创建一张表

格式:
create ‘表名’,‘列族1’,‘列族2’ …
或者
create ‘表名’,{NAME=>‘列族1’},{NAME=>‘列族2’} …

HBase基础及shell操作
HBase基础及shell操作
如何向表中插入数据

格式:
put ‘表名’,‘rowkey名称’,‘列族名:列名’,‘值’

HBase基础及shell操作
如何从表中获取某一条数据呢? 基于rowkey查询

格式:
get ‘表名’,‘rowkey名称’, [‘列族’ | ‘列族:列名’ …]
说明:
[] 表示是可选

HBase基础及shell操作
如何修改数据呢? 修改数据的操作 与 添加数据的操作是一致的, 只需要保证rowkey一样 就是修改数据
HBase基础及shell操作
如何删除数据的操作:

格式:
delete ‘表名’,‘rowkey名称’,‘列族:列名’

deleteall ‘表名’,‘rowkey名称’,‘列族:列名’

truncate ‘表名’ 清空表
说明:
1) delete操作, 仅支持删除某一个列下的数据, 仅会删除当前这个版本, 恢复上一个版本
2) deleteall操作, 在删除某一个列数据的时候, 直接将其所有的历史版本全部都删除
3) deleteall操作, 在不指定列族和列名, 仅指定rowkey的时候, 删除整行

说明:
deleteall操作在hbase2.x以上的版本提供的
注意:
truncate操作 一般不使用, 因为此操作在重新建表的时候, 会与原来的表不一致. 比如一些设置参数信息,执行truncate全部都还原了

如何删除表

格式:
drop ‘表名’

注意: 在删除hbase表之前, 必须要先禁用表
禁用表: disable ‘表名’
启动表: enable ‘表名’
判断表是否启用: is_enabled ‘表名’
判断表是否禁用: is_disabled ‘表名’

如何查看表的结构

格式:
describe ‘表名’

HBase基础及shell操作
如何查看表中有多少条数据:

count ‘表名’

HBase基础及shell操作

如何通过扫描的方式查询数据, 以及根据范围查询数据

准备工作:  插入一部分数据
put 'test01','rk0001','f1:name','zhangsan'
put 'test01','rk0001','f1:age','20'
put 'test01','rk0001','f1:birthday','2020-10-10'
put 'test01','rk0001','f2:sex','nan'
put 'test01','rk0001','f2:address','beijing'

put 'test01','rk0002','f1:name','lisi'
put 'test01','rk0002','f1:age','25'
put 'test01','rk0002','f1:birthday','2005-10-10'
put 'test01','rk0002','f2:sex','nv'
put 'test01','rk0002','f2:address','shanghai'

put 'test01','rk0003','f1:name','王五'
put 'test01','rk0003','f1:age','28'
put 'test01','rk0003','f1:birthday','1993-10-25'
put 'test01','rk0003','f2:sex','nan'
put 'test01','rk0003','f2:address','tianjin'

put 'test01','0001','f1:name','zhaoliu'
put 'test01','0001','f1:age','25'
put 'test01','0001','f1:birthday','1995-05-05'
put 'test01','0001','f2:sex','nan'
put 'test01','0001','f2:address','guangzhou'

格式:
	scan '表名' , {COLUMNS=>['列族' | '列族:列名' ....], 
	STARTROW=>'起始rowkey值' ,ENDROW=>'结束rowkey值',
	FORMATTER=>'toString',LIMIT=>N}

注意
	此处 []  是格式要求, 必须存在
	范围检索是包头不包尾

HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作

hbase的高级shell命令

whoami: 查看当前登录用户
HBase基础及shell操作
exists: 查看表是否存在
HBase基础及shell操作
alter: 用来执行修改表的操作

增加列族:
alter ‘表名’ ,NAME=>‘新的列族’
删除列族:
alter ‘表名’,‘delete’=>‘旧的列族’

hbase的filter过滤器相关的操作 :

作用:补充hbase的查询方式

格式:
	scan '表名',{FILTER=>"过滤器(比较运算符,'比较器表达式')"}

在hbase中常用的过滤器: 
	rowkey过滤器:  
		RowFilter:  实现根据某一个rowkey过滤数据
		PrefixFilter: rowkey前缀过滤器
	列族过滤器: 
		FamilyFilter: 列族过滤器
	列名过滤器:
		QualifierFilter : 列名过滤器, 显示对应列的数据
	列值过滤器: 
		ValueFilter: 列值过滤器, 找到符合条件的列值
		SingleColumnValueFilter: 在指定列族和列名下, 查询符合对应列值数据的整行数据
		SingleColumnValueExcludeFilter : 在指定列族和列名下, 查询符合对应列值数据的整行数据,结果不包含过滤字段
	其他过滤器:
		PageFilter : 用于分页过滤器

比较运算符:  >  <  >= <= != =

比较器: 
	BinaryComparator: 用于进行完整的匹配操作
	BinaryPrefixComparator : 匹配指定的前缀数据
	NullComparator : 空值匹配操作
	SubstringComparator: 模糊匹配

比较器表达式: 
	BinaryComparator         binary:值
	BinaryPrefixComparator   binaryprefix:值
	NullComparator           null
	SubstringComparator      substring:值

参考地址:
	http://hbase.apache.org/2.2/devapidocs/index.html  
	从这个地址下, 找到对应过滤器, 查看其构造, 根据构造编写filter过滤器即可

案例: 
	需求一: 找到在列名中包含 字母 e 列名有哪些
	scan 'test01',{FILTER=>"QualifierFilter(=,'substring:e')"}
	需求二: 查看rowkey以rk开头的数据
	scan 'test01',{FILTER=>"PrefixFilter('rk')"}
	scan 'test01',{FILTER=>"RowFilter(=,'binaryprefix:rk')"}
	需求三: 查询 年龄大于等于25岁的数据
	scan 'test01',{FILTER=>"SingleColumnValueFilter('f1','age',>=,'binary:25')"}
	scan 'test01',{FILTER=>"SingleColumnValueExcludeFilter('f1','age',>=,'binary:25')"}
	

HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作
HBase基础及shell操作文章来源地址https://www.toymoban.com/news/detail-400360.html

到了这里,关于HBase基础及shell操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HBase Shell 操作

    1.1、进入HBase客户端命令行 前提是先启动hadoop集群和zookeeper集群。 1.2、查看帮助命令 help 查看指定命令的语法规则 查看 list_namespace 的用法(‘记得加单引号’) 我们首先查看现在有哪些命名空间 ,使用指令:list_namespace 注意:我的hadoop版本3.3.0,HBase2.4.17,两者兼容性有问

    2024年02月13日
    浏览(35)
  • Hbase Shell操作

    HBase中用 create 命令创建表,具体如下: 此时,创建了一个“student”表,属性有:name,sex,age,address。可通过 describe 命令查看“student”表的基本信息: 2.1 添加数据 HBase中用 put 命令添加数据. 注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据。

    2024年02月15日
    浏览(43)
  • HBase Shell基本操作

    先在Linux Shell命令行终端执行 start-dfs.sh 脚本启动HDFS,再执行 start-hbase.sh 脚本启动HBase。如果Linux系统已配置HBase环境变量,可直接在任意目录下执行 hbase shell 脚本命令,就可进入HBase Shell的命令行终端环境, exit 可以退出HBase Shell(我安装的是伪分布式的HBase)。 (1) help帮

    2024年04月13日
    浏览(38)
  • HBase(11):shell管理操作

    1 status 例如:显示服务器状态   2 whoami 显示HBase当前用户,例如:   3 list 显示当前所有的表 4 count 统计指定表的记录数,例如:     5 describe 展示表结构信息   6 exists 检查表是否存在,适用于表量特别多的情况

    2024年02月12日
    浏览(41)
  • HBase高手之路4-Shell操作

    命令 功能 create 创建表 put 插入或者更新数据 get 获取限定行或者列的数据 scan 全表扫描或扫描表并返回表的数据 describe 查看表的结构 count 统计行数 delete 删除指定的行或列的数据 deleteall 删除整个行或者列的数据 truncate 删除表的数据,结构还在 drop 删除整个表(包括数据)

    2023年04月17日
    浏览(41)
  • Hbase安装和shell客户端操作

    HBase 是一个 面向列式存储的分布式数据库 ,其设计思想来源于 Google 的 BigTable 论文。 HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。 HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容

    2024年02月08日
    浏览(46)
  • 大数据----33.hbase中的shell文件操作

    HBase的命令行工具,最简单的接口,适合HBase管理使用,可以使用shell命令来查询HBase中数据的详细情况。 注意:如果进入hbase后长时间不操作; 发生hbase自动关闭没有了进程; 原因是内存不够;可以关闭机器;增加内存;虚拟机就扩大内存。 1、进入 hbase 客户端、帮助命令

    2024年01月24日
    浏览(41)
  • 第1关:HBase Shell 操作:分区压缩

    任务描述 本关任务:在 HBase Shell 中使用分区压缩命令并将查看到的命令结果复制到指定的文件中。 相关知识 为了完成本关任务,你需要掌握: 1.数据分区压缩的概念; 2.数据分区压缩的原因; 3.数据分区压缩的过程; 4.数据分区压缩的触发时机; 5.数据分区压缩的详解。 数据分

    2024年04月13日
    浏览(62)
  • HBase Shell 操作:自动拆分和预分区

    启动hadoop集群 start-all.sh 启动Zookeeper集群 zkServer.sh start 启动HBase start-hbase.sh 进入hbase shell hbase shell 创建的表使用自动拆分命令 create \\\'stu\\\',{METADATA={\\\'SPLIT_POLICY\\\'=\\\'org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy\\\'}},{NAME=\\\'sc\\\'} 第二关:预分区 具体预分区配置要求如下所述: 文本文件

    2024年04月10日
    浏览(37)
  • HBase Shell启动缓慢及操作耗时长的原因分析与解决

    在内网搭了一个 hbase-2.2.6(hadoop-2.7.3)的环境,使用的是其内置的 zookeeper-3.4.10,16010端口对应的 web界面可以正常访问,且各项功能正常。 在使用 hbase shell的过程中,首先是 hbase shell启动非常慢,约 210s才成功,其次执行 scan、put、get等命令需要 20s左右才能完成。以笔者的经

    2024年02月02日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包