安装 hbase 之前需要先搭建好 hadoop 集群和 zookeeper 集群。
tar -zxvf hbase-1.3.1-bin.tar.gz
我解压到了。
/opt/lagou/servers/hbase-1.3.1 目录。
ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/core-site.xml /opt/lagou/servers/hbase-1.3.1/conf/core-site.xml
ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/hdfs-site.xml /opt/lagou/servers/hbase-1.3.1/conf/hdfs-site.xml
#添加java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_231
#指定使用外部的zk集群
export HBASE_MANAGES_ZK=FALSE
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://linux2:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>linux2:2181,linux3:2181,linux4:2181</value>
</property>
</configuration>
linux2
linux3
linux4
内容如下:
linux2
export HBASE_HOME=/opt/lagou/servers/hbase-1.3.1
export PATH=$PATH:$HBASE_HOME/bin
执行命令使配置生效。
source /etc/profile
scp -r hbase-1.3.1 linux3:/opt/lagou/servers/
scp -r hbase-1.3.1 linux4:/opt/lagou/servers/
#启动命令
start-hbase.sh
#停止命令
stop-hbase.sh
hbase shell
shell 命令行里如果输错了命令,删除需要使用 Ctrl+Backspace。
help
list
create 'user','base_info','extra_info'
#或者指定版本
create 'user2',{NAME => 'base_info',VERSIONS => '3'},{NAME => 'extra_info',VERSIONS => '3'}
put 'user','rk1','base_info:name','xiaowang'
put 'user','rk1','base_info:age',30
put 'user','rk1','extra_info:address','shanghai'
get 'user','rk1'
get 'user','rk1','base_info'
get 'user','rk1','base_info:name','base_info:age'
get 'user','rk1','base_info','extra_info'
get 'user','rk1',{FILTER => "ValueFilter (=,'binary:shanghai')"}
查询出列名:address。
get 'user','rk1',{FILTER => "QualifierFilter (=,'substring:add')"}
scan 'user'
scan 'user',{COLUMNS => 'base_info'}
# Scan时可以设置是否开启Raw模式,开启Raw模式会返回包括已添加删除标记但是未实际删除的数据
# VERSIONS指定查询的最大版本数
scan 'user',{COLUMNS => 'base_info',RAW => true, VERSIONS=> 3}
scan 'user',{COLUMNS => ['base_info','extra_info'],FILTER => "(QualifierFilter(=,'substring:add'))"}
scan 'user',{COLUMNS => 'base_info',STARTROW => 'rk1',ENDROW => 'rk3'}
查询 user 表中 row key 以 rk 开头的数据。
scan 'user' ,{FILTER =>"PrefixFilter('rk')"}
更新操作同插入操作一模一样,只不过有数据就更新,没数据就添加。
将 user 表中 rowkey 为 rk1 的 base_info 列族下的 name 修改为 xiaoliao
put 'user','rk1','base_info:name','xiaoliao'
delete 'user','rk2','base_info:name'
delete 'user','rk2','base_info:age',1662245345710
alter 'user','delete' => 'extra_info'
truncate 'user'
#先disable,再drop,否则会报错
disable 'user'
drop 'user'