Hbase搭建和shell命令笔记

写在前面

在老师的要求下,我们学习了hbase的相关操作。hbase是一个非关系型数据库,其存储机构与关系型数据库有着很大的不同,同时hbase也是一个分布式数据库。其查询效率很高。

准备环境

hbase建立在hadoop的HDFS和zookeeper的基础上,所以要配置hbase之前首先要把HDFS和zookeeper配置好。这里我配置的是分布式的hbase,所以要建立在已配好hdfs和zookeeper的基础上。

首先使用sftp软件把压缩包传到/opt/software下,然后解压到/opt/module/目录下:

[liuge@hadoop03 software]$ tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/module/

之后我们就可以开始配置了。

配置分布式hbase

首先正确启动Zookeeper和HDFS:

[liuge@hadoop03 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop04 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop05 zookeeper-3.4.10]$ bin/zkServer.sh start
[liuge@hadoop03 hadoop-2.7.2]$ sbin/start-dfs.sh

这里可以暂时不启动yarn,因为用不到MapReduce。

首先修改hbase-env.sh(在conf目录下):

export JAVA_HOME=/opt/module/jdk1.8.0_202
export HBASE_MANAGES_ZK=false

这里可以把这两行注释掉,这样启动的时候就不会报警告了:

之后,修改hbase-site.xml:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop03:9000/HBase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
 <!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property> 
<name>hbase.zookeeper.quorum</name>
 <value>hadoop03,hadoop04,hadoop05</value>
</property>
<property> 
<name>hbase.zookeeper.property.dataDir</name>
 <value>/opt/module/zookeeper-3.4.10/zkData</value>
</property>
</configuration>

这里需要注意的点是,hbase.rootdir的value里要把hadoop03换成你自己的主机名或者ip地址,hbase.zookerper.quorum的value要把这三个换成你自己的主机名或者ip地址,hbase.zookeeper.property.dataDir的value根据你自己配置的zookeeper目录设置。

打开regionservers,把三台主机名或者IP地址放进去:

hadoop03
hadoop04
hadoop05

之后,配置一下软连接hadoop配置文件到hbase:

[liuge@hadoop03 module]$ ln -s /opt/module/hadoop-
2.7.2/etc/hadoop/core-site.xml /opt/module/hbase/conf/core-site.xml
[liuge@hadoop03 module]$ ln -s /opt/module/hadoop-
2.7.2/etc/hadoop/hdfs-site.xml /opt/module/hbase/conf/hdfs-site.xml

最后,把配置好的Hbase分发到其他集群:

[liuge@hadoop03 module]$ xsync hbase/

到这里,配置就算是完成了。

启动Hbase

启动方式1

[liuge@hadoop03 hbase]$ bin/hbase-daemon.sh start master
[liuge@hadoop03 hbase]$ bin/hbase-daemon.sh start regionserver

启动方式2

[liuge@hadoop03 hbase]$ bin/start-hbase.sh

对应的停止方式为:

[liuge@hadoop03 hbase]$ bin/stop-hbase.sh

启动成功后,我们可以直接查看web界面,端口号为16010:

http://hadoop03:16010

这里的hadoop03要换成你自己的主机名或者ip地址。

hbase的shell操作

hbase作为一个数据库,肯定是API操作要更加重要,shell命令只是作为简单补充,这里只简单记录一下。

  1. 进入Hbase客户端:

    [liuge@hadoop03 hbase]$ bin/hbase shell
    
  2. 查看帮助命令:

    hbase(main):001:0> help
    
  3. 列出数据库中的所有表:

    hbase(main):002:0> list
    
  4. 创建表:

    hbase(main):002:0> create 'student','info'
    
  5. 插入数据到表

    hbase(main):003:0> put 'student','1001','info:sex','male'
    hbase(main):004:0> put 'student','1001','info:age','18'
    hbase(main):005:0> put 'student','1002','info:name','Janna'
    hbase(main):006:0> put 'student','1002','info:sex','female'
    hbase(main):007:0> put 'student','1002','info:age','20'
    
  6. 扫描查看表数据:

    hbase(main):008:0> scan 'student'
    hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => 
    '1001'}
    hbase(main):010:0> scan 'student',{STARTROW => '1001'}
    
  7. 查看表结构

    hbase(main):011:0> describe ‘student’
    
  8. 更新指定字段的数据(其实还是put):

    hbase(main):012:0> put 'student','1001','info:name','Nick'
    hbase(main):013:0> put 'student','1001','info:age','100'
    
  9. 查看指定行或指定列族:列的数据:

    hbase(main):014:0> get 'student','1001'
    hbase(main):015:0> get 'student','1001','info:name'
    
  10. 统计表数据行数:

    hbase(main):021:0> count 'student'
    
  11. 删除表数据:

    删除某rowKey的全部数据:
    hbase(main):016:0> deleteall 'student','1001'
    删除某rowKey的某一列数据:
    hbase(main):017:0> delete 'student','1002','info:sex'
    
  12. 清空表数据:

    hbase(main):018:0> truncate 'student'
    

    提示 清空表前先disable,再truncate

  13. 删除表:

    首先要让表disable:
    hbase(main):019:0> disable 'student'
    然后才能把表drop:
    hbase(main):020:0> drop 'student'
    
  14. 变更表信息:

    hbase(main):022:0> alter 'student' {NAME=>'info',VERSIONS=>3}
    hbase(main):022:0> get 
    'student','1001',{COLUMN=>'info:name',VERSIONS=>3}
    

总结

总的来说,这篇文章简单记录了一下hbase的配置及shell操作,最重要的API操作等我过几天再整理一篇博客,那个内容要更多。

posted @ 2020-10-18 22:00  武神酱丶  阅读(145)  评论(0编辑  收藏  举报