HBase 架构概念及读写思想

本贴最后更新于 2931 天前,其中的信息可能已经事过境迁

1.hbase的架构概念

    1)region,可以理解为是hbase的分区,根据rowkey存储在不同的region上

    2)region作用就是存储,默认情况下,表一开始只有一个region

    3)region完整的名称:nstest:tb1,,1490500444471.6ad4560a25870f82a0f604b1275c72d4.(在60010端口浏览器下查看)

    4)region唯一被一台regionserver所管理(节点机器)

            regionserver专门存储hbase数据的

            最小的存储单元就是region,根据rowkey的不同存储在不同的region上,那么这个region就会被分到不同的regionserver上

            一个regionserver可以管理多个区,等分成两个新的region,那原来的region就没有了

            如果某台机器的负载很空,那么有可能两个region都会被分配到这台机器上

            虽然等分了,但是仍然属于那张表

            最小的单元,底层字节。按字节存储

            每一个store又表示的是一个列簇

            memstore就是内存中划分的一个区间

            storefile就是底层存储的文件

        regionserver -> region -> 多个store(列簇)->memstore和多个storefile

        WALs-》记录日志(比如:put、delete等操作行为都会记录在这个日志文件中)

    5)目录结构

            namespace -> table -> region -> 列簇store -> storefile

    6)Hlog file-》预写日志

            存储的时候会先往log中存储一份,再往内存中写

            作用:避免机器当机内存数据丢失

            可以通过预写日志文件来进行恢复

            Hfile(store file)&Hlog file

            flush 手动干预-》底层实现的就是Hfile

    7)用户写入的过程

            compaction操作

            split操作-》region分割过程

            region ->input data ->storefile*n -> 合并大文件compaction操作

    8)hbase:namespace这张表记录的rowkey是当前hbase中的所有namespace

        hbase:meta这张表记录元数据


2.读写的思想

        读:

            1)根据表名和rowkey找到对应的region

            2)zookeeper存储了meta表的region信息

            3)从meta表中获取相应的region的信息

            4)找到对应的regionserver

            5)查找对应的region

        写:

            1)根据表名和rowkey找到对应的region

            2)zookeeper存储了meta表的region信息

            3)从meta表中获取相应的region的信息

            4)找到对应的regionserver

            5)正常的情况

                    WAL预写日志,一个regionserver维护一个hlog

                    memstore内存中去写(必须达到一定大小或者时间才会溢写,flush到磁盘)-》storefile

                    版本的合并其实指的就是值的更新

            6)考虑范围:startkey&endkey

            7)zookeeper存储了meta表的region信息

            8)无论是检索还是插入数据都必须要给一个tbname

            9)无论是检索还是插入数据都必须要给一个rowkey

            10)rowkey存储在region的,先要找到rowkey在哪

            11)得到region信息,就获取region被哪台regionserver所管理

            12)根据系统meta表元数据去查找

        

  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖 • 1 关注
  • region
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 250 关注
  • 自由行
    3 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 568 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 35 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 609 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    410 引用 • 3588 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖
  • 996
    13 引用 • 200 回帖 • 3 关注
  • sts
    2 引用 • 2 回帖 • 227 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 84 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 494 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 384 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 678 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 10 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • OpenCV
    15 引用 • 36 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 554 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 679 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    226 引用 • 476 回帖
  • OneNote
    1 引用 • 3 回帖 • 3 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 667 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 395 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 16 关注