1).上传,解压,重命名,修改环境变量/etc/profile
2).修改 hbase-env.sh 文件
export JAVA_HOME=/usr/java/jdk1.7.0_27 //Java 安装路径
export HBASE_CLASSPATH=/hadoop/hbase-0.96.2 //HBase 类路径
export HBASE_MANAGES_ZK=true //由 HBase 自己负责启动和关闭 Zookeeper
3).编辑 hbase-site.xml 文件
<property>
<name>hbase.rootdir</name>
//hbase 中数据存放的HDFS根路径
<value>hdfs://hadoop01:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
//hbase 是否安装在分布式环境中
<value>true</value>
</property>
<property>
//指定 Hbase 的 ZK 节点位置,由于上述已指定 Hbase 自己管理 ZK
<name>hbase.zookeeper.quorum</name>
<value>hadoop01</value>
</property>
<property>
<name>dfs.replication</name>
//伪分布环境,副本数为 1
<value>1</value>
</property>
4).(可选)文件regionservers
//这个文件指定了 regionservers,即子节点所在的位置
hadoop01(即本机主机名或IP)
5).启动 HBase
******启动 hbase 之前,确保 hadoop 是运行正常的,并且可以写入文件*******
启动脚本:start-hbase.sh
验证方式:(1)执行 jps,发现新增加了 3 个 java 进程,分别是 HMaster、HRegionServer、HQuorumPeer
(2)使用浏览器访问 http://hadoop01:60010
6).shell 操作
命令:hbase shell 进入 shell 操作的终端。
***对于在使用 SecureCRT 在 shell 终端无法使用删除键的问题:在 secureCRT 中,点击【选项】【会话选项】【终端】【仿真】,右边的终端选择 linux,在 hbase shell 中如输入出错,按住 Ctrl+删除键 即可删除!
7).基本操作
创建表 Create
--Create '表名称','列族1','列族2','列族N'
--【注意结尾处没有;】【RowKey 是天然自带的,不用手动指定】
查看表信息 List 和 Describe
插入数据 Put
--Put '表名','行键Row Key','列族:列','列值'
put 'users','xiaoming','user_id:id','' --批量插入,每行结尾木有;
put 'users','xiaoming','info:age',''
put 'users','xiaoming','info:birthday','1987-06-17'
put 'users','xiaoming','info:company','alibaba'
put 'users','xiaoming','address:contry','china'
put 'users','xiaoming','address:province','zhejiang'
put 'users','xiaoming','address:city','hangzhou'
put 'users','zhangyifei','info:birthday','1987-4-17'
put 'users','zhangyifei','info:favorite','movie'
put 'users','zhangyifei','info:company','alibaba'
put 'users','zhangyifei','address:contry','china'
put 'users','zhangyifei','address:province','guangdong'
put 'users','zhangyifei','address:city','jieyang'
put 'users','zhangyifei','address:town','xianqiao'
全表扫描 Scan
两个RowKey:‘xiaoming’和'zhangyifeng'对应两行记录
查询一个 RowKey 中所有数据(即一行数据) Get
查询一个RowKey中一个列族的所有数据
查询一个RowKey的列族中一个列的所有数据
同时查询两个列族的所有数据(两种方法)
注意:第二种方法中的COLUMN关键字大小写敏感
同时查询两个列族中两个列的所有数据(两种方法)
更新表中的数据 Put
由于hdfs只支持写入和追加操作,所以hbase对于修改数据,只能进行准加覆盖操作
获取单元格Cell数据的时间戳
对于操作VERSIONS=>2也只返回一行数据,这是由于在创建表时,没有显示指定VERSIONS版本个数,则会设置为默认值1。通过命令describe ‘users’可以发现VERSION=>’1’。
通过TIMESTAMP读取数据
删除某行数据 Delete
deleteall 'users','xiaoming'
删除某一列的数据 Delete
这里和SQL有区别:SQL中删除某一列的话整行数据都会被删除。而HBase则不然,它可以删除指定的列而不影响其它列的数据
修改表的结构:删除某一列族 Alter
全表扫描 Scan
红圈表示此表中现在只有两条记录,因为只有两个RowKey: ’xiaoming’ + ‘zhangyifei’
这时我们发现,表中的”user_id”这个列族已经被删掉,并且它对应的值‘007’也一并被删除---这是DDL的操作。
统计表的行数 Count
清空表的数据 Truncat
这个指令实际包含三个操作:disable + drop + create
判断一个表是否存在 exists
exit是退出HBase shell,切记
判断表是否enable或disable is_enabled 'users'
删除表Drop TableName之前,必须先使其disable:disable TableName 不然报错