安装
- 前提:jdk,hadoop,zookeeper
- 下载安装包
安装-单机模式
- jdk,hadoop并且配置了环境变量
- 解压安装包
- 修改HBase的配置文件 conf/habse-site.xml
hbase.rootdir 这个选项指定了Hbase底层存储数据的磁盘位置
<property>
<name>hbase.rootdir</name>
<value>file:///<path>/hbase</value>
</property>
- 在单机模式下,此路径配置为磁盘路径,HBase将会基于普通的磁盘文件来进行工作,也即不使用HDFS作为底层存储,优点是方便,缺点是底层数据不是分布式存储,性能和可靠性没有保证,主要用作开发测试,不应用在生产环境下。
伪分布式安装
- 前提条件,安装jdk 和 hadoop,并配置了环境变量
- 解压安装包
- 修改conf/hbase-env.sh修改JAVA_HOME
export JAVA_HOME=xxxx
- 修改hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop00:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
hbase.rootdir:指定底层存储位置
在伪分布式模式下,底层使用HDFS存储数据,所以此处配置的是一个HDFS地址
dfs.replication:指定底层HDFS的副本存储数量
配置了副本数据,明确告知了HBase底层HDFS保存数据时的版本数量
- 此种模式下,HBase采用hdfs作为存储具有完整的功能,但是只有一个节点工作,没有性能的提升,可以用作开发测试,不可用作生产环境下。
完全分布式的安装
- jdk和hadoop,并配置了环境变量
- 解压安装包
- 修改conf/hbase-env.sh修改JAVA_HOME
export JAVA_HOME=/home/software/jdk1.8.0_65
- 修改conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop00:9000/hbase</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
hbase.rootdir:指定底层存储位置
dfs.replication:指定底层HDFS的副本存储数量
hbase.cluster.distributed:是否开启集群模式
hbase.zookeeper.quorum:完全分布式模式下使用zk作为集群协调工具,通过这个选项配置使用的zk
- 修改conf/hbase-env.sh
export HBASE_MANAGES_ZK false
hbase默认HBASE_MANAGES_ZK为true,则HBase会自动管理zk,当HBase启动时,会自动去启动zk,在HBase关闭时,会自动关闭zk。
而在很多的场景下,zk不是专门为HBase服务器,不希望HBase在关闭时连带着关闭zk,此时需要 将此选项改为false
-
修改conf/regionservers文件
在其中配置所有的hbase主机
每个主机名独占一行
hbase启动或关闭时会按照该配置启动或者关闭对应主机中的HBase进程
-
将配置好的habase拷贝到其他的机器中
scp -r hbase-0.98.17-hadoop2 root@hadoop02:/root/work
scp -r hbase-0.98.17-hadoop2 root@hadoop03:/root/work
- 启动关闭关闭hbase
-- 启动zookeeper
-- 启动hadoop
-- 启动hbase
start-hbase.sh
通过浏览器访问hbase: http://xxx:60010
通过hbase shell 来访问hbase
启用备用的master实现高可用: hbase-daemon.sh satrt master
关闭hbase:stop-hbase.sh
Hbase的shell操作
-
hbase提供了shell命令行,便于用户操作
使用hbase shell 进入命令行
在hbase shell中,发现无法通过删除键删除数据 必须ctrl+删除键 才可以,用起来很不便利,此时可以修改xshell的配置,解决此问题:
-
HBase的shell命令
help命令:查看帮助信息
general命令组:
status:查看hbase当前状态
version:查看版本信息
whoami:查看当前登录用户信息
ddl命令组:
list:查看所有表
create:创建表
创建表必须指定表名和列族,列族至少有一个,列族可以直接指定一个名字
>创建指定名称空间指定表名的表
create 'ns1:t1'
>create 't1' 指定表名
>create 't1','cf1' 指定表名和列族
describe:查看表的基本信息
>desc 'park:tab1'
disable禁用表
>disable 't1'
enable启用以禁用的表
>enable 't1'
drop删除表
>drop 't1'
dml命令组
put新增数据,修改数据
指定的表,行,列和可选的时间戳
>put 'ns1:t1','r1','c1','value' 向指定表,列族,列,行键中插入
>put 't1','r1','c1','value'
>put 't1','r1','c1','value',ts1
get获取数据
获取整行或者是制定单元格中的数据
>get 't1','r1'
>get 't1','r1','c1'
scan扫描表
扫描整表的数据,可以直接扫描整表,也可以带参数实现高级扫描
>scan 'meta'
delete 删除数据
>delete 'ns1:t1','r1','c1',ts1
truncate 摧毁并重建表,表中的数据全被删除,可以实现全表删除的效果
>truncate 'tab1'
命名空间相关操作
list_namespace列出所有命名空间
create_namespace创建指定名称的命名空间
>create_namespace 'ns1'
list_namespace_tables列出命名空间中的所有的表
drop_namespace删除指定的命名空间