安装需知,它是建立在hadoop 之上,并且难度大于hadoop,选择版本要与Hadoop版本匹配,如果没有选对版本就选安装上去也无法使用。
1.安装准备
Hbase 的安装介质放在自己指定的目录下,解压后复制到另一个指定的目录,和前面所说的一致。
2.配置环境变量
使用root 用户修改/etc/profile文件,添加HBASE_HOME 环境变量,修改PATH:
export HBASE_HOME=/app/hadoop/hbase-1.2.1 这个按照每个人的版本不同后缀也不同
使用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}