参考《hadoop权威指南》和炼数成金视频系列
这一节来介绍hadoop中的数据库hbase
他是一个列式数据库,根据行健来进行查询,有时间戳,所以根据时间查很方便。比如删除或更新这种操作,是加入一个删除的记号,某个行键某个时刻被删除了,这主要是因为他是基于HDFS的,HDFS对于修改来说是很麻烦的,所以hbase采用了新建一个文件这种奇怪的方式。
hbase的安装:采用伪分布模式:
1.下载及解压hbase的安装包(tar包,安装版本根据hadoop来选择,这个可以在网上查)
2.修改conf/hbase-env.sh脚本,设置环境变量
修改JAVA_HOME环境变量
修改HBASE_CLASSPATH环境变量(用于斑竹hbase找到hadoop)
3.编辑hbase-site.xml进行配置
先创建用于存放数据的目录/home/grid/hbase-0.90.5/data
4.覆盖hadoop核心jar包,这是关键一步,主要目的是防止因为hbase和hadoop版本不同出现兼容问题,造成hmaster启动异常
5.启动hbase(运行start.sh)。验证Hmaster已经启动(jps)
6.进入shell
hbase shell进入
hbase怎么对数据操作呢?两种方式
1、使用上面所说的shell,使用shell命令,不能运行大多数SQL命令,只能用一些简单的hSQL命令
查询数据库状态:
help帮助
status 可以看到集群有多少服务器,死了多少,负荷多少
version 版本
创建表:create 'member(表名)','member_id'(列族名),'address'(列族名),'info'(列族名)
list 查看表信息 describe 'member'描述表member
alter 'member',{NAME=>'member_id',METHOD=>'delete'}
注意先disable 'member'先离线再操作
drop 'temp_table'删除表
检查一个表是否在 exists'table'
插入数据:
xiaofeng是行键,后面是列族(info,address),列族里的列包括age,birthday等,后面跟着value
查询:
指定行键即可,当然只对某个行键里的某个列族查询也可
删除指定行键的字段:
查询表中有多少行:count'member'
清空表:truncate'member'
2、API 提供了很多的API接口
hadoop权威指南3—5章
http://habse.apache.org/apidocs/index.html
什么情况下使用Hbase?
成熟的数据分析主题,查询模式已经确立并且不轻易改变
传统的关系型数据库已经无法承受负荷,高速插入,大量读取
适合海量的但同时也是简单的操作,key-value型