大数据——一文熟悉HBase

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.mzph.cn/news/57343.shtml

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

相关文章

②matlab桌面和编辑器

目录 matlab编辑器练习 运行脚本 matlab编辑器练习 您可以通过点击灰色代码框在脚本中输入命令。 准备就绪后,您可以通过点击蓝色的提交按钮提交代码。 任务 在脚本中输入命令 r 3。 2.任务 在脚本中添加命令 x pi*r^2。 附加练习 当您在实时编辑器中完成…

解锁安全高效办公——私有化部署的WorkPlus即时通讯软件

在当今信息时代,高效的沟通与协作对于企业的成功至关重要。然而,随着信息技术的发展,保护敏感信息和数据安全也变得越来越重要。为了满足企业对于安全沟通和高效办公的需求,我们隆重推出私有化部署的WorkPlus即时通讯软件&#xf…

OpenCV简介

OpenCV简介 OpenCV(开源计算机视觉库:http://opencv.org)是一个开源库,包含数百种计算机视觉算法。OpenCV 具有模块化结构,主要包括下列模块: 核心功能(core) - 定义基本数据结构的…

iOS砸壳系列之三:Frida介绍和使用

当涉及从App Store下载应用程序时,它们都是已安装的iOS应用(IPA)存储在设备上。这些应用程序通常带有保护的代码和资源,以限制用户对其进行修改或者逆向工程。 然而,有时候,为了进行调试、制作插件或者学习…

登高不系安全带自动识别

登高不系安全带自动识别采用yolov8深度学习算法框架模型,登高不系安全带自动识别能够自动检测和识别登高作业人员是否佩戴安全带,过滤其他类似物体的干扰。登高不系安全带自动识别发现有人员未佩戴安全带,将立即触发预警。根据YOLO的设计&…

【算法训练-模拟】模拟设计LRU缓存结构

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是LRU缓存结构设计,这类题目出现频率还是很高的,几乎所有大厂都常考。 当然面对这道题,首先要讲清楚LRU是干什么…

新SDK平台下载开源全志V853的SDK

获取SDK SDK 使用 Repo 工具管理,拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is…

Redis数据结构:Zset类型全面解析

Redis,作为一种高性能的键值对数据库,因其丰富的数据类型和高效的性能而受到了广泛的关注和使用。在 Redis 的五种主要数据类型中,Zset(有序集合)类型可能是最复杂,但也是最强大的一种。Zset 不仅可以存储键…

Web 开发 Django 模板

上次为大家介绍了 Django 的模型和自带的管理工具,有了这个工具就可以全自动地根据模型创建后台管理界面,以供网站管理者更方便的管理网站数据。有了网站数据,那怎么样更方便又好看的展示给用户看呢?目前流行的 Web 框架基本都采用…

【24种设计模式】适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern) 适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换为客户端所期望的另一个接口。适配器模式使得原本因接口不兼容而无法一起工作的类可以协同工作。 适配器模…

ssm端游游戏账号销售管理系统源码和论文

ssm端游游戏账号销售管理系统源码和论文069 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面…

基于java swing和mysql实现的仓库商品管理系统(源码+数据库+运行指导视频)

一、项目简介 本项目是一套基于java swing和mysql实现的仓库商品管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经…

嵌入式学习笔记——ARM的编程模式和7种工作模式

ARM提供的指令集 ARM态-ARM指令集(32-bit) Thumb态-Thumb指令集(16-bit) Thumb2态-Thumb2指令集(16 & 32 bit) Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。通常在…

Jtti:如何通过宝塔面板快速安装WordPress博客源码?

通过宝塔面板快速安装WordPress博客源码是非常简单的。宝塔面板提供了图形化界面,使安装过程变得直观和方便。以下是通过宝塔面板安装WordPress的步骤: 登录宝塔面板: 打开您的Web浏览器,访问您的宝塔面板地址(通常是 …

【Spring Boot】数据库持久层框架MyBatis — MyBatis简介

MyBatis简介 本节首先会介绍什么是ORM、什么是MyBatis、MyBatis的特点以及核心概念,最后介绍MyBatis是如何启动、如何加载配置文件的? 1.什么是ORM ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象…

LoginPage.vue中的form

const form ref() const login async () > {await form.value.validate()const res await userLoginService(formModel.value)console.log(res)UserStore.setToken(res.data.token)ElMessage.success(登录成功)router.push(/) }<el-form:model"formModel":r…

高亮img、pdf重点部分(html2canvas、pdfjs-dist、react-pdf)

可用业务场景 报销单据审批中&#xff0c;高亮发票部分 需求 后台返回一张图片或者pdf、返回一组坐标&#xff0c;坐标类型[number,number,number,number]&#xff0c;分别代表了x、y、width、height。需要根据坐标在图片上高亮出来坐标位置。如下图 高亮的坐标是&#xff1…

Android 权限机制与及运行时权限申请示例

一、Android 权限机制 安装时权限声明 权限机制说明 安装软件时弹出软件所需要申请的全部权限&#xff0c;如果用户认可软件申请的权限&#xff0c;就会继续安装软件&#xff1b;如果用户不认可所申请的权限&#xff0c;就可以拒绝安装。 实现方式 在 AndroidManifest.mxl …

linux————keepalived+LVS(DR模式)

一、作用 使用keepalived解决LVS的单点故障 高可用集群 二、 调度器配置 环境 两台LVS服务 一主一备 两台web服务 采用nginx &#xff08;实现LVS负载均衡&#xff09; 服务ip 主LVS 192.168.100.3 备LVS 192.168.100.6 web1 192.…

nestjs:docker build时执行npm install sharp提示downloading libvips socket hang up

问题&#xff1a; 如题 参考&#xff1a; sharp - High performance Node.js image processing 参考chinese-mirror处理 原因&#xff1a; 默认是从github上下载libvips库&#xff0c;但是使用socket协议&#xff0c;linux下不挂载梯子是无法加速的&#xff0c;因此得更换下镜像…