• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Hbase入门详解

    1、hbase概述

    1.1 hbase是什么

    hbase是基于hdfs进行数据的分布式存储,具有高可靠、高性能、列存储、可伸缩、实时读写的nosql数据库。

    hbase可以存储海量的数据,并且后期查询性能很高,可以实现上亿条数据的查询秒级返回结果。

    1.2 hbase表的特性

    1、大

    2、无模式

    3、面向列

    4、稀疏

    5、数据的多版本

    6、数据类型单一

    1.3 hbase表的逻辑视图

    2、hbase的集群结构

    1、client

    2、zookeeper

    客户端操作hbase表数据需要一个zk集群

    作用

    1、zk保存了hbase集群的元数据信息

    存储 Hbase 的 schema,包括有哪些 table,每个 table 有哪些 column family

    2、zk保存所有hbase表的寻址入口

    后期通过客户端接口去操作hbase数据的时候,需要连接上zk集群
    存贮所有 Region 的寻址入口----root 表在哪台服务器上

    3、通过引入了zk之后,实现了整个hbase集群高可用

    4、zk保存了HMaster和HRegionServer它们的注册和心跳信息

    后期哪一个HRegionServer挂掉之后,zk也会感知到,然后把这个信息通知给老大HMaster

    3、HMaster

    它是整个hbase集群老大

    作用

    1、它接受客户端创建表、删除表的请求。处理 schema 更新请求

    2、它会给HRegionServer分配对应的region,进行数据的管理

    3、它会把挂掉的HRegionServer所管理的region重新分配给其他的活着的HRegionServer

    4、它会实现HRegionServer负载均衡,避免某一个HRegionServer管理的region过多。

    4、HRegionServer

    它是整合hbase集群的小弟

    作用

    1、负责管理HMaster老大给它分配的region

    2、它会接受到客户端的读写请求

    3、它会把在运行过程中,变得过大的region数据进行切分

    5、Region

    它是整个hbase表中分布式存储的最小单元

    它的数据是基于hdfs进行存储

    3、hbase集群安装部署

    前提条件

    1、下载对应的安装包

    2、规划安装目录

    3、上传安装包到服务器中

    4、解压安装包到指定的规划目录

    5、重命名解压目录

    6、修改配置文件

    需要把hadoop安装目录下/etc/hadoop文件夹中

    需要把以上2个hadoop的配置文件拷贝到hbase安装目录下的conf文件夹中

    1、vim hbase-env.sh

    #配置java环境变量
    export JAVA_HOME=/export/servers/jdk
    #指定hbase集群由外部的zk集群去管理,不在使用自带的zk集群
    export HBASE_MANAGES_ZK=false

    2、vim hbase-site.xml

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

    3、vim regionservers

    #指定哪些节点是HRegionServer
    node2
    node3

    4、vim backup-masters

    #指定哪些节点是备用的Hmaster
    node2

    7、配置hbase环境变量

    vim /etc/profile

    export HBASE_HOME=/export/servers/hbase
    export PATH=$PATH:$HBASE_HOME/bin

    8、分发hbase目录和环境变量

    scp -r hbase node2:/export/servers
    scp -r hbase node3:/export/servers
    scp /etc/profile node2:/etc
    scp /etc/profile node3:/etc

    9、让所有hbase节点的环境变量生效

    在所有节点上执行

    4、hbase集群的启动和停止

    1、启动hbase集群

    先启动zk和hadoop集群

    然后通过hbase/bin

    start-hbase.sh

    2、停止hbase集群

    通过hbase/bin

    stop-hbase.sh

    hbase集群web管理界面

    1、启动好hbase集群之后

    访问地址

    HMaster主机名:16010

    5、hbase shell 命令行操作

    hbase/bin/hbase shell 进入到hbase shell客户端命令操作

    1、创建一个表

    create 't_user_info','base_info','extra_info'
    create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}

    2、查看有哪些表

    list
    类似于mysql表中sql:show tables

    3、查看表的描述信息

    describe 't_user_info'

    4、修改表的属性

    #修改列族的最大版本数
    alter 't_user_info', NAME => 'base_info', VERSIONS => 3

    5、添加数据到表中

    put 't_user_info','00001','base_info:name','zhangsan'
    put 't_user_info','00001','base_info:age','30'
    put 't_user_info','00001','base_info:address','beijing'
    put 't_user_info','00001','extra_info:school','shanghai'
    put 't_user_info','00002','base_info:name','lisi'

    6、查询表的数据

    //按照条件查询
    get 't_user_info','00001'
    get 't_user_info','00001', {COLUMN => 'base_info'}
    get 't_user_info','00001', {COLUMN => 'base_info:name'}
    get 't_user_info','00001',{TIMERANGE => [1544243300660,1544243362660]}
    get 't_user_info','00001',{COLUMN => 'base_info:age',VERSIONS =>3}
    //全表查询
    scan 't_user_info'

    7、删除数据

    delete 't_user_info','00001','base_info:name'
    deleteall 't_user_info','00001'

    8、删除表

    disable 't_user_info'
    drop 't_user_info'

    6、hbase的内部原理

    7、hbase的寻址机制

    寻找 RegionServer

    -ROOT-表

    .META.表

    联系 regionserver 查询目标数据

    regionserver 定位到目标数据所在的 region,发出查询请求

    region 先在 memstore 中查找,命中则返回

    如果在 memstore 中找不到,则在 storefile 中扫描(可能会扫描到很多的 storefile----bloomfilter 布隆过滤器)布隆过滤器可以快速的返回查询的rowkey是否在这个storeFile中, 但也有误差, 如果返回没有,则一定没有,如果返回有, 则可能没有

    8、Hbase高级应用

    建表

    BLOOMFILTER 默认是 Row 布隆过滤器

    VSRSIONS 默认是 1 数据版本

    COMPRESSION 默认值是 NONE 压缩

    disable_all ‘toplist.*' disable_all 支持正则表达式,并列出当前匹配的表 drop_all也相同

    hbase 表预分区----手动分区

    一种可以加快批量写入速度的方法是通过预先创建一些空的 regions,这样当数据写入 HBase时,会按照 region 分区情况,在集群内做数据的负载均衡。减少数据达到 storefile 大小的时候自动分区的

    时间消耗,并且还有以一个优势,就是合理设计 rowkey 能让各个 region 的并发请求平均分配(趋于均匀) 使 IO 效率达到最高,

    行键设计

    列族尽量少, 一般2-3个

    rowkey

    尽量减少行键和列族的大小在 HBase 中,value 永远和它的 key 一起传输的
    HFile中每个cell都会存储rowkey, rowkey过大会影响存储效率
    MemStore 将缓存部分数据到内存,如果 rowkey 字段过长,内存的有效利用率就会降低,系统不能缓存更多的数据,这样会降低检索效率。

    建议将 rowkey 的高位作为散列字段,由程序随机生成,低位放时间字段,这样将提高数据均衡分布在每个 RegionServer,以实现负载均衡的几率。( 盾 )

    rowkey矛盾

    热点解决

    可以用 Long.Max_Value - timestamp 追加到 key 的末尾,例如 [key][reverse_timestamp] ,[key] 的最新值可以通过 scan [key]获得[key]的第一条记录,因为 HBase 中 rowkey 是有序的,第一条记录是最后录入的数据。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    上一篇:Docker 部署Django项目的方法示例
    下一篇:如何用Nginx解决前端跨域问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Hbase入门详解 Hbase,入门,详解,Hbase,入门,