大数据组件-Hbase

简介: 大数据组件-Hbase

 image.gif编辑

👨🏻‍🎓博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家🌟

🌈擅长领域:Java、大数据、运维、电子

🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!

🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

 


目录

概念

特点

分布式

hbase原理

hbase架构

Hbase Shell操作

基本操作

表的操作

hbase数据结构

HBase原理

数据flush过程

数据合并过程


概念

    • HBase是一个基于HDFS口的非关系型面向列的分布式数据库。这是一个NoSQL开源数据库,其中的数据存储在行和列中。单元格是行和列的交集。
    • 每个单元格值都包含一个"版本”属性,该属性仅是唯一标识该 单元格的时间戳。映射中的每个值都是不间断的字节数组

    特点

      • 海量存储
        • Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利
          • 列存储
            • 这里的列式存储其实说的是列族(ColumnFamily)存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定
              • 极易扩展
                • Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
                • 备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
                  • 高并发
                    • 由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
                      • 稀疏
                        • 稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

                          分布式

                            • 分布式用户image.gif编辑
                              • 为了解决分布式用户下集群上session类的用户数据进行更好的进程之间通信,减少程序进程之间的通信消耗演变而来的——Spring
                                • 分布式系统image.gif编辑
                                • 客户负载均衡image.gif编辑
                                  • 并发:指的是线程的并发,抢占资源
                                  • s并行:指的是进程的并行,多核cpu,同时进行
                                    • 去中心化,无需负载均衡的引导,都会知道数据的流向,这就是Redies无需负载均衡器中心,结点互相保留了信息
                                      • hbase原理

                                      image.gif编辑

                                      hbase架构

                                      image.gif编辑

                                        • Region:分区
                                        • HLog:预写日志
                                        • Stor:列族
                                        • ZK:zookeeper高可用,检测节点心跳
                                        • HMaster:Hbase的集群master
                                        • Men Store:Cache缓存

                                        Hbase Shell操作


                                        基本操作

                                        1.进入HBase客户端命令行

                                        hbase shell

                                        image.gif

                                          1. 查看帮助命令
                                          hbase(main):001:0> help

                                          image.gif

                                            1. 查看当前数据库中有哪些表
                                            hbase(main):002:0> list

                                            image.gif

                                            表的操作

                                            1.创建表

                                            hbase(main):002:0> create 'student','info'

                                            image.gif

                                            2.插入数据到表

                                            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'

                                            image.gif

                                            3.扫描查看表数据

                                            hbase(main):008:0> scan 'student'
                                            hbase(main):009:0> scan 'student',{STARTROW => '1001', STOPROW => '1001'}
                                            hbase(main):010:0> scan 'student',{STARTROW => '1001'}

                                            image.gif

                                              • {STARTROW => '1001', STOPROW => '1001'}:查看的是startrow(开始行)从1001(包含边界值),到stoprow(不包含边界值),比较的方式一类似ASCII码的逐位比较大小,若没有一位大于stoprow值则视为比其小。

                                              4.查看表结构

                                              hbase(main):011:0> describe 'student'

                                              image.gif

                                              5.更新指定字段的数据

                                              hbase(main):012:0> put 'student','1001','info:name','Nick'
                                              hbase(main):013:0> put 'student','1001','info:age','100'

                                              image.gif

                                                • 覆盖原有的达到更新

                                                6.查看“指定行”或“指定列族:列”的数据

                                                hbase(main):014:0> get 'student','1001'
                                                hbase(main):015:0> get 'student','1001','info:name'

                                                image.gif

                                                7.统计表数据行数

                                                hbase(main):021:0> count 'student'

                                                image.gif

                                                8.删除数据

                                                删除某rowkey的全部数据:

                                                hbase(main):016:0> deleteall 'student','1001'

                                                image.gif

                                                删除某rowkey的某一列数据:

                                                hbase(main):017:0> delete 'student','1002','info:sex'

                                                image.gif

                                                9.清空表数据

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

                                                image.gif

                                                  • 提示:清空表的操作顺序为先disable,然后再truncate。

                                                  10.删除表

                                                  首先需要先让该表为disable状态:

                                                  hbase(main):019:0> disable 'student'

                                                  image.gif

                                                  然后才能drop这个表:

                                                  hbase(main):020:0> drop 'student'

                                                  image.gif

                                                    • 提示:如果直接drop表,会报错:ERROR: Table student is enabled. Disable it first.

                                                    11.变更表信息

                                                    将info列族中的数据存放3个版本:

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

                                                    image.gif

                                                      • VERSIONS:可以指定保存版本数量,put真正表示的新增,只不过展示数据的只展示最新的那条,想看之前的数据可以通过保存版本数据量之内的数据,结合TimeStamp时间戳进行判断。
                                                      • scan 't1',{RAW ⇒true,VERSION ⇒ 10}可以查看已经删除,但还没有被被真正的删除的隐藏起来找时机删除的信息

                                                      12.查看命名空间列表

                                                      hbase(main):007:0> list_namespace

                                                      image.gif

                                                      13.创建命名空间

                                                      hbase(main):008:0> create_namespace 'infomation'

                                                      image.gif

                                                      14.删除命名空间

                                                      hbase(main):009:0> drop_namespace 'infomation'

                                                      image.gif

                                                      15.往创建的命名空间里添加表

                                                      hbase(main):010:0> create 'infomation:emp','info'

                                                      image.gif

                                                      hbase数据结构

                                                        • RowKeyRowKey用于检索记录的主键,访问HBase table中的行有三种方式:
                                                          1. 通过单个RowKey访问(get)
                                                          2. 通过RowKey的range(正则)(like)
                                                          3. 全表扫描(scan)
                                                            • RowKey行键可以是任意字符串(最大长度64KB,实际长度为10~100byte)RowKey保存为字节数组(字节压缩的能力更大,更好利用空间),存储时按照RowKey(byte order)的字典顺序存储。设计Rowkey时,要充分利用排序存储这个特性,将经常一起读取的行存储到一起(位置相关性)。
                                                            • Column Family
                                                              列族:HBase表中的每个列,都属于某个列族。列族是schema的一部分(列不是),必须在使用表定义之前定义。列名都以列族作为前缀,例如:course:history,course:math属于course这个列族。
                                                            • Cell
                                                              由{rowkey,column Family:column,version}唯一确定的单元。cell中的数据时没有类型的,全是字节码形式存储。(无类型、字节码)
                                                            • Time Stamp
                                                              HBase中通过Rowkey和Columns确定的为一个存储单元称为cell。每个cell都保管着同一份数据的多个版本。
                                                            • Name Space(命名空间)image.gif编辑
                                                              1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定,则在default默认的命名空间中。
                                                              **2) RegionServer group:**一个命名空间包含了默认的RegionServer Group。
                                                              **3) Permission:**权限,命名空间能够让我们来定义访问控制列表ACL(Access Control List)。例如,创建表,读取表,删除,更新等等操作。
                                                              **4) Quota:**限额,可以强制一个命名空间可包含的region的数量。

                                                            HBase原理

                                                              • 读流程image.gif编辑
                                                                1)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息;
                                                                2)根据namespace、表名和rowkey在meta表中找到对应的region信息;
                                                                3)找到这个region对应的regionserver;
                                                                4)查找对应的region;
                                                                5)先从MemStore找数据,如果没有,再到BlockCache里面读;
                                                                6)BlockCache还没有,再到StoreFile(HFile)上读(为了读取的效率);
                                                                7)如果是从StoreFile(HFile)里面读取的数据,不是直接返回给客户端,而是先写入BlockCache,再返回给客户端。
                                                              • 写流程数据flush过程image.gif编辑
                                                                1)Client向HregionServer发送写请求;
                                                                2)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复;
                                                                3)HregionServer将数据写到内存(MemStore);
                                                                4)反馈Client写成功。
                                                                数据flush过程
                                                                1)当MemStore数据达到阈值(默认是128M,老版本是64M),将数据刷到硬盘,将内存中的数据删除,同时删除HLog(预写日志)中的历史数据;
                                                                2)并将数据存储到HDFS中;
                                                                3)在HLog(预写日志)中做标记点。
                                                                数据合并过程
                                                                1)当数据块达到3块,Hmaster触发合并操作,Region将数据块加载到本地,进行合并;
                                                                2)当合并的数据超过256M,进行拆分,将拆分后的Region分配给不同的HregionServer管理;
                                                                3)当HregionServer宕机后,将HregionServer上的hlog(预写日志)拆分,然后分配给不同的HregionServer加载,修改.META.;
                                                                4)注意:HLog(预写日志)会同步到HDFS。
                                                                image.gif
                                                              相关实践学习
                                                              云数据库HBase版使用教程
                                                                相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
                                                              相关文章
                                                              |
                                                              1天前
                                                              |
                                                              存储 分布式计算 大数据
                                                              Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程
                                                              Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程
                                                              |
                                                              13天前
                                                              |
                                                              Java 大数据 API
                                                              【大数据】HDFS、HBase操作教程(含指令和JAVA API)
                                                              【大数据】HDFS、HBase操作教程(含指令和JAVA API)
                                                              51 0
                                                              【大数据】HDFS、HBase操作教程(含指令和JAVA API)
                                                              |
                                                              18天前
                                                              |
                                                              存储 大数据 分布式数据库
                                                              使用Apache HBase进行大数据存储:技术解析与实践
                                                              【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
                                                              |
                                                              1月前
                                                              |
                                                              SQL 分布式计算 资源调度
                                                              常用大数据组件的Web端口号总结
                                                              这是关于常用大数据组件Web端口号的总结。通过虚拟机名+端口号可访问各组件服务:Hadoop HDFS的9870,YARN的ResourceManager的8088和JobHistoryServer的19888,Zeppelin的8000,HBase的10610,Hive的10002。ZooKeeper的端口包括客户端连接的2181,服务器间通信的2888以及选举通信的3888。
                                                              49 2
                                                              常用大数据组件的Web端口号总结
                                                              |
                                                              13天前
                                                              |
                                                              存储 分布式计算 Hadoop
                                                              【大数据】分布式数据库HBase下载安装教程
                                                              【大数据】分布式数据库HBase下载安装教程
                                                              26 0
                                                              |
                                                              13天前
                                                              |
                                                              存储 缓存 大数据
                                                              【大数据】分布式数据库HBase
                                                              【大数据】分布式数据库HBase
                                                              40 0
                                                              |
                                                              1月前
                                                              |
                                                              消息中间件 分布式计算 大数据
                                                              大数据组件之storm简介
                                                              大数据组件之storm简介
                                                              31 2
                                                              |
                                                              1月前
                                                              |
                                                              监控 大数据 数据处理
                                                              大数据组件之Storm简介
                                                              【5月更文挑战第2天】Apache Storm是用于实时大数据处理的分布式系统,提供容错和高可用的实时计算。核心概念包括Topology(由Spouts和Bolts构成的DAG)、Spouts(数据源)和Bolts(数据处理器)。Storm通过acker机制确保数据完整性。常见问题包括数据丢失、性能瓶颈和容错理解不足。避免这些问题的方法包括深入学习架构、监控日志、性能调优和编写健壮逻辑。示例展示了实现单词计数的简单Topology。进阶话题涵盖数据延迟、倾斜的处理,以及Trident状态管理和高级实践,强调调试、性能优化和数据安全性。
                                                              32 4
                                                              |
                                                              1月前
                                                              |
                                                              存储 分布式计算 Java
                                                              大数据存储技术(3)—— HBase分布式数据库
                                                              大数据存储技术(3)—— HBase分布式数据库
                                                              206 0
                                                              |
                                                              1月前
                                                              |
                                                              数据采集 搜索推荐 Java
                                                              【大数据实训】用Hbase模拟电影搜索引擎(四)
                                                              【大数据实训】用Hbase模拟电影搜索引擎(四)
                                                              70 1

                                                              热门文章

                                                              最新文章