大数据——一文熟悉HBase

news2025/1/16 16:05:38

1、HBase是什么

HBase是基于HDFS的数据存储,它建立在HDFS文件系统上面,利用了HDFS的容错能力,内部还有哈希表并利用索引,可以快速对HDFS上的数据进行随时读写功能。
在这里插入图片描述

Hadoop在已经有一个Hive+MapReduce结构的数据读写功能,为什么还要HBase呢?我们在使用Hive的过程中也发现,MapReduce的过程很慢,不适合实时的读写访问,更多的时候是进行线下的访问。但在实际应用过程中,我们需要对大数据进行实时的读写,这时候HBase就派上用场。
HBase使用场景
HBase适合在瞬间写入量大,大量数据需要长期保存,并且数量会持续增长的场景。但在多级索引和关系复杂的数据模型,还有跨行事务场景也不适合HBase。

2、HBase怎么工作

HBase基础架构

在这里插入图片描述
Client

  • 与Zookeeper进行通信,获取数据入口地址;
  • 与HMaster通信进行管理类操作;
  • 与HRegionServer进行数据读写操作。

Zookeeper

  • 避免单点问题,一直只有running master;
  • 存储所有Region的地址,包括HMaster地址;
  • 监控HRegionServer的状态,并告知HMaster;
  • 存储Table名和Column Family

HMaster

  • 有多个HMaster,通过Zookeeper保证有一个在运行;
  • 为HRegionServer分类Region;
  • 有HRegionServer失效,重新分配;
  • 对HDFS的垃圾文件进行回收;
  • 处理用户对表的增删改查操作;

HRegionServer

  • HBase核心部分,负责I/O请求,并先HDFS读写数据;
  • 维持HMaster分配的Region,并处理Region的I/O请求;
  • 切分在运行过程中变大的Region;
  • HRegionServer中有一系列HRegion对象,每个HRegion对应Table中的一个Region,每个HRegion由多个Store组成,每个HStore对应Table中的Column Family。

Column Family是HBase的存储单元,所以相同特性的Column放在一个Column Family更高效。

HStore

  • HBase存储的核心,由MemStore和StoreFile组成;

HRegion

  • 一个Table最开始的时候是一个Region;
  • 一个Region可以有多个Store,每个Store用来存储一个Column Family;
  • Region随着数据的越来越多,会进行拆分,由HRegionServer进行拆分,默认大小为10G。

HLog

  • 备份和日志,在系统出错和宕机时,MemStore的数据会丢失,而HLog可以防止该情况。

HBase写数据流程
在这里插入图片描述

HBase数据模型

在这里插入图片描述

  • NameSpace:数据库的库名;
  • Table表:HBase的表,由于对于值为空的列不占空间,因此表可以比较稀疏;
  • Row行:每一行都有一个RowKey来进行识别;
  • RowKey行键:类似于MySQL中的主键,用来进行检索数据;
  • Column列:由Column family和Column qualifier组成,两者用;进行间隔;
  • ColumnFamily列族:列的集合,每个表的列族都以一个文件存储,一个表可以有多个列族;
  • ColumnQualifier列标识:类似于键值对,key是RowKey,那么ColumnQualifier就是Value;
  • TimeStamp时间戳:是具有时间属性的列,每个数据都有一个时间戳属性,也就是说数据具有版本特性;
  • Region区域:HBase可以自动把表划分为多个区域,随着数据的增多区域也变多。

3、HBase的Shell操作

  1. HBase启动

找到zkServer.sh启动Zookeeper

zkServer.sh start

启动HBase

start-hbase.sh
  1. HBase常见Shell操作

连接集群

hbase shell

创建表

create 'user','base_info'# 第一个为表名,第二个为列族

删除表

disable 'user'
drop 'user'

创建数据库

create_namespace 'test' #test为数据库名

展示所有数据库

list_namespace

显示表

list

插入数据
put ‘表名’,‘rowkey的值’,’列族:列标识符‘,’值‘

put 'user','rowkey_10','base_info:username','Tom'

查询表中所有数据

scan 'user' # 很少使⽤全表查询 scan会加上⼀些条件限制

Scan查询中添加限制条件

scan '名称空间:表名', {COLUMNS => ['列族名1', '列族名2'], LIMIT => 10, STARTROW =>'起始的rowkey'}

scan查询添加过滤器
ROWPREFIXFILTER rowkey 前缀过滤器

scan 'user', {ROWPREFIXFILTER=>'rowkey_22'}

查询某个rowkey的数据

get 'user','rowkey_16'

删除表中的数据

delete 'user', 'rowkey_16', 'base_info:username'

清空数据

truncate 'user'

指定显示多个版本

get 'user','rowkey_10',{COLUMN=>'base_info:username',VERSIONS=>2}

修改可以显示的版本数量

alter 'user',NAME=>'base_info',VERSIONS=>10

通过TIMERANGE 指定时间范围

scan 'user',{COLUMNS => 'base_info', TIMERANGE => [1558323139732,1558323139866]}
get 'user','rowkey_10',{COLUMN=>'base_info:username',VERSIONS=>2,TIMERANGE=> [1558323904130, 1558323918954]}

通过时间戳过滤器 指定具体时间戳的值

scan 'user',{FILTER => 'TimestampsFilter (1558323139732, 1558323139866)'}
get 'user','rowkey_10',{COLUMN=>'base_info:username',VERSIONS=>2,FILTER =>'TimestampsFilter (1558323904130, 1558323918954)'}

获取最近多个版本的数据

get 'user','rowkey_10',{COLUMN=>'base_info:username',VERSIONS=>10}

通过指定时间戳获取不同版本的数据

get 'user','rowkey_10',
{COLUMN=>'base_info:username',TIMESTAMP=>1558323904133}

命令表
在这里插入图片描述

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

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

相关文章

Apollo自动驾驶:引领未来的智能出行

自动驾驶技术正日益成为当今科技领域的焦点,它代表着未来出行的一大趋势,而Baidu公司推出的Apollo自动驾驶平台则在这一领域中展现出强大的领导地位。本文将深入探讨Apollo自动驾驶技术的关键特点、挑战以及它对未来智能出行的影响。 Apollo自动驾驶平台…

QT基础教程之二 第一个Qt小程序

QT基础教程之二 第一个Qt小程序 按钮的创建 在Qt程序中&#xff0c;最常用的控件之一就是按钮了&#xff0c;首先我们来看下如何创建一个按钮 QPushButton * btn new QPushButton; 头文件 #include <QPushButton>//设置父亲btn->setParent(this);//设置文字btn-&g…

C++进阶 多线程相关

本篇博客介绍&#xff1a; 主要介绍C中的一些线程操作以及线程库 C进阶 多线程相关 为什么要有线程库线程库介绍线程库常见的接口构造线程对象获取线程idjoin和deteach mutex库原子操作相关条件变量库总结 为什么要有线程库 我们在Linux中写多线程的时候使用的是Linux下提供的…

Windows使用MobaXterm远程访问ubuntu20.04桌面

参考ubuntu 2020.4 安装vnc 一、脚本文件 remote_setup.sh脚本文件内容&#xff1a; #! /bin/bash #参考链接&#xff1a;https://blog.csdn.net/hailangdeyingzi/article/details/124507304 sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd telpo.12…

【论文阅读】POIROT:关联攻击行为与内核审计记录以寻找网络威胁(CCS-2019)

POIROT: Aligning Attack Behavior with Kernel Audit Records for Cyber Threat Hunting CCS-2019 伊利诺伊大学芝加哥分校、密歇根大学迪尔伯恩分校 Milajerdi S M, Eshete B, Gjomemo R, et al. Poirot: Aligning attack behavior with kernel audit records for cyber thre…

Apache Paimon 实时数据湖 Streaming Lakehouse 的存储底座

摘要&#xff1a;本文整理自阿里云开源大数据表存储团队负责人&#xff0c;阿里巴巴高级技术专家李劲松&#xff08;之信&#xff09;&#xff0c;在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分&#xff1a; 流计算邂逅数据湖 Paimon CDC 实时入湖 Paimon 不止…

关于打包多模块SpringBoot项目并通过宝塔上传服务器

打包 —— 如何打包多模块项目&#xff0c;参考b站up主&#xff1a;[喜欢编程的代先生] 的视频 总结&#xff1a;1. 对着视频里看一下父模块和各个子模块pom.xml文件关于打包工具的依赖是否正确。2. 从最底层开始打包&#xff0c;逐层向上&#xff0c;最后再合并打包。 部署 …

网络安全(大厂)面试题

以下为网络安全各个方向涉及的面试题&#xff0c;星数越多代表问题出现的几率越大&#xff0c;祝各位都能找到满意的工作。 注&#xff1a;本套面试题&#xff0c;已整理成pdf文档&#xff0c;但内容还在持续更新中&#xff0c;因为无论如何都不可能覆盖所有的面试问题&#xf…

采购合同有哪些类型?应注意哪些内容?

采购合同为建立和管理客户与供应商的关系奠定了基础。在合同中&#xff0c;卖方同意向买方提供符合特定规格的用品&#xff0c;或承担买方的项目&#xff0c;并提供一个确定的价格&#xff08;通常有批量折扣&#xff09;。 作为回报&#xff0c;买方同意接收并支付一定数量的…

在ubuntu上部署label-studio

1. 安装label-studio 由于服务器的默认python3版本太低&#xff0c;尝试了很多方法&#xff0c;没有升级。因此采用annaconda方式安装label-studio. a.安装anaconda: 参照如下链接&#xff0c;安装anaconda。 Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges

sql developer 连不上oracle数据库 报错 ORA-01031: insufficient privileges 1、问题描述2、问题原因3、解决方法4、sql developer 连接oracle 成功 1、问题描述 使用sys账户以SYSDBA角色登录失败 报错 ORA-01031: insufficient privileges 2、问题原因 因为没有给sys账户分…

如何用Dockerfile部署LAMP架构

目录 构建LAMP镜像&#xff08;Dockerfile&#xff09; 第一步 创建工作目录 第二步 编写dockerfile文件 Dockerfile文件配置内容 第三步 编写网页执行文件 第四步 编写启动脚本 第五步 赋权并且构建镜像 第六步 检查镜像 第七步 创建容器 第八步 浏览器测试 构建LA…

Vue Cli 脚手架安装

Vue Cli 脚手架安装 首先&#xff0c;改一下仓库地址&#xff0c;使用下面的命令cnpm淘宝镜像加速 npm install cnpm -g --registryhttps://registry.npm.taobao.org下载安装 vue 脚手架 npm install -g vue/cli查看 vue cli 脚手架是否安装成功&#xff0c;如果输入命令出现…

服务机器人,正走向星辰大海

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内机器人联盟&#xff08;IFR&#xff09;将机器人划分为工作机器人、服务机器人、特种机器人三类。服务机器人广泛应用于餐饮场景、酒店场景&#xff0c;早已构成一道靓丽的风景。行业数据显示&#xff0c; 作为服务机器人发…

想解锁禁用的iPhone?除了可以使用电脑之外,这里还有不需要电脑的方法!

多次输入错误的密码后,iPhone将显示“iPhone已禁用”。这种情况看起来很棘手,因为你现在不能用iPhone做任何事情。对于这种情况,我们提供了几种有效的方法来帮助你在最棘手的问题中解锁禁用的iPhone。你可以选择使用或不使用电脑来解锁禁用的iPhone。 一、为什么你的iPhone…

字节码调教的入口 —— JVM 的寄生插件 javaagent 那些事

Java Instrumentation 包 Java Instrumentation 概述 Java Instrumentation 这个技术看起来非常神秘&#xff0c;很少有书会详细介绍。但是有很多工具是基于 Instrumentation 来实现的&#xff1a; APM 产品: pinpoint、skywalking、newrelic、听云的 APM 产品等都基于 Instru…

【C++习题集】-- day6(习题)

目录 选择题 编程题 36932-求最小公倍数⭐ 【解题思路】 选择题 1. 执行下面语句后的输出为 ( ) int I1; if(I<0)printf("****\n") ; elseprintf("%%%%\n"); A、%% B、**** C、有语法错&#xff0c;不能正确执行 D、%%%% 正确答案&#xff1a;A …

Django基础2——URL路由系统

文章目录 一、基本了解二、url路由分发三、正则匹配四、压缩归档超链接优化一&#xff1a;使用分组名称功能优化二&#xff1a;使用url名称功能4.1 使用功能之前效果展示4.2 使用功能之后效果展示 一、基本了解 概念&#xff1a; 路由系统就是URL路径和视图函数的一个对应关系&…

【数据分析】波士顿矩阵

波士顿矩阵是一种用于分析市场定位和企业发展战略的管理工具。由美国波士顿咨询集团&#xff08;Boston Consulting Group&#xff09;于1970年提出&#xff0c;并以该集团命名。 波士顿矩阵主要基于产品生命周期和市场份额两个维度&#xff0c;将企业的产品或业务分为四个象限…

工具--录屏软件

记录下录屏软件 ScreenToGif 官网 &#xff1a;https://www.screentogif.com/downloads 我下载的是 Installer 版本。 录屏&#xff0c;默认输出为 gif 。录制的 gif 清晰&#xff0c;且容量低。需要录gif的话主推&#xff01; 录制后输出为 mp4 的话提示要下载 FFmpeg &a…