一、前期准备
1、Hadoop集群安装
2、Zookeeper安装
二、Hbase的环境搭建
1、Hbase的下载安装
1.1. 下载
https://archive.apache.org/dist/hbase/2.4.11/
下载 hbase-2.4.11-bin.tar.gz 安装包
1.2 上传
使用xshell上传到指定安装路径
此处是安装路径是**/opt/** module
1.3 解压重命名
tar -xzvf hbase-2.4.11-bin.tar.gz
mv hbase-2.4.11-bin hbase
1.4 配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/module/java
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export HBASE_HOME=/opt/module/hbase
export PATH=PATH**:** JAVA_HOME/bin**:**$HBASE_HOME/bin
1.5 加载环境变量
source /etc/profile
验证环境变量是否生效:
env | grep HOME
env | grep PATH
2、配置文件设置
2.1. 配置 hbase-env.sh
修改内容,可以添加到最后:不用habase自带的zookeeper
vi /opt/module/hbase/conf/hbase-env.sh
export JAVA_HOME=/opt/module/java
export HBASE_MANAGES_ZK=false
2.2. 配置 hbase-site.xml
vi /opt/module/hbase/conf/hbase-site.xml
XML<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 使用 安装好的Zookeeper 指定地址--> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop001,hadoop002,hadoop003</value> <description>The directory shared by RegionServers. </description> </property> <!-- <property>--> <!-- <name>hbase.zookeeper.property.dataDir</name>--> <!-- <value>/export/zookeeper</value>--> <!-- <description> 记得修改ZK的配置文件 --> <!-- ZK的信息不能保存到临时文件夹--> <!-- </description>--> <!-- </property>--> <!-- 指定 Hbase 在 HDFS 上的存储路径 --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop001:9000/hbase</value> <description>The directory shared by RegionServers. </description> </property> <!-- Hbase是否部署为集群模式--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
2.3. 配置 regionservers
**vi /opt/module/hbase/conf/**regionservers
hadoop001
hadoop002
hadoop003
3、删除jar包
解决HBase和Hadoop的log4j兼容性(冲突)问题,修改HBase的jar包,使用Hadoop的jar包。
rm -rf /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar
或重命名
mv /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar /opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak
4、分发文件
scp -r /etc/profile root@hadoop002:/etc/profile
scp -r /etc/profile root@hadoop003:/etc/profile
scp -r /opt/module/hbase root@hadoop002:/opt/module/hbase
scp -r /opt/module/hbase root@hadoop003:/opt/module/hbase
让三台机器文件生效
ssh hadoop001 "source /etc/profile"
ssh hadoop002 "source /etc/profile"
ssh hadoop003 "source /etc/profile"
5、Hbase启动
5.1.启动zookeer与Hadoop
/usr/bin/zkall.sh
cd /opt/module/hadoop
sbin/start-all.sh
5.1.单点启动(了解)
cd /opt/module/hbase
bin/hbase-daemon.sh start master
bin/hbase-daemon.sh start regionserver
5.2.群启
cd /opt/module/hbase
bin/start-hbase.sh
5.3.对应的停止服务
cd /opt/module/hbase
bin/stop-hbase.sh
6、Hbase高可用(可选)
在HBase中HMaster负责监控HRegionServer的生命周期,均衡RegionServer的负载,如果HMaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对HMaster的高可用配置。
6.1.关闭HBase集群(如果没有开启则跳过此步)
cd /opt/module/hbase
bin/stop-hbase.sh
6.2.创建backup-masters文件、
在conf目录下创建backup-masters文件
touch $HBASE_HOME/conf/backup-masters
6.3.配置高可用HMaster节点
在backup-masters文件中配置高可用HMaster节点,将hadoop002作为master备用节点
echo hadoop002 > $HBASE_HOME/conf/backup-masters/conf/backup-masters
6.4.文件分发
将整个conf目录scp到其他节点
scp -r HBASE_HOME/conf root@**hadoop002**:/HBASE_HOME/conf
scp -r HBASE_HOME/conf root@**hadoop003**:/HBASE_HOME/conf
6.5.重启hbase,打开页面测试查看
cd /opt/module/hbase
bin/start-hbase.sh
三、Hbase的基本命令
1、基本操作
1)进入HBase客户端命令行
cd /opt/module/hbase
bin/hbase shell
2)查看帮助命令
hbase:001:0> help
3)创建命名空间
hbase:002:0> help 'create_namespace'
4)创建命名空间bigdata
hbase:003:0> create_namespace 'bigdata'
5)查看所有的命名空间
hbase:004:0> list_namespace
2、DDL操作
1)创建表
(1)直接指定表名、列族、版本数据
创建表格student,2个列族info和msg。info列族数据维护的版本数为5个,如果不写默认版本数为1。
create 'bigdata:student', {NAME => 'info', VERSIONS => 5}, {NAME => 'msg'}
(2)不指定表名
如果创建表格只有一个列族,没有列族属性,可以简写。
如果不写命名空间,使用默认的命名空间default。
create 'student1','info'
2)查看表
(1)查看所有列表名称
hbase:013:0> list
(2)查看表的详细信息
hbase:014:0> describe 'student1'
hbase:014:0> describe 'bigdata:student'
3)修改表
表名创建时写的所有和列族相关的信息,都可以后续通过alter修改,包括增加删除列族。
(1)增加列族和修改信息都使用覆盖的方法
hbase:015:0> alter 'student1', {NAME => 'f1', VERSIONS => 3}
(2)删除信息使用特殊的语法
hbase:015:0> alter 'student1', NAME => 'f1', METHOD => 'delete'
hbase:016:0> alter 'student1', 'delete' => 'f1
4)删除表
shell中删除表格,需要先将表格状态设置为不可用
hbase:017:0> disable 'student1'
hbase:018:0> drop 'student1'
3、DML
1)写入数据
hbase:019:0> put 'bigdata:student','1001','info:name','zhangsan'
hbase:020:0> put 'bigdata:student','1001','info:name','lisi'
hbase:021:0> put 'bigdata:student','1001','info:age','18'
在HBase中如果想要写入数据,只能添加结构中最底层的cell。可以手动写入时间戳指定cell的版本,推荐不写默认使用当前的系统时间。
如果重复写入相同rowKey,相同列的数据,会写入多个版本进行覆盖。
2)读取数据
读取数据的方法有两个:get和scan。
(1)get最大范围是一行数据,也可以进行列的过滤,读取数据的结果为多行cell。
也可以修改读取cell的版本数,默认读取一个。
最多能够读取当前列族设置的维护版本数。
hbase:022:0> get 'bigdata:student','1001'
hbase:023:0> get 'bigdata:student','1001' , {COLUMN => 'info:name'}
hbase:024:0> get 'bigdata:student','1001' , {COLUMN => 'info:name', VERSIONS => 6}
(2)scan是扫描数据,能够读取多行数据,不建议扫描过多的数据,
推荐使用startRow和stopRow来控制读取的数据,默认范围左闭右开。
hbase:025:0> scan 'bigdata:student',{STARTROW => '1001',STOPROW => '1002'}
3)删除数据
删除数据的方法有两个:delete和deleteall。
(1)delete表示删除一个版本的数据,即为1个cell,不填写版本默认删除最新的一个版本。
hbase:026:0> delete 'bigdata:student','1001','info:name'
(2)deleteall表示删除所有版本的数据,即为当前行当前列的多个cell。
(执行命令会标记数据为要删除,不会直接将数据彻底删除,删除数据只在特定时期清理磁盘时进行)
hbase:027:0> deleteall 'bigdata:student','1001','info:name'