文档章节

HBase Shell操作命令

南寻
 南寻
发布于 2017/07/09 20:31
字数 1162
阅读 496
收藏 13

HBase单机配置(官网):

HBase下载http://www.apache.org/dyn/closer.cgi/hbase/

解压缩,然后进入到那个要解压的目录.

$ tar xfz hbase-××××.tar.gz
$ cd hbase-×××××

现在你已经可以启动HBase了。但是你可能需要先编辑 conf/hbase-site.xml 去配置hbase.rootdir,来选择HBase将数据写到哪个目录 .

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///DIRECTORY/hbase</value>
  </property>
</configuration>

将 DIRECTORY 替换成你期望写文件的目录. 默认 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,也就说你会在重启后丢失数据(重启的时候操作系统会清理/tmp目录)

 

1.创建表
同其它数据库一样,hbase也有表的概念。

hbase(main):001:0> create 'test','cf'
0 row(s) in 1.5210 seconds

=> Hbase::Table - test

这张表的表名叫做test , 有一个列族叫做cf

(注意shell中所有的名字都必须用引号引起来,和传统数据库不同的是,HBASE的表不用定义有哪些列(字段,Column),因为列是可以动态增加和删除的。但Hbase表需要定义列族(column family).每张表有一个或者多个列族,每个列必须且仅属于一个列族。列族主要用来存储上对相关的列分组,从而使得减少对无关列的访问来提高性能。)


下面看看这张表是什么(describe命令)

hbase(main):003:0> describe 'test'
Table test is ENABLED                                                           
test                                                                            
COLUMN FAMILIES DESCRIPTION                                                     
{NAME => 'cf', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP
_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMP
RESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '6553
6', REPLICATION_SCOPE => '0'}                                                   
1 row(s) in 0.1610 seconds

可以看到HBase给这张表设置了很多默认的属性。

  1. Version:缺省值是3,即默认保存了三个历史版本。就是说,如果一个值被覆盖了,和传统数据库不同,HBase不仅保存了新值,最近的2个值也都相同。
  2. TTL:生存期,一个数据在HBase中被保存的时限。意思是,如果你设置TTL是俩天的话,那么俩天后这个数据会被HBase自动的清楚。如果你希望永久的保存,那把TTL设置到做大就好。

2.插入数据

往表test里插入一些数据:

hbase(main):004:0> put 'test','row1','cf:a','value1'
0 row(s) in 0.1330 seconds

hbase(main):005:0> put 'test','row2','cf:b','value2'
0 row(s) in 0.0150 seconds

hbase(main):006:0> put 'test','row3','cf:c','value3'
0 row(s) in 0.0130 seconds

hbase(main):007:0> put 'test','row1','cf:c','value4'
0 row(s) in 0.0100 seconds

hbase(main):008:0> put 'test','row1','cf:c','value4'
0 row(s) in 0.0100 seconds

hbase(main):009:0> put 'test','row1','cf:c','value4'
0 row(s) in 0.0100 seconds

上面的命令往表test里放了3行数据。命令put就是往表中插入或者更新一条数据。HBase表中的每一行数据都由一个行主键来标识,所以我们用row1,row2这样的字符串来标识相应的行。每一行由“列族:列名”这样的组合来标识,所以cf:a就是在列族cf中名为a的列。命令的最后一个参数是该列的值。

3.读出数据

下面读出所有数据

hbase(main):010:0> scan 'test'
ROW                   COLUMN+CELL                                               
 row1                 column=cf:a, timestamp=1499600631906, value=value1        
 row1                 column=cf:c, timestamp=1499600731612, value=value4        
 row2                 column=cf:b, timestamp=1499600686798, value=value2        
 row3                 column=cf:c, timestamp=1499600707212, value=value3        
3 row(s) in 0.0480 seconds

可以看到一共有四条数据

每条数据都有一个时间戳,这是HBase写入时记录的系统时间。

用表格描述这张表

row key column family: cf
a b c
row1 value1   value4
row2   value2  
row3     value3

 

空的表格并不代表这里有这个单元格存在。在传统数据库中,空白单元表示该单元存在但其值为空(传统数据库总是结构化的)。但这里画成二维表只是便于理解,其本质上完全是非结构化的。

例如:我们使用get来获取特定一行的数据:

hbase(main):019:0> get 'test','row2'
COLUMN                CELL                                                      
 cf:b                 timestamp=1499600686798, value=value2                     
1 row(s) in 0.0400 seconds

4.更新数据

更新test一个单元(将row1的cf:a列更新值为value5):

hbase(main):020:0> put 'test' , 'row1' ,'cf:a' , 'value5'
0 row(s) in 0.0210 seconds

结果:

hbase(main):021:0> scan 'test'
ROW                   COLUMN+CELL                                               
 row1                 column=cf:a, timestamp=1499602903513, value=value5        
 row1                 column=cf:c, timestamp=1499601334793, value=value5        
 row2                 column=cf:b, timestamp=1499600686798, value=value2        
 row3                 column=cf:c, timestamp=1499600707212, value=value3        
3 row(s) in 0.0350 seconds

5.删除数据

用以下命令删除这张表:


hbase(main):022:0> disable 'test'
0 row(s) in 2.2800 seconds

hbase(main):023:0> drop 'test'
0 row(s) in 1.2600 seconds

HBase中删除表必须先把表下线(disable) ,  然后才能把表删除掉。

运行以下命令退出Shell:

hbase(main):024:0> exit

 

© 著作权归作者所有

共有 人打赏支持
南寻
粉丝 63
博文 90
码字总数 35772
作品 0
朝阳
程序员
私信 提问
加载中

评论(2)

南寻
南寻

引用来自“wannshan”的评论

表格是不是错位了?
不知道为什么,我编辑的时候好好地,保存提交后就自动错位了
w
wannshan
表格是不是错位了?
hbase 数据库简介安装与常用命令的使用

一:hbase 简介与架构功能 二:hbase 安装与配置 三:hbase 常见shell 命令操作 一:hbase 简介与架构功能 1.1 为什么要使用hbase 数据库 1.2 hbase 简介: 1.3 HBase与Hadoop的对比 1.4 HB...

flyfish225
04/12
0
0
HBase shell的基本用法

hbase提供了一个shell的终端给用户交互。使用命令hbaseshell进入命令界面。通过执行 help可以看到命令的帮助信息。 以网上的一个学生成绩表的例子来演示hbase的用法。 name grad course mat...

超人学院
2015/05/27
0
0
hbase shell中disable 和drop无法执行

1 通过hbase的web监控页面查询工作状态发现Regions in Transition区域有长时间未执行的任务,此时需要关闭hbase-master并重启,再这个问题处理过程中我直接使用/etc/init.d/hbase-master re...

CARYFLASH
06/04
0
0
HBase0.96.x开发使用(二) -- hbase shell命令

hbase shell命令 1、进入hbase shell环境: [hbase@hadoop230 ~]$ ./hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HB......

whatlly
2013/12/31
0
0
HBase基本操作-shell使用

这篇在学习之前,需要搭建好HBase集群,当你的集群搭建好了,那么就开始学习HBase的shell操作把~ 这篇文章将只会介绍使用频率最高的shell命令,这些没有什么难度,只是一些熟练问题,我的HBase版本...

期待l
12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
5
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
33
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部