HBase

一、初始HBase

1.1 HBase简介

1.1.1 HBase是什么

HBase是Goole的BigTable论文而来,是一个分布式海量列示非关系型数据库系统,可以提供超大规模数据集的实时随机读写

        认识HBase列存储
        如下是MySql存储机制,空值字段浪费存储空间
        

         如果是列存储的话:
        

         列存储的优点:
                1.减少存储空间的占用。
                2.支持好多列。

1.1.2 HBase的特点

        1. 海量存储:底层基于HDFS存储海量数据。
        2. 列示存储:HBase表的数据是基于列族进行存储的,一个列族包含若干列。
        3. 极易扩展:底层依赖HDFS,当磁盘空间不足时,只需动态添加DataNode服务节点即可。
        4. 高并发:支持高并发的读写操作。
        5. 稀疏:稀疏主要是针对HBase列的灵活性。在列族中可以指定任意多个列,在列数据为空的情况下,不会占用存储空间。
        6. 数据的多版本:HBase表中的数据可以有多个版本值,默认情况下是根据版本号区分,版本号就是插入数据的时间戳。
        7. 数据类型单一:  所有的数据在HBase中是以字节数组进行存储的。

1.1.3 HBase的应用

        交通方面:船舶GPS信息,每天有上千万左右的数据存储。
        金融方面:消费信息、贷款信息、信用卡还款信息等。
        电商方面:电商网站的交易信息、物流信息、游览信息等。
        电信方面:通话信息。

        总结:HBase适合海量明细数据的存储,并且后期需要有很好的查询性能(单表超上千、上亿,且并发要求高)。

1.2 HBase数据模型

        HBase的数据也是以表(有行有列)的形式存储的。

        HBase逻辑架构
        

         HBase物理存储
        

         

1.3 HBase整体架构

        

         Zookeeper:
                实现HMaster的高可用;
                保存了HBase的元数据信息,是所有HBase表的寻址入口;
                对HMaster和RegionServer监控;

        HMaster:
                为RegionServer分配Region;
                维护整个集群的负载均衡;
                维护集群的元数据信息;
                发现失效的Region,并将失效的Region分配到正常的RegionServer上;

        HRegionServer:
                负责管理Region;
                接受客户端的读写数据请求;
                切分正在运行过程中变大的Region;

        Region:
                每个HRegion由多个store构成;
                每个Store保存一个列族(Column Family),表有几个列族,就有几个Store;
                每个Store由一个memStore和多个storeFile组成。MemStore是Store在内存中的内容,写到文件后就是storeFile。storeFile在底层是以HFile的格式保存。

1.4 HBase集群安装部署

        1. 下载安装包
                Index of /dist/hbase/1.3.1
                hbase-1.3.1-bin.tar.gz

        2. 规划安装目录:/opt/lagou/servers/

        3. 上传安装包到服务器

        4. 解压安装包到指定的规划目录
                tar -zxvf hbase-1.3.1-bin.tar.gz -C /opt/lagou/servers

        5. 修改配置文件
                需要把hadoop中的配置core-site.xml 、hdfs-site.xml拷贝到hbase安装目录下的conf文件夹中:ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/core-site.xml
/opt/lagou/servers/hbase-1.3.1/conf/core-site.xml
                ln -s /opt/lagou/servers/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
/opt/lagou/servers/hbase-1.3.1/conf/hdfs-site.xml
                修改conf目录下配置文件
                修改 hbase-env.sh:
                        #添加java环境变量
                        export JAVA_HOME=/opt/module/jdk1.8.0_231
                        #指定使用外部的zk集群
                        export HBASE_MANAGES_ZK=FALSE
                修改 hbase-site.xml:

<configuration>
    <!-- 指定hbase在HDFS上存储的路径 -->
   <property>
       <name>hbase.rootdir</name>
       <value>hdfs://linux121:9000/hbase</value>
   </property>
       <!-- 指定hbase是分布式的 -->
   <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
   </property>
       <!-- 指定zk的地址,多个用“,”分割 -->
   <property>
       <name>hbase.zookeeper.quorum</name>
       <value>linux121:2181,linux122:2181,linux123:2181</value>
   </property>
</configuration> 

                 修改regionservers文件:
                        #指定regionserver节点
                        linux121
                        linux122
                        linux123

        6. 配置hbase的环境变量
                export HBASE_HOME=/opt/lagou/servers/hbase-1.3.1
                export PATH=$PATH:$HBASE_HOME/bin

        7. 分发hbase目录和环境变量到其他节点
                rsync-script hbase-1.3.1

        8. 让所有节点的hbase环境变量生效
                在所有节点执行 source /etc/profile

        HBase集群的启动和停止:
                前提条件:先启动Hadoop和zk集群;
                启动HBase:start-hbase.sh
                停止HBase:stop-hbase.sh

        HBase集群的web管理界面
                HMaster主机名:16010

1.5 HBase shell 基本操作

        1. 进入HBase客户端命令操作界面
                hbase shell

        2. 查看帮助命令
                help

        3. 查看当前数据库中有哪些表
                list

        4. 创建一张lagou表, 包含base_info、extra_info两个列族
                HBase建表必须指定列族信息
                create 'lagou', 'base_info', 'extra_info'
                create 'lagou', {NAME => 'base_info', VERSIONS => 3}, {NAME => 'extra_info', VERSION => 3}
                VERSIONS是指此单元格内的数据可以保留最近3个版本。

        5. 添加数据操作
                向lagou表中插入信息,row key为 rk1,列族base_info中添加name列标示符,值为wang:put 'lagou', 'rk1', 'base_info:name', 'wang'
                向lagou表中插入信息,row key为rk1,列族base_info中添加age列标示符,值为30:
                put 'lagou', 'rk1', 'base_info:age', 30
                向lagou表中插入信息,row key为rk1,列族extra_info中添加address列标示符,值为shanghai:put 'lagou', 'rk1', 'extra_info:address', 'shanghai'

        6. 查询数据
                6.1 通过rowkey进行查询
                        获取表中row key为rk1的所有信息:get 'lagou', 'rk1'
                6.2 查看rowkey下面某个列族的信息
                        获取lagou表中row key为rk1,base_info列族的所有信息:
                        get 'lagou', 'rk1', 'base_info'
                6.3

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值