Hadoop之HBase的安装与应用

1.  HBase的基本概念与体系结构

    HBase是一个分布式的,面向列的开源数据库,底层存储是HDFS。它适合非结构化数据存储

    1.  基本概念

 概念  说明
 命名空间 可以理解为关系型数据库的库 
 表  对应于关系型数据库的表
 行      由一个rowkey和多个列族组成,一行一个rowkey,用作唯一标识
 列族    每一行由若干列族组成,每个列族可包含多个列。物理上,同一列族的数据存储在一起
 列限定符  列由列族和列限定符唯一指定
 单元格  单元格由rowkey,列族,列限定符唯一定位
 时间戳  单元格内数据按时间倒序排列

 

    2.  体系结构

        HBase是一种主从结构,包含HMaster,RegionServer,ZooKeeper

        HMaster负责RegionServer的分配及数据库的创建和删除等操作

        RegionServer负责数据的读写操作

        ZooKeeper负责维护集群的状态

        

 

        1.  HMaster

            主要职责

              1.  负责在RegionServer上分配和调控不同的Region

              2.  根据恢复和负载均衡策略重新分配Region

              3.  监控RegionServer的状态

              4.  管理和维护HBase的命名空间

              5.  接收客户端的请求,提供创建删除或更新表格的接口

        2.  RegionServer

            组成部分

              1.  Region

                  一个RegionServer包含多个Region,而一个Region只能属于一个RegionServer

                  默认情况下, Region的大小是8GB,包含8个HFile的数据文件,每个文件是128MB

                  一个RegionServer大约管理1000个Region

              2.  WAL预写日志

                  数据写入之前先写入日志,然后写入缓存,缓存写满后进行数据的持久化

                  写入的WAL日志对应一个HLog文件

              3.  Block Cache读缓存

                  HBase将经常要读取的数据放入Block Cache,提高读取数据的效率。当Block Cache空间被占满后,采用LRU算法将读取频率最低的从Block Cache中清除

              4.  MemStore写缓存

                  MemStore主要存储了还未写入磁盘的数据,此时发生了宕机,这部分数据就丢失了。

                  HBase中的每一个列族对应一个MemStore,其中存储的是按键排好序的待写入磁盘的数据,数据按照rowkey排好序写入HFile,最终写入HDFS

              5.  HFile数据文件

                  HBase表中的数据最终保存在数据文件HFile中,并存储在HDFS的DataNode中

        3.  ZooKeeper

            主要职责

              1.  监控HBase节点

              2.  通过zookeeper的watch机制提供节点故障和宕机的通知

              3.  保证服务器之间的同步

              4.  负责master选举

            HBase在zookeeper中的数据信息

                         

2.  安装HBase

    1.  下载HBase

        hbase-2.1.0-bin.tar.gz

    2.  解压并安装

        tar -zxvf hbase-2.1.0-bin.tar.gz -C /usr/local

        ln -s hbase-2.1.0 hbase

    3.  配置HBase

        1.  修改环境变量hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
export HBASE_MANAGES_ZK=false #true表示用自带的zookeeper

        2.  修改配置文件hbase-site.xml

<configuration>
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
      </property>
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,datanode1,datanode2:2181</value>
      </property>
</configuration>

        3.  设置regionservers

datanode1
datanode2 

        4.  设置Linux环境变量文件

export HBASE_HOME=/usr/local/hbase
export PATH=$HBASE_HOME/bin:$PATH 

        5.  将HBase文件复制到其它节点

            scp hbase-env.sh hbase-site.xml regionservers root@172.16.1.230:/usr/local/hbase/conf/
            scp hbase-env.sh hbase-site.xml regionservers root@172.16.1.228:/usr/local/hbase/conf/

    4.  启动并验证HBase

        1.  只需在master节点上启动hbase即可,其它节点不需要启动hbase

            /usr/local/hbase/bin/start-hbase.sh

        2.  在主节点上查看进行

            

        3.  在其它节点查看

            

3.  HBase的HA模式

    1.  启动Backup Master

        /usr/local/hbase/bin/hbase-daemon.sh start master

    2.  关闭Backup Master

        /usr/local/hbase/bin/hbase-daemon.sh stop master

 

4.  HBase的操作方式

    1.  HBase Shell命令行    

        1.  创建表

            create 'yangjianbo','info','grade'  表名为yangjianbo,包含两个列族:info和grade                        

        2.  列出所有表名

            list

        3.  插入数据

            put 'yangjianbo','s001','info:name','Tom'  插入数据s001为rowkey, info:name指定列名,Tom为name的值

        4.  扫描查询数据

            scan 'yangjianbo'

            

        5.  查看表结构

            describe 'yangjianbo'             

        6.  删除表

            disable 'yangjianbo'  禁用表,查询的时候会报错  enable 'yangjianbo'  启用表

            drop 'yangjianbo'  不能直接删除表,需要先把表禁用   

        7.  清空表数据

            truncate 'yangjianbo'

        8.  退出HBase Shell

            exit 

        10.  查找前1行数据

            scan 'yangjianbo',{LIMIT=>1}             

    2.  Java API

        开发Java程序访问HBase,在工程中添加HBase安装目录下的lib和client-facing-thirdparty目录下的jar包

        其它略

    3.  web console

        http://master:16010                  

posted @ 2022-06-27 14:32  奋斗史  阅读(236)  评论(0)    收藏  举报