hadoop6-Hbase入门
来源:互联网 发布:平井一夫 知乎 编辑:程序博客网 时间:2024/06/07 09:37
像计算机这门学科,光看书是远远不够的,还要多动手,去谈谈究竟,才会深入理解。就比如说TCP/IP协议栈,光看《TCP/IP协议详解》是远远不够的,还要学会写网络程序,在写的过程中,你可能会遇到各种各样的问题,这样就会促使回去再去仔细研究书本的内容,加深理解同时使得印象深刻。
Hadoop家族现在包含很多组件,其中就包括Hbase
1. Hbase产生的背景
Hbase主要起源于Google的三大论文之一的BigTable,主要是Google为解决海量数据存储而设计,因为Google每天要爬取全球数以千计的页面,因此存储他们的URL就需要海量存储数据库,在这种背景下,也就诞生了BigTable,Hbase是BigTable的开源实现,值得一提的是,Hbase并不是传统的RDBMS,而是NoSQL,或者更准确的称之为列数据库。
2. Hbase的应用场景
很显然,Hbase一般用于海量数据的存储,海量大概是一个怎样的量级?大约是billion(十亿)*million(百万),而一般的关系型数据库存储量大概在500万行*30列,超过这样的规模,关系型数据库就会难以处理,另外Hbase还支持动态扩容。
3. Hbase入门
入门Hbase应该通过哪种方式?无非就是玩玩呗
单机版的伪分布式Hbase特别好安装,可以下载下来玩一下。可以按照如下步骤简单的配置单机版本的Hbase
(1)下载Hbase
(2)解压
(3)修改配置文件,主要是conf目录下的hbase-env.sh与hbase-site.xml,
在hbase-env.sh中,只需要修改JAVA_HOME
在hbase-site.xml,只要添加,这一项配置hbase的数据存储的路径,这里处于方便,选择本地文件系统
<property> <name>hbase.rootdir</name> <value>file:///DIRECTORY/hbase</value> </property>
(4)启动hbase服务,./bin/start-hbase.sh
启动hbase shell,./bin/hbase shell
上面的步骤都完成后,就可以体验一下hbase的使用了
hbase有以下几个常用命令,(创建/删除表,增删改查数据)
1. create 创建表
2. put 向表中插入数据
3. get 查询
4. delete 删除数据
5. scan 扫描表中数据
6. enable/disable 启用/禁用表
7. drop 删除表
在使用hbase之前,要大概了解几个概念,数据模型,行健,列族,列,值,版本
数据模型是hbase中的核心概念之一,意即数据在hbase的逻辑结构。主要包括
1. 行健
行健是不可分割的字节数组,按照字典顺序由低到高存储在hbase表中
2. 列族
列族是一些列的集合,一个列族所有成员都有相同的前缀。
3. cell
A {row, column, version} 元组就是一个HBase中的一个 cell
4. 版本
一个 {row, column, version} 元组是HBase中的一个单元(cell
).但是有可能会有很多的单元的行和列是相同的,可以使用版本来区分不同的单元。
rows和column key是用字节数组表示的,version则是用一个长整型表示。
在HBase中,版本是按倒序排列的,因此当读取这个文件的时候,最先找到的是最近的版本。
在了解了这些内容以后,就可以开始玩玩hbase了。
新建表test,插入几条数据
hbase(main):009:0> create 'test','info'0 row(s) in 1.2220 seconds=> Hbase::Table - testhbase(main):010:0> put 'test','row1','info:username','xiaowang'0 row(s) in 0.0110 secondshbase(main):011:0> put 'test','row1','info:age','18'0 row(s) in 0.0070 secondshbase(main):012:0> put 'test','row1','info:sex','female'0 row(s) in 0.0060 secondshbase(main):013:0> put 'test','row2','info:username','xiaoli'0 row(s) in 0.0060 secondshbase(main):014:0> put 'test','row1','info:age','19'查询表test中的数据
hbase(main):016:0> scan 'test'ROW COLUMN+CELL row1 column=info:age, timestamp=1503579647541, value=19 row1 column=info:sex, timestamp=1503579618284, value=female row1 column=info:username, timestamp=1503579596404, value=xiaowang row2 column=info:username, timestamp=1503579631661, value=xiaoli
(1). 创建表的时候,需要同时提供表名和列族(Version是可选的,代表存储几个Version)
(2). 向表中插入数据的时候,顺序依次是 表名,行健,‘列族:列名’,‘值’,其中列族不能省略,如省略会有如下提示
ERROR: Unknown column family! Valid column names: info:*,未知列族名
(3). 刚才在向表中插入数据的时候,我们插入两条行健为row1的的年龄,这样的话,后插入的年龄就会覆盖之前插入的(假设存储的Version版本数为1)
(4). 另外可以看到,hbase表中,数据是按照字典顺序存储的,先按照行健的字典顺序,在按照cell的字典顺序
4. Hbase的运行模式
因为要快速体验Hbase,上面选取了最简单的单机运行模式,这种一般不会在生产环境中用到。
简单介绍一下Hbase的运行模式
1. 单机伪分布式
2. 全分布式
3. 高可用运行模式
第1,2点比较好理解,2中全分布式下,只有一台master,当这台master挂掉后,服务就不可用了。
第3点为了提高Hbase的可用性,通常是要同时运行两台master,一台用于服务,另外一台备用,其他的作为RegionServer,这样的话,当一台master挂掉以后,另外一台master可以迅速切换成运行模式,向外提供服务,从一定程度上保障了服务的高可用性。
5. Hbase中有哪些可以研究的部分
基本的自然不必说,首先是学会使用,包含搭环境,shell,API等使用方式
Hbase的架构
Hbase的索引,在海量数据存储的情况下,为什么可以在几百ms内查询到数据?
Region分割的时机
RPC机制
想到在补充吧,先写这么多!
参考:
官方文档:http://hbase.apache.org/
中文文档:http://abloz.com/hbase/book.html
- hadoop6-Hbase入门
- hadoop6-常见压缩算法
- HBase概述,HBase入门
- HBase入门
- HBase入门
- HBase入门
- HBase入门
- HBase入门
- HBase入门
- Hbase入门
- Hbase入门
- hbase入门
- Hbase入门
- Hbase入门
- Hbase入门
- HBase 入门
- HBase入门
- HBase入门
- linux 下使用 tc 模拟网络延迟和丢包
- sql总结
- Java注解详解,自定义注解,利用反射解析注解
- 新出炉的车牌识别验证模块
- 细谈清除浮动的几种方法
- hadoop6-Hbase入门
- 数据库常用操作
- hdu 1205 吃糖果
- @Repository、@Service、@Controller 和 @Component
- 从零开始的vue.js实战项目
- 【转】Java技能清单
- oracle数据库常用基础语法
- python中的变量赋值,浅拷贝,深拷贝
- Linux tr命令详解