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的使用场景包括以下几种:
- 平台类:HBase可以作为数据存储,捕获来自于各种数据源的增量数据。这种场景下存放的往往是平台的数据,有时候甚至是无业务含义的,作为平台的底层存储使用。
- 内容服务类:这类主要面向各种业务系统,将数据直接存放到HBase中,再读取。这种场景需要支持千万级别的并发访问及读取,并需要解决服务质量的问题。这种应用场景通常业务简单,不需要关系型数据库中的很多特性。
- 信息展示类:通过HBase的高存储,高吞吐等特性,可以将人们感兴趣的信息快速展现出来,例如阿里巴巴的天猫双十一大屏。
此外,对于需要存储大量结构化或非结构化数据,数据量越来越大,传统数据库无法满足需求的情况,HBase也是一个很好的选择。
HBase的使用原因
HBase的使用原因主要有以下几点:
- HBase是一个构建在HDFS上的分布式列存储系统,具有高可靠、高性能、分布式和面向列的动态模式等优点。
- HBase基于Google BigTable模型开发,具有典型的key/value系统特点,能够提供大规模数据的随机、实时读写访问。
- HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
- HBase与传统数据库相比,具有线性扩展、数据存储在HDFS上、备份机制健全和通过zookeeper协调查找数据等优势,能够解决传统数据库面临的问题,例如数据量很大的时候无法存储、没有很好的备份机制、数据达到一定数量开始缓慢等。
因此,HBase是一个适合于处理大量结构化或非结构化数据,且需要高可靠、高性能、分布式和动态模式的数据库系统
HBase的同类产品列举
HBase的同类型产品包括以下几种:
- CouchDB:一个开源的面向文档的数据库系统,采用Erlang语言编写,与HBase类似,也支持面向列的存储和二级索引。
- Cassandra:一个开源的、高度可分布的、面向列的数据库系统,最初由Facebook开发,用于处理实时数据。
- Hypertable:一个开源的、高性能的、面向列的数据库系统,采用C++语言编写,与HBase类似,适用于大规模数据存储和实时数据处理。
- 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版本的主要更新和特性:
- HBase 0.98.0:这个版本引入了一种新的API,即HBase Shell,以及一些新的表选项。此外,这个版本还改进了性能和稳定性,包括对大表的支持和对二级索引的改进。
- HBase 1.0:这个版本引入了一种新的数据模型,即面向列的存储。此外,该版本还提供了新的API、改进的性能和稳定性、更好的大表支持以及对非关系型数据的支持。
- HBase 2.0:这个版本引入了全局版本控制的特性,允许在整个表中设置版本号。此外,该版本还增加了对ACID事务的支持、改进的湖到货(Lake-to-Lake Solution)集成以及对多租户的支持。
- HBase 2.1:这个版本主要解决了在HBase 2.0版本中引入的ACID事务的问题,并进一步提高了性能和稳定性。
- HBase 2.2:这个版本增加了对轻量级事务的支持、改进的数据管理能力以及对HBase经济学仪表板(HBase Economy Dashboard)的支持。
- HBase 2.3:这个版本引入了一种新的存储格式,即HFilev5,以及一些新的特性,如数据块压缩、时间戳增量和虚拟列族。
- HBase 3.0:这个版本主要改进了性能和稳定性,并增加了一些新的特性,如全局读一致性、对压缩和加密的改进以及对本地客户端(Native Client)的支持。
这些更新和特性反映了HBase不断发展和改进的过程,也为用户提供了更好的性能、稳定性和功能。
相关文章:

HBase--技术文档--基本概念--《快速扫盲》
官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可…...

如何利用SFTP协议远程实现更安全的文件传输 ——【内网穿透】
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《cpolar》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 安装openSSH1.1 安装SSH1.2 启动ssh 2. 安装cpolar2.1 配置termux服务 3. 远程SFTP连接配置3.1 查看生成的随机公…...

深度学习8:详解生成对抗网络原理
目录 大纲 生成随机变量 可以伪随机生成均匀随机变量 随机变量表示为操作或过程的结果 逆变换方法 生成模型 我们试图生成非常复杂的随机变量…… …所以让我们使用神经网络的变换方法作为函数! 生成匹配网络 培养生成模型 比较基于样本的两个概率分布 …...

sql入门-多表查询
案例涉及表 ----------------------------------建表语句之前翻看之前博客文章 多表查询 -- 学生表 create table studen ( id int primary key auto_increment comment id, name varchar(50) comment 姓名, no varchar(10) comment 学号 ) comment 学生表; insert…...

软考A计划-网络工程师-必考知识点-上
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
kafka复习:(17)seekToBeginning的用法
从分区的开始进行消费,因为kafka会定期清理历史数据,所以分区开始的位移不一定为0。seekToBeginning只是从目前保留的数据中最小的offset进行消费 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consume…...

C# textBox1.Text=““与textBox1.Clear()的区别
一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容,但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容,并将文本框显示为空…...

CnetSDK .NET OCR SDK Crack
CnetSDK .NET OCR SDK Crack CnetSDK.NET OCR库SDK是一款高度准确的.NET OCR扫描仪软件,用于使用手写、文本和其他符号等图像进行字符识别。它是一款.NET OCR库软件,使用Tesseract OCR引擎技术,可将字符识别准确率提高99%。通过将此.NET OCR扫…...
Python最新面试题汇总及答案
一、基础部分 1、什么是Python?为什么它会如此流行?Python是一种解释的、高级的、通用的编程语言。Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。它之所以受欢迎,就是因为它具有简单易用的语法 2、为什么Pytho…...

设计模式(单例模式,工厂模式),线程池
目录 什么是设计模式? 单例模式 饿汉模式 懒汉模式 工厂模式 线程池 线程池种类 ThreadPoolExcutor的构造方法: 手动实现一个线程池 什么是设计模式? 计算机行业程序员水平层次不齐,为了让所有人都能够写出规范的代码,于是就有了设计模式,针对一些典型的场景,给出一…...
在mybatis中的mapper.xml中如何使用parameterType实现方法单个传参,对象传参,多参数传参.
在MyBatis的mapper.xml文件中,可以使用parameterType属性来指定方法的参数类型。parameterType属性用于指定传递给映射方法的参数类型,这将影响到MyBatis在映射方法执行时如何处理参数。 以下是三种不同情况下如何在mapper.xml中使用parameterType实现方…...

No120.精选前端面试题,享受每天的挑战和学习
文章目录 浏览器强制缓存和协商缓存cookie,localStorage、sessionStoragejs闭包,原型,原型链箭头函数和普通函数的区别promise的状态扭转 浏览器强制缓存和协商缓存 浏览器缓存是浏览器用于提高网页加载速度的一种机制。浏览器缓存分为强制缓…...
c# 访问sqlServer数据库时的连接字符串
//sql server 身份验证的场合, 连接字符串 private string ConnstrSqlServer "server服务器名称;uid登录名称;pwd登录密码;database数据库名称"; //windows 身份验证连接字符串 private string ConnstrWindows "server服务器名称;database数据库…...
排序算法概述
1.排序算法分类 **比较类算法排序:**通过比较来决定元素的时间复杂度的相对次序,由于其时间复杂度不能突破 O ( n l o g n ) O(nlogn) O(nlogn),因此也称为非线性时间比较类算法 **非比较类算法排序:**不通过比较来决定元素间的…...

ChatGPT在高等教育中的应用利弊探讨
人工智能在教育领域的应用日益广泛。2022年11月OpenAI开发的聊天机器人ChatGPT在全球范围内流传开来,其中用户数量最多的国家是美国(15.22%)。由于ChatGPT应用广泛,具有类似人类回答问题的能力,它正在成为许多学生和教育工作者的可信赖伙伴…...

Java之API详解之Runtime的详细解析
3.1 概述 Runtime表示Java中运行时对象,可以获取到程序运行时设计到的一些信息 3.2 常见方法 常见方法介绍 我们要学习的Object类中的常见方法如下所示: public static Runtime getRuntime() //当前系统的运行环境对象 public void exit(int statu…...
机器学习之softmax
Softmax是一个常用于多类别分类问题的激活函数和归一化方法。它将一个向量的原始分数(也称为 logits)转换为概率分布,使得每个类别的概率值在0到1之间,同时确保所有类别的概率之和等于1。Softmax函数的定义如下: 对于…...
npm script命令
1 串行/并行执行命令 //串行 npm-run-all text test npm run text && npm run test //并行改成& npm-run-all --parallel text test npm run text & npm run test2 传递参数 {"lint": "eslint js/*.js","lint:fix":…...
【力扣周赛】第360场周赛
【力扣周赛】第360场周赛 8015.距离原点最远的点题目描述解题思路 8022. 找出美丽数组的最小和题目描述解题思路 8015.距离原点最远的点 题目描述 描述:给你一个长度为 n 的字符串 moves ,该字符串仅由字符 ‘L’、‘R’ 和 ‘_’ 组成。字符串表示你在…...
php环境变量的配置步骤
要配置PHP的环境变量,以便在命令行中直接使用php命令,以下是一般的步骤: Windows 操作系统 下载和安装PHP:首先,你需要从PHP官方网站(https://www.php.net/downloads.php)下载适用于你的操作系…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...