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

  • 相关阅读:
    JS在线编辑器
    meta标签
    webstorm快捷键
    微信JS-SDK调用
    iOS -- UIApplication
    Xcode -- apple llvm 6.0 error错误如何解决
    C -- 字符串数组与字符串指针
    MAC -- 小技巧
    C语言 -- 折半查找小程序
    C -- 小程序
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165469.html
Copyright © 2011-2022 走看看