HBase基础_1

news2025/1/8 18:10:58

HBase

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天继续和大家分享一下HBase
#博学谷IT学习技术支持


文章目录

  • HBase
  • 前言
  • 一、HBase的基本介绍
  • 二、HBase的应用场景
  • 三、HBase和其他软件的区别
    • 1.HBase和RDBMS区别
    • 2.HBase和HDFS区别
    • 3 HBase和Hive区别
  • 四、HBase的表模型
  • 五. HBase的基本shell操作
  • 总结


前言

HDFS: 分布式文件存储系统
特点: 吞吐量极高, 适合于进行批量数据处理的工作, 随机的读写能力比较差(压根不支持)

但是, 在实际生产环境中, 有时候的数据体量比较大, 但是希望能够对数据进行随机的读写操作, 而且不能太慢了, 那此时怎么办呢?

对于市场来说, 其实就迫切需要一款能够支持大规模化的数据存储以及能够进行高效的随机读写操作, 而HBase其实就是在这样的背景下, 产生了, 但是主要的思想来源于google发布的一篇论文: BigTable

在这里插入图片描述


一、HBase的基本介绍

1- HBase是一款NoSQL型的数据库, 不支持SQL , 没有表关系, 无法进行Join操作, 不支持事务(仅支持行级事务)
2- HBase是基于google发布BigTable这篇论文而产生的, 基于HDFS, 也就是说, 数据最终是存储到HDFS上, 如果后续想要启动HBase, 必须先启动HDFS
3- 基于Java语言开发的
4- 查询HBase的数据一般有以下几种方式:
第一种: 通过主键来检索
第二种: 通过主键的范围检索
第三中: 查询全部的数据
5- 存储的结构化数据和半结构化的数据
6- HBase的存储的都是以字节类型存储的
7- HBase表的特点:
6.1 大: 可以存储上十亿行的数据, 也可以拥有上百万个列
6.2 面向列的存储方案: 列值的是列族
6.3 稀疏性: 对于Null值, 在HBase中是不占用任何的存储空间的, 所以表可以搞的非常稀疏
在这里插入图片描述

二、HBase的应用场景

1- 数据是否需要进行随机读写操作
2- 数据体量比较大(建议TB级以上)
3- 数据比较稀疏

三、HBase和其他软件的区别

1.HBase和RDBMS区别

HBase: 以表的形式存储 存在主键(row key) 不支持SQL 不支持事务(支持行级事务) 无表关系 不支持Join 采用分布式存储引擎 基于HDFS文件系统, 支持存储结构化和半结构化数据
RDBMS: 以表的形式存储 存在主键(Primary Key) 支持SQL 支持事务 存在表关系 支持Join 采用单机存储引擎 基于本地文件系统,支持存储结构化数据

2.HBase和HDFS区别

HBase: 基于 HDFS, 与HDFS是一种强依赖的关系, 启动HBase, 必须先启动HDFS, 数据最终落在HDFS上, 支持高效的随机读写的特性, 吞吐量相对HDFS比较低, 适合实时处理

HDFS: 适合于批处理, 吞吐量极高的, 不支持随机读写的特性, 存储更多是一些过去已经发生过的数据

矛盾: 基于HDFS的HBase支持随机读写, 但是HDFS自己本身不支持, 既有联系, 又有矛盾,说明在HBase的上面一定是做了N多处理的, 才达到当前的这个效果

3 HBase和Hive区别

HIVE: 数据仓库的工具 主要是用于离线数据统计分析, 主要对接的离线业务, 基于 Hadoop 高延迟

HBASE: NoSQL型数据库 主要是用于数据存储工作, 主要对接实时业务, 基于Hadoop 低延迟

注意:
后续 可以让HIVE和HBASE集成在一起, 由HIVE读取HBase中数据, 进行离线统计分析操作, 本质上就是让HIVE换一个地方读取数据

四、HBase的表模型

在这里插入图片描述
1- rowkey: 行键,类似于MySQL中每个表的都会有主键 同样类似于 kv类型数据中key
在HBase中, 数据会默认进行排序, 排序的规则为基于rowkey进行字典序升序排序

例如: 1  3  5  2  33  11  22  245  32  51  42  100  请问, 如果按照字典升序排序是怎么样的呢?  
	字段升序:
		1 100 11 2 22 245 3 32 33 42 5 51
	
	规则: 先比较第一位, 如果第一位相同, 比较第二位, 没有第二位比有第二位小, 依次类推

查询方式: 
	第一种: 根据rowkey查询
	第二种: 根据rowkey的范围查询
	第三种: 扫描全部数据

2- column family: 列族(列簇)
在创建表的时候, 需要指定其列族信息, 一个表可以有多个列族
在hbase中是基于列族管理和存储的, 一个表中建议列族不要太多了, 能少则少, 能用一个解决,坚决不用多个
在一个列族下可以有多个列(列限定符号), 最大支持上百万个列

3- 列限定符号(列名): 一个列族下可以有多个列名,但是一个列名只能被一个列族所管理,列的数量可以达到上百万个, 在建表的时候不需要指定, 在插入数据的时候, 动态指定即可

4- timestamp(时间戳): 在hbase表中, 每个单元格的数据都是有时间戳的概念的, 默认为插入数据的时间,当然也可以人为指定

5- version(版本号): 在hbase中每一个单元格都是有版本号概念的, 可以基于版本管理 存储每一个单元格历史变化信息
默认版本号为1, 也就是只保留最新的版本数据

6- cell(单元格): rowkey + 列族 + 列名 + 列值

注意: 在建表的时候, 必须指定两项内容: 表名 + 列族

五. HBase的基本shell操作

#如何创建一张表 create 
create '表名','列族1','列族2'...

#如何向表中添加数据: put
put '表名','rowkey值','列族:列名','值'

#如何读取某一个rowkey的数据 get
get '表名','rowkey',['列族1','列族2'...],['列族:列名'],['列族1','列族2:列名'...]

#如何删除数据: delete deleteall 
delete 和 deleteall区别:
共同点: 都是用于执行删除数据操作
区别点: 
	1) delete 操作 只能删除表中某个列的数据, deleteall还支持删除某行数据
	2) 通过delete删除某个列的数据时候, 默认只删除其最新的版本, 而deleteall直接将其所有的版本数据全部都删除
delete '表名','rowkey','列族:列名'
deleteall '表名','rowkey'[,'列族:列名']

#如何查看表的结构: describe
describe '表名'

#如何清空表: truncate
truncate '表名'

#如何删除表: disable+drop
#先禁用再删除
disable '表名'
drop '表名'

#如何查看表共计有多少行数据:count
count '表名'

#如何查询多条数据格式: scan
	scan '表名',[{COLUMNS=>['列族1','列族2']} | {COLUMNS=>['列族1:列名','列族2']}| {COLUMNS=>['列族1:列名','列族2:列名']},{FORMATTER=>'toString'},{LIMIT=>N}]
	
范围查询: 
	{STARTROW=>'起始rowkey',ENDROW=>'结束rowkey'}
	包头不包尾
说明:
	{FORMATTER=>'toString'}:  用于显示中文
	{LIMIT=>N} : 显示前N行数据

总结

今天继续和大家分享一下HBase基本操作,下次和大家分享一下一些其他的HBase,包括shell其他的api, java api。HBase的核心原理等等。

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

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

相关文章

学习笔记6:字符串库函数(下)

目录 一. strstr模拟实现 二. strtok模拟实现 三.关于strerror和perror的说明 一. strstr模拟实现 库函数strstr函数首部:char * strstr ( const char *str1, const char * str2); 函数的功能是在str1指向的主字符串中寻找子串str2,并且返回主字符串中…

JS数组对象——英文按照首字母进行排序sort()、localeCompare()

JS数组对象——英文按照首字母进行排序(sort、localeCompare)上期回顾场景复现sort()方法与localeCompare实例应用上期回顾 文章内容文章链接JS数组对象——根据日期进行排序Date.parse(),按照时间进行升序或降序排序https://blog.csdn.net/XSL_HR/arti…

【CANN训练营第三季】AI目标属性编辑应用

文章目录1、参考样例进行运行stargan2、dvpp媒体数据处理结业考核题目1、题目2、题目31、参考样例进行运行stargan 下载stargan后,查看readme,进行复现。 # 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。 cd …

Tic-Tac-Toe:基于Minimax算法的人机对弈程序(python实现)

目录 1. 前言 2. Minimax算法介绍 2.1 博弈树 2.2 估值函数 2.3 基本算法思想 2.4 实例1 ​​​​​​​2.5 实例2—棋类游戏 2.6 小结 3. Tic-Tac-Toe minimax AI实现 3.1 函数说明 3.2 处理流程 3.3 代码 4. 小结 1. 前言 在上一篇中实现一个简单的Tic-Tac-Toe人…

【07】概率图推断之信念传播

概率图推断之信念传播 文章目录将变量消除视为信息传递信息传递算法加总乘积信息传递因子树上的加总乘积信息传递最大乘积信息传递总结在《概率图推断之变量消除算法》中,我们讲了变量消除算法如何对有向图和无向图求P(Y∣Ee)P(Y \mid E e)P(Y∣Ee)的边缘概率。 …

java 微服务之MQ 异步通信

初识MQ 同步调用存在的问题 异步调用常见实现就是事件驱动模式 事件驱动模式优势: 优势1:服务解耦 一旦有新业务只需要订阅或者减少事件就行了 优势2:性能提升,吞吐量提高 优势3:服务没有强依赖,不用担…

【自学C++】C++注释

C注释 C注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性。同时,注释也是一个程序员必须要具有的良好编程习惯。我们应该首先将自己的思想通过注释先整理出来,再用代码去体现。 在 C 中,一旦程序中某部分内…

数据结构和算法-计数排序

1.算法描述 技术排序是一个基于比较的排序算法,该算法于1954由Harold H. Seward 提出。它的优势在于对 一定范围内的整数排序时,它的复杂度为O(nk)(其中k是整数的范围),快于任何比较排序算 法…

JavaEE高阶---Spring事务和事务传播机制

一:什么是事务? 事务定义:将⼀组操作封装成⼀个执⾏单元(封装到⼀起),要么全部成功,要么全部失败。 二:Spring中事务的实现 编程式事务(⼿动写代码操作事务&#xff09…

使用 Flink CDC 实现 MySQL 数据实时入 Apache Doris

简介 主要内容如下: MySQL 安装和开启binogFlink环境准备Apache Doris 环境准备启动Flink CDC作业 1. MySQL 安装和开启binog 参考文章:Ubuntu 安装 Mysql server, 这篇文章介绍了MySQL的安装,用户创建,Binlog开启等内容。 M…

Linux基础入门和常用命令

Linux基础入门和常用命令一. Linux介绍1.1 Linux的发行版本二. Linux环境搭建三. Linux的常用指令3.1 Linux下的目录结构3.2 ls命令3.3 pwd命令3.4 cd指令3.5 touch指令3.6 mkdir指令3.7 rmdir指令和 rm 指令3.8 man指令3.9 mv指令3.10 cp指令3.11 cat3.12 more指令3.13 less指…

基于机器学习组合模型的个人信用评估

《基于机器学习组合模型的个人信用评估》课程报告 摘要 个人信用评估在信用经济市场发挥着及其重要的基础作用,促进信用经济的发展,稳定经济市场。个人信用信息主要有个人基本信息、还款能力和还款意愿;个人基本信息主要由年龄、性别、地区等特征构成&…

C语言灵魂核心——指针深度修炼

🐒个人主页:平凡的小苏📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情目录 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组参数、…

【读论文】TCPMFNet

【读论文】TCPMFNet简单介绍网络结构编码器图像融合网络Vision Transformer特征融合网络网格连接解码器损失函数总结参考论文:https://www.sciencedirect.com/science/article/pii/S1350449522003863 如有侵权请联系博主 简单介绍 今天要介绍的是TCPMFNet&#xf…

六大排序算法

1. 插入排序步骤:1.从第一个元素开始,该元素可以认为已经被排序2.取下一个元素tem,从已排序的元素序列从后往前扫描3.如果该元素大于tem,则将该元素移到下一位4.重复步骤3,直到找到已排序元素中小于等于tem的元素5.tem…

如何使用 Pandas 清洗二手房数据并存储文件

目录 一、实战场景 二、知识点 python 基础语法 python 文件读写 pandas 数据清洗 三、菜鸟实战 清洗前的文件 读取源文件 对二手房数据进行清洗 清洗完成后保存到文件 运行结果 运行截图 结果文件 一、实战场景 如何使用 Pandas 清洗的二手房数据并存储文件 二…

初识结构体(详细版)

目录 一、结构体的声明 1、结构的基础知识 2、结构的声明 3、结构成员的类型 4、结构体变量的定义和初始化 二、结构体成员的访问 1、点操作符访问 2、->操作符访问 3、解引用访问 三、结构体嵌套 四、结构体传参 1、传值调用 2、传址调用 一、结构体的声明 1、结构的基…

Vue2前端路由(vue-router的使用)

一、vue2axiosExpressMySQL实现前后端交互1、后台:(1)确定MySQL的表格:明确数据库 (mvc) —- 数据表(ssm_book)(2)创建Express项目:mysql2、cors、Sequelize(ORM)、nodem…

imx6ull Linux sdk下载验证

本文章是基于整点原子的imx6ull alpha开发板一.Linux SDK源码以及image1.环境准备其他的工具我们就不做介绍了,比如ubuntu ftp,ssh等等,我们主要来介绍下编译链1.1 交叉编译链背景:因为在原子的教程中有强调最新的Linaro gcc编译完uboot后无法…

备受认可!中睿天下荣登“2022创业邦100未来独角兽”年度榜单

近日,由创业邦、复旦大学管理学院主办的2022创业邦100未来独角兽峰会暨创业邦年会在上海举办。在峰会现场,2022创业邦100未来独角兽榜单正式揭晓,中睿天下凭借出众的综合实力荣登榜单。作为一家以“实战对抗”为特点的能力价值型网络安全厂商…