安装需知,它是建立在hadoop 之上,并且难度大于hadoop,选择版本要与Hadoop版本匹配,如果没有选对版本就选安装上去也无法使用。

HBase和hadoop的兼容 hbase和hadoop版本_数据

1.安装准备

   Hbase 的安装介质放在自己指定的目录下,解压后复制到另一个指定的目录,和前面所说的一致。

2.配置环境变量

  使用root 用户修改/etc/profile文件,添加HBASE_HOME 环境变量,修改PATH:

这个按照每个人的版本不同后缀也不同

 使用scp 命令将/etc/profile 复制到hadoop2 和hadoop3 主机上,三台机器上均重新登录hadoop 用户,以使新增加和修改的环境变量生效。

3.编辑hbase-env.sh 文件

 打开hbase-env.sh 文件,修改JAVA_HOME 值,给HBase_CLASSPATH 赋值,再添加新的环境变量HBASE_MANAGES_ZK

cd $HBASE_HOME/conf

ls

vim hbase-env.sh

export JAVA_HOME=usr/lib/java/jdk1.7.0_79   每个人jdk版本不同,依照个人情况而言
export HBASE_CLASSROOM=/usr/share/hbase-1.2.1/conf
export HBASE_MANAGES_ZK=false

其中HBASE_MANAGES_ZK=false 指定Hbase 不能自带的Zookeeper 来管理集群。

4.编辑hbase-site.xml 

 打开hbase-site.xml 配置文件,需要添加以下属性并配置值:

 1.hbase.rootdir:指定本机HBase 存储目录,配置的值应与Hadoop 中的hdfs-site.xml 中的对应配置保持一致。

 2.hbase.cluster.distributed 指定的HBase 的运行模式,true 代表全分布模式。

 3.hbase.zookeeper.quorum 指定Zookeeper 服务器的位置,系统提供的zookeeper 服务器安装在hadoop1,hadoop2,hadoop3.

 4.hbase.zookeeper.property.dataDir:是关于Zookeeper 集群的配置,此处要与Zookeeper 服务器在zoo.cfg 中配置的dataDir保持一致。

5. 配置regionservers

  修改regionservers 配置文件,Hadoop 集群中所有的DataNode节点:

  在conf 目录下,编辑regionservers 

hadoop1  hadoop2  hadoop3

-然后把主节点hadoop1上的HBase 安装目录/usr/share/hbase-1.2.1 整体复制到主机hadoop2 和hadoop3:

scp -r hbase-1.2.1/hadoop@hadoop2:/usr/share
scp -r hbase-1.2.1/hadoop@hadoop3:/usr/share

6.启动HBase 并验证

切换到$HBASE_HOME/bin 目录,执行start-hbase.sh 脚本启动HBASE:

./start-hbase.sh

在主节点hadoop1上使用jps 命令查看到,HMaster 和HRegionServer均已经启动,另外在hadoop2和hadoop3上也有HRegionServer服务

jps

进入HBase 的shell 命令行,创建测试udbs:

hbase shell

使用describe 'udbs' 命令来查看表的定义信息;

停止HBase 数据库使用的是stop-hbase.sh 脚本;

在刚才的界面状态退出 exit    在hadoop1 bin 目录下  ./stop-hbase.sh

然后在退出到最初目录下,键入 jps 


说明:

1.Hadoop,ZooKeeper 和HBase 之间的启动顺序是:启动Hadoop->ZooKeeper->启动HBase。停止顺序刚好相反:停止HBase->停止ZooKeeper->停止Hadoop。

2.ZooKeeper 在整个系统中管理着Hadoop集群中的NameNode,HBase中的HBaseMaster的选举,以及Server 之间的状态同步等操作。

 HBase 中的HLog 和StoreFile 中的文件在进行flush to disk 操作时,这两个文件从存储到了HDFS 的DataNode 中,HDFS才是永久存储的。


HBase shell 操作

HBase 表的管理

查看当前HBase 中已有的表   list

创建emp,有三个列mep_id,fname,salary

查看表的结构 describe 'emp'

修改表结构,表emp建有3个列族,业务变化emp_id 列族需要删除 alter 'emp' ,{NAME=>'emp_id',METHOD=>'delete'}

注意:修改表之前先要禁用表,修改后在启用该表。

删除表drop 命令,删除前先禁用该表: drop 'emp'

查看表是否存在: exist 'emp'

判断表是否enable 或者disable: is_enabled 'udbs'

查看HBase 服务状态和版本 status 

HBase 的DML 操作

DML 操作主要包括增删改查和查询操作。hbase shell 中创建member 表,该表有三个列族:

member_id,address,info.

create 'member' ,'member_id', 'address','info'

添加数据   put  命令

查询数据 

1.查询某行记录,获取一个id 的所有数据: get  'member' ,'scushuxue'

获取一个id 中的一个列族的所有数据: get  'member' ,'scushuxue' ,'info'

获取一个id 中的一个列族的一个列的所有数据:get  'member' ,'scushuxue' ,'info:age'

2.扫描表member 的前5条数据: scan 'member',{LINMT=>5}

3.查询member 表中数据行数,每5条显示一次,缓存区为10:

 

count 'member',{INTERVAL=>5,CACHE=>10}

4.更新记录

将scutshuxue 的年龄改为99:

put 'member','scutshuxue','info:age','99'
put 'member','scutshuxue','info:age'

删除数据

1.删除行中的某列值,删除rowkey 为scutshuxue 的值为'info:age' 字段:

get  'member' ,'scushuxue' ,'info:age'
delete  'member' ,'scushuxue' ,'info:age'

继续获取 get  'member' ,'scushuxue' ,'info:age'


2.删除整个行scutshuxue:

get  'member' ,'scushuxue' 
 deleteall   'member' ,'scushuxue'

  继续获取 get  'member' ,'scushuxue'

3.删除表中的所有数据:

truncate 'member'
count 'member',{INTERVAL=>5,CACHE=>10}