Hbase集群安装配置&简单使用

前言

HBase是Hadoop数据库,能够实现随机、实时读写你的Big Data,它是Google的Bigtable的开源实现,可以参考Bigtable的论文Bigtable: A Distributed Storage System for Structured。HBase的存储模型可以如下三个词来概括:distributed, versioned, column-oriented。HBase并非只能在HDFS文件系统上使用, 你可以应用在你的本地文件系统上部署HBase实例来存储数据。

环境准备&安装文件

Hbase安装配置

  • 上传安装包解压

    1
    [root@master201 Soft]# tar -zxvf hbase-1.3.1-bin.tar
  • 设置环境变量

    1
    2
    3
    4
    5
    6
    7
    8
    [root@master201 Soft]# vi /etc/profile

    # 添加以下内容
    export HBASE_HOME=/home/lishijia/Soft/hbase-1.3.1
    export PATH=$HBASE_HOME/bin:$PATH

    # 添加完执行以下命令生效
    [root@master201 Soft]# source /etc/profile
  • Hbase环境变量配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建pid目录
    [root@master201 Soft] mkdir /home/lishijia/Soft/hbase-1.3.1/pid
    [root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/hbase-env.sh

    #添加以下配置信息
    export JAVA_HOME=/home/lishijia/Soft/jdk1.8.0_144
    export HBASE_PID_DIR=/home/lishijia/Soft/hbase-1.3.1/pid
    #不适用内置zookeeper,使用我们自己安装的,通过hbase-site.xml配置
    export HBASE_MANAGES_ZK=false
  • hbase-site配置

    1
    [root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/hbase-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master201:9000/hbase</value>
    <description>设置 hbase 数据库存放数据的目录,这里是放在hadoop hdfs上,这里要与hadoop的core-site.xml文件中的fs.default.name中的值一致,然后在后面添加自己的子目录,我这里定义是hbase</
    description>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>打开 hbase 分布模式</description>
    </property>
    <property>
    <name>hbase.master</name>
    <value>master</value>
    <description>指定 hbase 集群主控节点</description>
    </property>
    <property>
    <name>hbase.tmp.dir</name>
    <value>/home/lishijia/Soft/hbase-1.3.1/tmp</value>
    <description>hbase的一些临时文件存放目录。</description>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master201,slave202,slave203</value>
    <description> 指定 zookeeper 集群节点名 ,Leader是由 zookeeper 表决算法决定的</description>
    </property>
    <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
    <description> 连接到zookeeper的端口,默认是2181</description>
    </property>
    </configuration>
  • regionservers配置

    配置 region服务器,该文件指定了HRegionServer进程将在哪些节点上运行

    1
    2
    3
    4
    5
    6
    [root@master201 Soft] vim /home/lishijia/Soft/hbase-1.3.1/conf/regionservers
    # 添加对应的节点信息

    master201
    slave202
    slave203
  • scp安装到其他两台机器

    1
    2
    [root@master201 Soft] scp -r hbase-1.3.1/ slave202:/home/lishijia/Soft/
    [root@master201 Soft] scp -r hbase-1.3.1/ slave203:/home/lishijia/Soft/

启动Hbase&验证

  • 启动Hbase。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [root@master201 bin]# ./start-hbase.sh
    starting master, logging to /home/lishijia/Soft/hbase-1.3.1/logs/hbase-root-master-master201.out
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
    Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
    master201: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-master201.out
    slave202: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-slave202.out
    slave203: starting regionserver, logging to /home/lishijia/Soft/hbase-1.3.1/bin/../logs/hbase-root-regionserver-slave203.out
    master201: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
    master201: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
    [root@master201 bin]# jps
    2864 QuorumPeerMain
    7168 NameNode
    7378 SecondaryNameNode
    9607 HMaster
    9927 Jps
    9755 HRegionServer
    6639 ResourceManager
  • jps查看进程信息

  • zookeeper查看节点信息

Hbase简单使用

  • hbase shell进入控制台

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@master201 bin]# hbase shell
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/home/lishijia/Soft/hbase-1.3.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/home/lishijia/Soft/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 1.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr 6 19:36:54 PDT 2017
    hbase(main):001:0>
  • hbase创建表

    即创建了一个student表,列族:info。因为HBase的表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后第一个数据

    1
    2
    3
    4
    hbase(main):001:0> create 'student','info'
    0 row(s) in 1.5350 seconds

    => Hbase::Table - student

    describe查看表结构信息

    1
    hbase(main):005:0> describe 'student'

  • 添加数据至student表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 添加一条数据建:1,name列:lishijia
    hbase(main):001:0> put 'student', '1', 'info:name', 'lishijia'
    # 添加sex列
    hbase(main):001:0> put 'student', '1', 'info:sex', '男'
    # 添加age列
    hbase(main):001:0> put 'student', '1', 'info:age', '30'
    hbase(main):001:0> put 'student', '1', 'info:age', '31'
    # 添加一条数据建:1,name列:lishijia
    hbase(main):001:0> put 'student', '2', 'info:name', 'eva'
    # 添加sex列
    hbase(main):001:0> put 'student', '2', 'info:sex', '女'
    # 添加age列
    hbase(main):001:0> put 'student', '2', 'info:age', '29'
  • get查看数据,可以看到每列的数据都带有时间戳的,针对每次修改都是累加,通过时间戳来标记最新的数据,至于最多保留多少条数据,这个是在创建表的时候,可以设置保留版本数

    1
    hbase(main):012:0> get 'student', '1'

  • scan扫描表

    1
    hbase(main):016:0> scan 'student'

  • 删除表

    1
    2
    3
    # 删除表有两步,第一步先让该表不可用,第二步删除表。
    disable 'student'
    drop 'student'
  • 创建多版本表

    1
    2
    3
    查询表的历史版本,需要两步。
    在创建表的时候,指定保存的版本数(假设指定为5)
    create 'student',{NAME=>'info',VERSIONS=>5}

总结

以上主要介绍了安装Hbase集群,到对于一些命令的简单使用。不过针对以上在shell命令操作Hbase数据库,实在是太麻烦了,它每次操作都是只能一列一列的玩。所以一般针对Hbase存储都是通过程序来完成的。

分享到 评论