(HBase是一种数据库:Hadoop数据库,它是一种NoSQL存储系统,专门设计用来快速随机读写大规模数据。在已成功安装并正常启动的前提下,本文介绍HBase的基本操作。)
一、HBase简介
什么是HBase(Hadoop Database)呢?有以下两种常见的说法:
第一,它是一种稀疏的、分布式的、持久化的、多维有序映射,它基于行键(row key)、列键(column key)和时间戳(timestamp)建立索引。
第二,它是一种键值(key value)存储,面向列族的数据库,有时也是一种存储多时间戳版本映射的数据库。
以上两种描述都是对的。但从根本上来说,HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,是一个可以随机访问的存储和检索数据的平台。大家可以按照需要写入数据,然后再按照需要读取数据。

HBase有如下特点:
第一,它不介意数据类型,允许动态的、灵活的数据模型,并不限制存储的数据的种类。因此,它可以自如地存储结构化和半结构化的数据。
第二,它不用SQL语言,也不强调数据之间的关系。
第三,它不允许跨行的事务,可以在一行的某一列存储一个整数,而在另一行的同一列存储字符串。
第四,它被设计成在一个服务器集群上运行,而不是单台服务器。这意味着一种强大的、可扩展的数据的使用方式。
从HBase的特点可以看出,HBase的设计与目标都与传统的关系型数据库不同。

二、HBase的基本操作
在已成功安装并正常启动HBase的前提下,我们可以使用HBase Shell,通过命令行方式与HBase进行交互。
1.启动HBase Shell
转到HBase解压包的“bin”目录下,使用命令“./hbase shell”或“sh hbase shell”命令即可启动HBase Shell。启动之后的信息如下:

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr 17 22:14:06 PDT 2015hbase(main):001:0>

为了验证HBase是否安装成功,我们可以输入“list”查看HBase中所有的表。该命令的执行情况如下:

hbase(main):001:0> list
TABLE
0 row(s) in 0.2390 seconds=> []

由于是首次登录,因此HBase中包含了0个表。

2.创建表
HBase使用表作为顶级结构来存储数据,写数据到HBase,也就是写数据到表。下面创建一个有一个列族(“cf”)的表“mytable”:

hbase(main):002:0> create 'mytable', 'cf'
0 row(s) in 0.3250 seconds=> Hbase::Table - mytable
hbase(main):003:0> list
TABLE
mytable
1 row(s) in 0.0090 seconds=> ["mytable"]

使用“list”命令,我们可以看到,表创建成功。

3.写数据
表创建好之后,就需要写入一些数据。例如,我们想往表里写入“hello hbase”,那么我们就在“mytable”表的“first”行中的“cf:info”列对应的数据单元中插入“hello hbase”。命令执行如下:

hbase(main):004:0> put 'mytable', 'first', 'cf:info', 'hello hbase'
0 row(s) in 0.0970 seconds

我们还可以继续多增加几个值,如下:

hbase(main):005:0> put 'mytable', 'second', 'cf:name', 'zhou'
0 row(s) in 0.0180 secondshbase(main):006:0> put 'mytable', 'third', 'cf:nation', 'China'
0 row(s) in 0.0080 seconds

现在表里面有3行和3个数据单元。在使用列的时候,大家并没有提前定义这些列,也没有定义往每个列中存储的数据类型。因此,HBase是一种无模式的数据库。

4.读数据
HBase有两种方式读取数据:get和scan。get方式可以读取一行的数据信息,scan方式可以读取表中所有行的数据信息。
get命令执行如下:

hbase(main):008:0> get 'mytable', 'first'
COLUMN                            CELL                                                                                           cf:info                          timestamp=1435548279711, value=hello hbase
1 row(s) in 0.0770 seconds

该命令输出了该行所有的数据单元。

scan命令执行如下:

hbase(main):009:0> scan 'mytable'
ROW                 COLUMN+CELL                                                                                    first                  column=cf:info, timestamp=1435548279711, value=hello hbase                                     second                column=cf:name, timestamp=1435548751549, value=zhou                                            third                  column=cf:nation, timestamp=1435548760826, value=China
3 row(s) in 0.0320 seconds

该命令返回了所有数据。HBase返回行的顺序,是按照行的名字排序的。HBase称之为行键(rowkey)。

5.删除表
要想删除一张表,需要先将其“disable”掉,然后再“drop”掉。命令执行如下:

hbase(main):010:0> disable 'mytable'
0 row(s) in 1.2380 secondshbase(main):011:0> drop 'mytable'
0 row(s) in 0.1770 secondshbase(main):012:0> list
TABLE
0 row(s) in 0.0070 seconds=> []

HBase还有很多技巧,但是其他所有的东西都是建立在上面那些基本操作基础之上的。大家一定要好好体会。


本人微信公众号:zhouzxi,请扫描以下二维码:

HBase学习总结(2):HBase介绍及其基本操作相关推荐

  1. HBase学习指南之HBase原理和Shell使用

    HBase学习指南之HBase原理和Shell使用 参考资料: 1.https://www.cnblogs.com/nexiyi/p/hbase_shell.html,hbase shell 转载于: ...

  2. 【HBase学习之一】HBase简介

    目录 一.简介 二.HBase使用场景 2.1 历史数据存储类应用(约占七成) 2.2 分析型应用(约占两成) 2.3 在线读写型应用(约占一成) 三.HBase数据模型 四.HBase体系结构 一. ...

  3. HBase学习笔记2 - HBase shell常用命令

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/6639397.html 扫表的时候限定行数 scan 'TABLE_NAME', { LIMIT => 5 } ...

  4. 【HBase学习】Apache HBase项目简介

    原创声明:转载请注明作者和原始链接 http://www.cnblogs.com/zhangningbo/p/4068957.html       英文原版:http://hbase.apache.o ...

  5. 【HBase学习之四】HBase Client超时机制优化

    生产服务遇到过一个故障,大体来说就是hbase集群故障,在没有设置hbase客户端超时的情况下,导致大量线程阻塞,从而影响了tomcat对其他服务请求的正常响应(504网关超时,超时率30%),需要规 ...

  6. Hbase学习笔记(概念和搭建)

    Hbase学习笔记 1.hbase的基本介绍 简介 hbase是bigtable的开源java版本,是建立在hdfs之上,提供给高可靠性,高性能,列存储,可伸缩,实时读写的nosql的数据库系统,它介 ...

  7. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  8. HBASE学习使用经验

    问题导读: 1. NOSQL是如何产生的以及Hbase 在NOSQL中的地位如何? 2. Hbase框架是如何架构出来的 ? 3. Hbase 是如何检索一条数据以及检索时间复杂度是多少? 4. 如何 ...

  9. 【HBase学习笔记-尚硅谷-Java API shell命令 谷粒微博案例】

    HBase学习笔记 HBase 一.HBase简介 1.HBase介绍 2.HBase的逻辑结构和物理结构 3.数据模型 4.基本架构 二.快速入门 1.配置HBase 2.命令 三.API 1.获取 ...

最新文章

  1. python and or 与 | 的比较
  2. 02 Java程序员面试宝典视频课程之异常
  3. php的服务器变量$SERVER以及防止$_SERVER['PHP_SELF']造成的XSS漏洞攻击及其解决方案
  4. 《蒙福人生》读后感作文2900字
  5. TP的中间件:过滤处理HTTP的请求与响应
  6. sqlplus命令行登录oracle数据库的N种方法盘点
  7. 【Modern OpenGL】纹理 Textures
  8. C++学习——const
  9. type c pin定义_在C中定义宏以设置和清除PIN的位
  10. Echo:新生好看的一言网站源码
  11. 详解在Visual Studio中使用git版本系统 [转]
  12. __strong、__weak 与 __unsafe_unretained区别
  13. WebResponse 跨域访问
  14. Swoole MySQL 连接池的实现
  15. 并发编程常见面试题总结五
  16. AnyLogic建模笔记
  17. 2020 最新JavaWEB面试题
  18. Java实现文本加密
  19. unity--常用物理公式
  20. 工业机器人远程监控运维物联网解决方案

热门文章

  1. 百度搜索技巧语法大全
  2. 【考试认证专场】大牛带你全面掌握学习技巧,攻克考试难题(8.2-8.6精品课程限时特惠)...
  3. Elasticsearch——Templates 模板
  4. 【转】Redis安装整理(window平台和Linux平台)
  5. 【转载】c#类的成员初始化顺序
  6. 改变自己从学习linux开始
  7. 阿里JAVA 开发手册----整理
  8. 使用 Windows 命令行删除结果
  9. ​老男孩教育每日一题-第105天-Linux如何设置每天凌晨三点重启nginx服务
  10. MSBuild + MSILInect实现编译时AOP-改变前后对比