hadoop Hbase体系架构与安装(6)

Hbase体系结构与安装

1. Hbase版本与Hadoop版本搭配比较烦,如果版本搭配不对,就不能运行,这个可以在百度和google中查询相应的版本搭配

2. Hbase安装:单机模式

(1)下载及解压hbase安装包

(2) 修改conf/hbase-env.sh脚本,设置环境变量

设置JAVA_HOME环境变量

export JAVA_HOME=/usr/java/jdk1.6.00_26/ 设置jdk环境变量

(3) 编辑hbase-site.xml进行配置

先创建用于存放数据的目录/home/grid/hbase-0.90.5/data

<configuration>

<property>

<name>hbase.rootdir</name>

<value>file:///home/grid/hbase-0.90.5/data</value>

</property>

</configuration>

单机模式采用的是本地文件系统模式

(4) 启动Hbase

bin/start-hbase.sh

(5) 验证Hmaster已经启动

jps 查看与java有关的进程

Hmaster 进程启动了代表成功

(6) 进入shell

bin/hbase shell

3. Hbase安装:伪分布模式

(1) 在单点模式的基础上继续

(2) 编辑hbase-env.sh增加HBASE_CLASSPATH环境变量

用于帮助hbase找到hadoop

export JAVA_HOME=/usr/java/jdk1.6.00_26/

export HBASE_CLASSPATH=/home/grid/hadoop-0.20.2/conf

(3) 编辑hbase-site.xml打开分布模式

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://192.169.80.100:9000/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

</configuration>

与hadoop分布式文件系统融合

(4) 覆盖hadoop核心jar包

这是关键一步,最好在网上找一份成功安装的指南文件,不同的版本会有不一样的地方

主要目的是防止引文hbase和hadoop版本不同出现兼容问题,造成hmaster启动异常

clip_image002

(5) 启动hbase

(6) 验证启动

clip_image004

4. Hbase安装:完全分布模式

(1) 配置hosts,确保涉及的主机名均可解析为ip

(2) 编辑hbase-env.xml

(3) 编辑hbase-site.xml

(4) 编辑regionservers文件

(5) 把Hbase复制到其他节点

(6) 启动Hbase

(7) 验证启动

这个可以在网上查找完全分布模式安装文档,详细的安装文档

5.Web管理界面

60010端口

6.管理操作hbase的方式

(1) Shell

在hbase的bin目录下

./hbase shell 进入shell命令行界面

help 可以列出各种命令出来

1) 查询数据库集群状态

status

2) 查询数据库版本

version

3) 创建表

create ‘member’, ‘menber_id’,’address’,’info’

表名 列族 列族 列族

4) 查看表信息

list

describe ‘member’

5) 删除列族:alter ,disable,enable

alter ‘member’,{NAME=>’member_id’,METHOD=>’delete’}

disable ‘member’

alter ‘member’,{NAME=>’member_id’,METHOD=>’delete’}

enable ‘member’

6) 列出所有的表

list

7) 删除表

disable ‘temp_table’

drop ‘temp_table’

8) 查询一个表是否存在

exists ‘member’

9) 判断表是否enable或disable

is_enabled ‘member’

is_disabled ‘member’

10) 插入记录

put ‘member’,’scutshuxue’,’info:age’,’24’

表名 行健

11) 获取一个行健的所有数据

get ‘member’,’scutshuxue’

12) 获取一个行健,一个列族的所有数据

get ‘member’,’scutshuxue’,’info’

13) 获取一个行健,一个列族中一个列的所有数据

get ‘member’,’scutshuxue’,’info:age’

14) 更新一条记录

put ‘member’,’scutshuxue’,’info:age’,’99’

15) 通过timestamp来获取数据

get ‘member’,’scutshuxue’,{COLUMN=>’info:age’,TIMESTAMP=>1321586238965}

16) 删除指定行健的字段

delete ‘member’,’temp’,’info:age’

表名 行健 列

17) 删除整行

deleteall ‘member’,’xiaofeng’

18) 查询表中有多少行

count ‘member’

19) 清空表

truncate ‘member’

20) 全表扫描

scan ‘member’

(2) Hbase API

《Hbase权威指南》第3-5章

用eclipse开发hbaseAPI程序大致和map-reduce程序类似

7.什么情况下使用Hbase?

成熟的数据分析主题,查询模式已经确立并且不轻易改变

传统的关系型数据库已经无法承受负荷,高速插入,大量读取

适合海量的,但同时也是简单的操作

8.应用场景

(1)场景一

clip_image006

1)关系型数据库的困难

简单的事情只要上了量就会变成无比复杂的事情

Order by耗费很多性能

大量发生,但又无法分布式处理

顾客需要实时看到自己的足迹,因此不能使用缓存技巧

2)Hbase迎接挑战

天生就是面向时间戳查询

基于行健的查询异常快速,特别是最近的数据被放在内存的memstore里,完全没有I/O开销

分布式化解负荷

3)模式设计

行健: userid

列族和列:book:bookid

为了充分利用分布式,可以用reverse key,hash等技巧改造行健

(2)场景二:商品推荐

clip_image008

1) 用关系行数据库实现

clip_image010

clip_image012

2) 使用Hbase:表设计与查询实现

两个表,一个是u-t,另一个是t-u

u-t表的结构:行健为userid,列族和列为thread:threadid

t-u表的结构:行健为threadid,列族和列为user:userid

查询:现在t-u表从threadid->userid,再在u-t表从userid->threadid ,在计算机程序中实现去重和统计功能

9.辅助索引

例子:学生表(学号,身份证号,姓名,性别,系,年龄),有时在学号上查询,有时在身份证号上查询

主表:行健为学号,列族为学生,下面的列是身份证号,姓名,性别,系,年龄

辅助(索引)表:行健为身份证号,列族和列为学号

10.复合键设计

clip_image014

复合键的好处

便于分布(行健看起来比较随机)

便于多条件伸缩查询

转载于:https://my.oschina.net/u/1462191/blog/213829

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值