zoukankan      html  css  js  c++  java
  • 一条数据的HBase之旅,简明HBase入门教程1:开篇

    【摘要】 这是HBase入门系列的第1篇文章,主要介绍HBase当前的项目活跃度以及搜索引擎热度信息,以及一些概况信息,内容基于HBase 2.0 beta2版本。本系列文章既适用于HBase新手,也适用于已有一定经验的HBase开发人员。

    华为云上的NoSQL数据库服务CloudTable,基于Apache HBase,提供全托管式集群服务,集成了时序数据库OpenTSDB与时空数据库GeoMesa,在TB/PB级别的海量数据背景下,可提供ms级查询以及千万级TPS,点我了解详情

    这是HBase入门系列的第1篇文章,主要介绍HBase当前的项目活跃度以及搜索引擎热度信息,以及一些概况信息,内容基于HBase 2.0 beta2版本。本系列文章既适用于HBase新手,也适用于已有一定经验的HBase开发人员。

    一些常见的HBase新手问题

    • 什么样的数据适合用HBase来存储?

    • 既然HBase也是一个数据库,能否用它将现有系统中昂贵的Oracle替换掉?

    • 存放于HBase中的数据记录,为何不直接存放于HDFS之上?

    • 能否直接使用HBase来存储文件数据?

    • Region(HBase中的数据分片)迁移后,数据是否也会被迁移?

    • 为何基于Spark/Hive分析HBase数据时性能较差?

    开篇

    用惯了Oracle/MySQL的同学们,心目中的数据表,应该是长成这样的:

    这种表结构规整,每一行都有固定的列构成,因此,非常适合结构化数据的存储。但在NoSQL领域,数据表的模样却往往换成了另外一种"画风":

    行由看似"杂乱无章"的列组成,行与行之间也无须遵循一致的定义,而这种定义恰好符合半结构化数据或非结构化数据的特点。本文所要讲述的HBase,就属于该派系的一个典型代表。这些"杂乱无章"的列所构成的多行数据,被称之为一个"稀疏矩阵",而上图中的每一个"黑块块",在HBase中称之为一个KeyValue。

    Apache HBase官方给出了这样的定义:

        Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.

    即:Apache HBase是基于Hadoop构建的一个分布式的、可伸缩的海量数据存储系统。

    HBase常被用来存放一些结构简单,但数据量非常大的数据(通常在TB级别以上),如历史订单记录,日志数据,监控Metris数据等等,HBase提供了简单的基于Key值的快速查询能力。

    HBase在国内市场已经取得了非常广泛的应用,在搜索引擎中,也可以看出来,HBase在国内呈现出了逐年上升的势态:

    从Apache HBase所关联的github项目的commits统计信息来看,也可以看出来该项目非常活跃:

    (需要说明的一点:HBase中的每一次commit,都已经过社区Commiter成员严格的Review,在commit之前,一个Patch可能已经被修改了几十个版本)

    令人欣喜的是,国内的开发者也积极参与到了HBase社区贡献中,而且被社区接纳了多名PMC以及Committer成员。

    本文将以一条数据在HBase中的“旅程”为线索,介绍HBase的核心概念与流程,几乎每一部分都可以展开成一篇独立的长文,但本文旨在让读者能够快速的了解HBase的架构轮廓,所以很多特性/流程被被一言带过,但这些特性在社区中往往经历了漫长的开发过程。至于讲什么以及讲到什么程度,本文都做了艰难的取舍,在讲解的过程中,将会穿插解答本文开始所提出的针对初学者的一些常见问题。

    本系列文章适用于HBase新手,而对于具备一定经验的HBase开发人员,相信本文也可以提供一些有价值的参考。本文内容基于HBase 2.0 beta 2版本,对比于1.0甚至是更早期的版本,2.0出现了大量变化,下面这些问题的答案与部分关键的变化相关(新手可以直接跳过这些问题):

    • HBase meta Region在哪里提供服务?

    • HBase是否可以保证单行操作的原子性

    • Region中写WAL与写MemStore的顺序是怎样的?

    • 你是否遇到过Region长时间处于RIT的状态? 你认为旧版本中Assignment Manager的主要问题是什么?

    • 在面对Full GC问题时,你尝试做过哪些优化?

    • 你是否深究过HBase Compaction带来的“写放大”有多严重?

    • HBase的RPC框架存在什么问题?

    • 导致查询时延毛刺的原因有哪些?

    本系列文章的整体行文思路如下:

    • 介绍HBase数据模型

    • 基于数据模型介绍HBase的适用场景

    • 快速介绍集群关键角色以及集群部署建议

    • 示例数据介绍

    • 写数据流程

    • 读数据流程

    • 数据更新

    • 负载均衡机制

    • HBase如何存储小文件数据

    这些内容将会被拆成一系列文章。至于集群服务故障的处理机制,集群工具,周边生态,性能调优以及最佳实践等进阶内容,暂不放在本系列文章范畴内。

    作者:Jaison

  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165469.html
Copyright © 2011-2022 走看看