HBase--技术文档--基本概念--《快速扫盲》

官网

Apache HBase – Apache HBase™ Home

阿里云hbase

云数据库HBase_大数据存储_订单风控_数据库-阿里云

云数据库 HBase-阿里云帮助中心

基本概念

        HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可以提供实时计算和分布式访问。HBase的数据模型是稀疏排序映射表,其中键由行关键字、列关键字和时间戳构成。HBase的目标是存储并处理大型数据、支持对大规模数据的随机和实时读写访问。即使在普通的硬件配置上,HBase也能够处理上亿的行和几百万的列所组成的超大型数据库。

Hadoop

        Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是专为离线和大规模数据分析而设计的。Hadoop通常被用于处理半结构化和非结构化数据,相比关系型数据库,它在处理这些类型的数据时具有更好的性能和灵活性。Hadoop的核心设计是HDFS和MapReduce。HDFS提供了在集群服务器上分布式存储文件的能力,而MapReduce提供了在集群服务器上分布式处理数据的能力。因此,Hadoop非常适合处理海量数据。

HDFS和MapReduce

        HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。MapReduce为分布式计算框架,包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。

稀疏排序映射表

        HBase的稀疏排序映射表是一种数据模型,它类似于BigTable的数据模型。在HBase中,数据以键值对的形式存储,并且这些键值对按照键的顺序进行排列和存储。这种数据模型是稀疏的,因为并不是所有的列都会在每个行中出现,也就是说,每个行可以具有不同的列。同时,这种数据模型也是排序的,因为键值对按照键进行排序。这种数据模型使得HBase能够高效地处理大量的数据,并且能够快速地执行随机读写操作。

        每个值是一个未经解释的字符串,没有数据类型

        表中存储数据,每一行都有一个可排序的行键和任意多的列

表:HBase采用表来组织数据,表是由行和列组成的,列划分为若干个列族

行:每个HBase表都由若干行组成,每个行由行键(row key)来标识

列族:一个HBase表备份组成许多"列族"(Column Family)的集合,他是基本的访问控制单元

列限定符:列族里的数据通过列限定符(或例)来定位

单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]

时间戳:每个单元格都保存着一份数据的多个版本,这些版本采用时间戳进行索引

HBase使用场景

HBase的使用场景包括以下几种:

  1. 平台类:HBase可以作为数据存储,捕获来自于各种数据源的增量数据。这种场景下存放的往往是平台的数据,有时候甚至是无业务含义的,作为平台的底层存储使用。
  2. 内容服务类:这类主要面向各种业务系统,将数据直接存放到HBase中,再读取。这种场景需要支持千万级别的并发访问及读取,并需要解决服务质量的问题。这种应用场景通常业务简单,不需要关系型数据库中的很多特性。
  3. 信息展示类:通过HBase的高存储,高吞吐等特性,可以将人们感兴趣的信息快速展现出来,例如阿里巴巴的天猫双十一大屏。

此外,对于需要存储大量结构化或非结构化数据,数据量越来越大,传统数据库无法满足需求的情况,HBase也是一个很好的选择。

HBase的使用原因

HBase的使用原因主要有以下几点:

  1. HBase是一个构建在HDFS上的分布式列存储系统,具有高可靠、高性能、分布式和面向列的动态模式等优点。
  2. HBase基于Google BigTable模型开发,具有典型的key/value系统特点,能够提供大规模数据的随机、实时读写访问。
  3. HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
  4. HBase与传统数据库相比,具有线性扩展、数据存储在HDFS上、备份机制健全和通过zookeeper协调查找数据等优势,能够解决传统数据库面临的问题,例如数据量很大的时候无法存储、没有很好的备份机制、数据达到一定数量开始缓慢等。

因此,HBase是一个适合于处理大量结构化或非结构化数据,且需要高可靠、高性能、分布式和动态模式的数据库系统

HBase的同类产品列举

HBase的同类型产品包括以下几种:

  1. CouchDB:一个开源的面向文档的数据库系统,采用Erlang语言编写,与HBase类似,也支持面向列的存储和二级索引。
  2. Cassandra:一个开源的、高度可分布的、面向列的数据库系统,最初由Facebook开发,用于处理实时数据。
  3. Hypertable:一个开源的、高性能的、面向列的数据库系统,采用C++语言编写,与HBase类似,适用于大规模数据存储和实时数据处理。
  4. Accumulo:一个开源的、可分布的、面向列的键值存储系统,由美国国家安全局(NSA)开发,具有高度安全性和高性能。

这些产品与HBase在某些方面具有相似之处,如面向列的存储、高性能、分布式等,但各自也有其独特的特点和适用场景。

Hbase同类型产品特性与Hbase对比-技术选型帮助

        与CouchDB相比,HBase在数据模型和查询语言方面有所不同。HBase是基于列的存储,而CouchDB是基于文档的存储,支持更丰富的数据结构。此外,HBase的查询语言相对简单,而CouchDB具有更强大的查询功能。

        与Cassandra相比,HBase和Cassandra都是面向列的数据库系统,但它们在数据模型、查询语言和性能方面有所不同。HBase支持随机访问和实时读取,而Cassandra更适合于大量数据的批处理。此外,HBase支持二级索引,而Cassandra具有自己的索引机制。

        与Hypertable相比,HBase和Hypertable都是面向列的数据库系统,但它们在实现语言、性能和扩展性方面有所不同。Hypertable采用C++语言编写,而HBase采用Java语言编写。此外,Hypertable在性能和扩展性方面可能具有优势,适用于大规模数据存储和实时数据处理。

        与Accumulo相比,HBase和Accumulo都是面向列的键值存储系统,但它们在实现语言、数据模型和安全性方面有所不同。Accumulo采用C++语言编写,而HBase采用Java语言编写。此外,Accumulo具有更高的安全性,由美国国家安全局开发,适用于高度安全性的应用场景。

综上所述,HBase和同类型产品在数据模型、性能、扩展性、数据一致性、数据存储和处理等方面有所不同,需要根据具体的业务需求进行评估和选择。

Hbase版本更新以及特性

HBase是一个分布式、可扩展的、面向列的数据库系统,是Apache Hadoop生态系统的一部分。随着Hadoop和Hadoop生态系统的不断发展,HBase也在不断更新和改进。

以下是一些HBase版本的主要更新和特性:

  1. HBase 0.98.0:这个版本引入了一种新的API,即HBase Shell,以及一些新的表选项。此外,这个版本还改进了性能和稳定性,包括对大表的支持和对二级索引的改进。
  2. HBase 1.0:这个版本引入了一种新的数据模型,即面向列的存储。此外,该版本还提供了新的API、改进的性能和稳定性、更好的大表支持以及对非关系型数据的支持。
  3. HBase 2.0:这个版本引入了全局版本控制的特性,允许在整个表中设置版本号。此外,该版本还增加了对ACID事务的支持、改进的湖到货(Lake-to-Lake Solution)集成以及对多租户的支持。
  4. HBase 2.1:这个版本主要解决了在HBase 2.0版本中引入的ACID事务的问题,并进一步提高了性能和稳定性。
  5. HBase 2.2:这个版本增加了对轻量级事务的支持、改进的数据管理能力以及对HBase经济学仪表板(HBase Economy Dashboard)的支持。
  6. HBase 2.3:这个版本引入了一种新的存储格式,即HFilev5,以及一些新的特性,如数据块压缩、时间戳增量和虚拟列族。
  7. HBase 3.0:这个版本主要改进了性能和稳定性,并增加了一些新的特性,如全局读一致性、对压缩和加密的改进以及对本地客户端(Native Client)的支持。

这些更新和特性反映了HBase不断发展和改进的过程,也为用户提供了更好的性能、稳定性和功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【conda install】网络慢导致报错CondaHTTPError: HTTP 000 CONNECTION FAILED for url

⭐⭐问题&#xff1a; 部署安装环境经常会出现由于网络慢问题&#xff0c;导致conda安装不了库&#xff0c;报错如下&#xff1a; Solving environment: failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/…

海康威视相机-LINUX SDK 开发

硬件与环境 相机&#xff1a; MV-CS020-10GC 系统&#xff1a;UBUNTU 22.04 语言&#xff1a;C 工具&#xff1a;cmake 海康官网下载SDK 运行下面的命令进行安装 sudo dpkg -i MVSXXX.deb安装完成后从在/opt/MVS 路径下就有了相关的库&#xff0c;实际上我们开发的时候只需要…

专业制造一体化ERP系统,专注于制造工厂生产管理信息化,可定制-亿发

制造业是国民经济的支柱产业&#xff0c;对于经济发展和竞争力至关重要。在数字化和智能化趋势的推动下&#xff0c;制造业正处于升级的关键时期。而ERP系统&#xff0c;即企业资源计划系统&#xff0c;能够将企业的各个业务环节整合起来&#xff0c;实现资源的有效管理和信息的…

攻击与防御实战经验分享:分析真实的攻击事件和入侵行为,讨论防御方法和实践经验

章节 1: 前言 作为IT领域的从业者&#xff0c;我们时刻都面临着网络安全的挑战。攻击者不断寻找漏洞&#xff0c;而防御者则需要时刻保持警惕&#xff0c;采取最佳实践来保护系统和数据。在本文中&#xff0c;我们将分享一些真实的攻击事件和入侵行为&#xff0c;并探讨针对这…

LInux之chrony服务器

目录 场景 重要性 LInux的两个时钟 硬件时钟 系统时钟 NTP协议 Chrony介绍 定义 组成 --- chronyd和chronyc 安装与配置 安装 Chrony配置文件分析 同步时间服务器 chronyc命令 chronyc sources输出分析 其它命令 查看时间服务器的状态 查看时间服务器是否在线 …

如何解决索引分裂问题?

索引分裂 索引块快写满时就会发生索引分裂&#xff0c;索引分裂分为两种情况&#xff0c;55和91&#xff1a; 索引分裂和enq: TX - index contension等待事件的区别 无论是55还是91&#xff0c;都是数据增多后索引的正常行为&#xff0c;索引分裂是业务数据量增大导致索引增大…

③matlab向量和矩阵

目录 手动输入数组 创建等间距向量 数组创建函数 手动输入数组 1.背景 单个称为标量的数值实际上是一个 11 数组&#xff0c;也即它包含 1 行 1 列。 任务 创建一个名为 x 并且值为 4 的变量。 2.您可以使用方括号创建包含多个元素的数组。 x [3 5] x 3 5 任务 …

华为云Stack的学习(二)

三、华为云Stack产品组件 FunsionSphere CPS 提供云平台的基础管理和业务资源&#xff08;包括计算资源和存储资源&#xff09;。采用物理服务器方式部署在管理节点。可以做集群的配置&#xff0c;扩容和运维管理。 Service OM 提供云服务的运维能力&#xff0c;采用虚拟化方…

数字孪生:重塑制造、医疗和能源等领域的未来

数字孪生技术&#xff0c;作为虚拟仿真的重要领域&#xff0c;正以其强大的能力在各个行业中创造前所未有的创新。本文带大家一起深入探讨数字孪生技术在不同领域的广泛应用场景&#xff0c;展示其在实现效率、可靠性和智能化方面的积极影响。 制造业与工业领域 数字孪生技术在…

MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍

一&#xff0c;分页的概念 分页是一种将大量数据或内容分割成多个页面以便逐页显示的方式。在分页中&#xff0c;数据被分割成一定数量的页&#xff0c;每页显示一部分数据或内容&#xff0c;用户可以通过翻页或跳分页是一种将大量数据或内容分割成多个页面以便逐页显示的方式。…

JavaScript—DOM(文档对象模型)

目录 DOM是什么&#xff1f; DOM有什么作用&#xff1f; 一、事件 理解事件 事件怎么写&#xff08;要做什么就写什么&#xff09;&#xff1f; 实战演练 1、页面加载完毕以后&#xff0c;打印一句话 2、如果有一个a标签&#xff0c;并给其添加一个点击事件 3、事件默…

1、监测数据采集物联网应用开发步骤(1)

项目介绍 本文章编写目的针对下图中《。。。解决方案》所涉及的开发资料&#xff1b; 监测数据采集物联网应用解决方案_yong427的博客-CSDN博客 开发步骤实现从0开始搭建软件框架&#xff0c;该开发步骤基于python3.0语言及相关工具实现&#xff0c;阅读本文章之前请先初步百…

特斯拉启动墨西哥建厂计划,引发台厂竞逐 | 百能云芯

特斯拉&#xff08;Tesla&#xff09;在墨西哥新工厂计划备受瞩目&#xff0c;据外媒报道&#xff0c;墨西哥的超级工厂似乎正在迈出实质性的步伐。包括鸿海集团、广达&#xff08;Foxconn&#xff09;、和大在墨西哥和美墨边境都计划扩大电动车零配件生产基地。 市场对特斯拉在…

LeetCode-406-根据身高重建队列

题目描述&#xff1a; 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造…

MySQL中的free链表,flush链表,LRU链表

一、free链表 1、概述 free链表是一个双向链表数据结构&#xff0c;这个free链表里&#xff0c;每个节点就是一个空闲的缓存页的描述数据块的地址&#xff0c;也就是说&#xff0c;只要你一个缓存页是空闲的&#xff0c;那么他的描述数据块就会被放入这个free链表中。 刚开始数…

Markdown 扩展语法练习

风无痕 August 26, 2023 Markdown 指南中文版 Markdown 入门指南Markdown 基本语法Markdown 扩展语法Markdown 基本语法练习Markdown 扩展语法练习 代码 <h3 id"table">表格</h3>| Syntax | Description | | --- | --- | | Header | Title | | Paragrap…

【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}

map和set的介绍和使用 一、关联式容器 关联式容器和序列式容器是C STL中的两种不同类型的容器。 关联式容器是基于键值对的容器&#xff0c;其中每个元素都有一个唯一的键值&#xff0c;可以通过键值来访问元素。关联式容器包括set、multiset、map和multimap。 序列式容器是…

单核cpu是怎么处理多线程的

首先&#xff0c;要先了解几个概念&#xff1a; 1、线程是CPU调度和分配的基本单位。 2、进程是操作系统进行资源分配&#xff08;包括cpu、内存、磁盘IO等&#xff09;的最小单位 。 3、一个进程可以包括多个线程。 4、CPU的时间片是由计算机的操作系统OS里的调度器分配的. …

NFTScan | 08.21~08.27 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。周期&#xff1a;2023.08.21~ 2023.08.27 NFT Hot News 01/ NFT 品牌体验平台 Recur 将于 11 月 16 日彻底关闭&#xff0c;此前曾获 5000 万美元融资 8 月 21 日&#xff0c;NFT 品牌体验平台 Recur 在 X…

Oracle创建控制列表ACL(Access Control List)

Oracle创建控制列表ACL&#xff08;Access Control List&#xff09; Oracle ACL简介一、先登陆163邮箱设置开启SMTP。二、Oracle ACL控制列表处理&#xff08;一&#xff09;创建ACL&#xff08;create_acl&#xff09;&#xff08;二&#xff09;添加ACL权限&#xff08;add_…