HBASE笔记

big table

三个列.

group by 很麻烦

查询,连接(反复)很快
学生

key attribute value

1 name james

HBASE 逻辑模型

以表的形式存放数据

行键 时间戳 列族(1,2,3,4…)(列族需要提前定义)

更新是插入一个新行, 删除是打上一个删除标记.

HDFS 不能修改,追加也很困难, 所以hbase 会是这样

所有数据往内存里插, 内存满了才能往硬盘里插,一写就是一个块

抛弃是在重组的过程中完成的.

天生面向时间查询.(因为带时间戳)

访问表里的行有三种方式
1.1个
2.多个
3.全部

行键最大长度不超过64KB 按字典序列存储

列表示为 <列族>:<限定符>
按列族存储数据, 使用数据分析的场景,也适用于压缩

时间戳
可以自动生成,也可以显式赋值
Hbase 支持两种回收方式,指定个数的最新版本,或者指定时间的最新版本,7议案

元素由 行键 列族:限定符 时间戳 唯一决定

元素由字节码形式存放,没有类型之分的.

每一个列族是一个store 一个列族放在物理上也是一个store

每次进行CRUD 都会往memery 内存里写, 当写满了之后,就往硬盘里写

在这个过程中把一些过期的不要了的,删除掉,重组. Hfile

zookeeper 找到-ROOT- 表的位置 然后找到.META. 表 通过.META. 表中的region 信息,

hbase 只适合做key value 查询, 适合做大量写 和 一般读的场景.

hbase 和 hadoop 有版本配搭的限制. . 什么版本hbase 对什么版本的hadoop

hbase 下载路径. mirror.bjtu.edu.cn/apache/hbase/hbase-0.90.5/

配置 env.sh 文件

 export Java_HOME=/usr/java/jdk1.6.0_29/
 export HBASE_CLASSPATH=/home/gird/hadoop-0.20.2/conf

<property> 
<name>hbase.rootdir</name> #设置hbase数据库存放数据的目录
<value>hdfs://master:9000/hbase</value> 
</property>

<property> 
<name>hbase.cluster.distributed</name>  #打开hbase分布模式
<value>true</value> 
</property>

<property> 
<name>hbase.master</name>  #指定hbase集群主控节点
<value>master:60000</value> 
</property>

<property> 
<name>hbase.zookeeper.quorum</name>  #指定zookeeper集群节点名<value>master,slave01,slave02</value> 
</property>

配置一下conf/regionservers
h1 h3

为了防止hadoop依赖版本不匹配出现的问题,需要替换掉hbase自带的hadoop包,如下:

$ mv lib/hadoop-core-0.20-append-r1056497.jar lib/hadoop-core-0.20-append-r1056497.jar.bak

$ cp ../../hadoop-0.20.2/hadoop-0.20.2-core.jar lib

将配置好的hbase复制到两台slave机器上面

$ scp -r hbase-0.90.5 slave01:/home/yangze/soft/

systemctl stop firewalld.service

禁用防火墙

验证 http://h0:60010/master.jsp

这里在安装的时候我出现了一个致命的错误.就是在复制代码得到时候把 里面的值给放在注释后面了.结果导致h0:60010/master.jsp 进不去, 报错是vlalue=””

hbase 查询数据库状态 status
请求帮助 help
version –查看当前版本
create ‘member’,’member_id’,’address’,’info’ –创建表
list –查看表信息
describe ‘member’ –desc 查看表的结构
alter ‘member’ ,{NAME=>’member_id’,METHOD=>’delete’} –删除表中字段
改变表之前要disable ‘member’
插入数据的时候要enable ‘member’

删除表
disable ‘member’
drop ‘member’

查询表是否存在
exists ‘member’

查看是否可用
is_enabled ‘member’
is_disabled ‘member’

插入记录
rowkey 新建一个列age
put’member’,’scutshuxue’,’info:age’,’24’

put’member’,’scutshuxue’,’address:province’,’zhejiang’

获取一个行键的所有数据
get’member’,’scutshuxue’
获取一个列族的所有数据 列键
get’member’,’scutshuxue’,’info’
每个列族里的一个列的所有数据
get’member’,’scutshuxue’,’info:age’

通过时间戳获得数据
get’member’,’scutshuxue’,(COLUMN=>’info:age’,TIMESTAMP=>132156)

全表扫描
scan ‘member’

删除指定行键的字段
delete ‘member’ ,’temp’,’info:age’

删除整行
deletaall ‘member’,’xiaofeng’

清空表
truncate ‘member’

什么时候用Hbase
成熟的数据分析主题查询模式已经确立并且不易轻易改变
传统的关系型数据库已经无法承受复合,高速插入,大量读取
适合海量,和简单(key-value)

场景一:历史浏览记录
关系型数据库的困难
简单的事情上了量也变成很困难的事情
order by 耗费性能
大量发生又无法分布式处理
顾客需要实时看到自己的足迹,因此不能使用缓存技巧

模式设计
不能分布式的
立项索引 reverse key 或者用hash等技巧改造行键

关系型
设置一个Log 表 记录每次用户点击,有三个列,时间戳,用户id 点击的主题ID
hbase
两个表,一个u-t,另一个t-u
u-t 行键userid 列族 thread:threadid
t-u 行键threadid 列族user:userid
查询-> 在t-u threadid->userid 然后在u-t表中userid->threaid
然后在应用程序里实现去重和统计功能

辅助索引
主表:行键为学号,列族为学生,下面的列是身份证号,姓名,性别,系,年龄
辅助(索引)表:行键为身份证号,列族和列为学号

复合行键设计

1234:2234:”hi lool”
1234:2235:”hi l22ool”
-
1234-2234:”hi lool”
1234-2235:”hi l22ool”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值