Day8 —— 大数据技术之HBase

news2025/1/16 17:45:10

HBase快速入门系列

    • HBase的概述
      • 什么是HBase?
      • 主要特点和功能包括
      • 使用场景
    • HBase的架构
    • HBase部署与启动
    • HBase基本操作
      • 前提条件
      • 数据库操作
      • 表操作
      • 数据的CRUD操作
    • HBase的不足

HBase的概述

什么是HBase?

HBase 是一个开源的、分布式的、面向列的 NoSQL 数据库,它构建在 Apache Hadoop 之上,提供了高可靠性、高性能和可伸缩性的数据存储解决方案。HBase 的设计灵感来自于 Google 的 Bigtable。

主要特点和功能包括

  1. 面向列的存储: HBase 采用面向列的存储模型,数据按行键(Row Key)和列族(Column Family)存储,可以支持动态列。

  2. 分布式存储: HBase 是基于 Hadoop 的分布式文件系统(如 HDFS)构建的,可以水平扩展以处理大规模数据集。

  3. 高可靠性和高可用性: HBase 提供数据的自动复制和容错机制,确保数据的可靠性和可用性。

  4. 快速读写: HBase 提供了高性能的读写操作,支持随机读写访问,并能够处理大量并发请求。

  5. 强一致性: HBase 提供强一致性的数据访问模型,确保数据的一致性性。

  6. 支持自动分区和负载均衡: HBase 可以自动管理数据的分区和负载均衡,使得数据在集群中分布均匀。

  7. 支持多种操作接口: HBase 提供了多种操作接口,包括 Java API、REST API、Thrift API 等,方便用户进行数据访问和操作。

使用场景

  • 实时数据存储和分析: HBase 适用于需要实时存储和分析大量数据的场景,如日志数据、传感器数据等。

  • 在线交易处理(OLTP): HBase 支持高并发的随机读写操作,适用于在线交易处理系统。

  • 实时推荐系统: HBase 可以作为实时推荐系统的数据存储引擎,支持快速的数据检索和更新。

  • 时序数据存储: HBase 适用于存储时序数据,如传感器数据、日志数据等,支持按时间范围的快速查询。

HBase的架构

在这里插入图片描述

  • HMaster:
    HMaster 是 HBase 的主节点,负责管理整个集群的元数据、负载均衡、Region 的分配和调度、故障恢复等工作。HMaster 通过 ZooKeeper 进行协调和通信。

  • RegionServer:
    RegionServer 是 HBase 的工作节点,负责管理存储数据的 Region。
    每个RegionServer 可以管理多个 Region,负责处理读写请求、数据的存储和 检索等操作。

  • Region:
    Region 是 HBase 中数据存储和管理的基本单元,数据按照 Row Key 范围划分为多个 Region,每个 Region 存储一定范围的数据。RegionServer 负责管理和处理特定的 Region。

  • HLog(Write-ahead Log):
    HLog 是 HBase 中的写前日志,用于记录数据的变更操作,确保数据的持久性和一致性。HLog 会先将数据写入日志,然后再写入内存和磁盘中。

  • MemStore:
    MemStore 是位于 RegionServer 中的内存缓存,用于暂时存储写入的数据,当数据量达到一定阈值时,会将数据刷写到磁盘中的 HFile 中。

  • HFile:
    HFile 是 HBase 中数据存储的文件格式,数据按列族存储在 HFile 中,提供快速的数据检索和访问。

  • ZooKeeper:
    ZooKeeper 是 HBase 集群中的协调服务,用于管理集群的状态信息、选举 Master、协调 RegionServer 等。HBase 使用 ZooKeeper 来确保集群的一致性和可靠性。

  • HBase Client:
    HBase Client 是用户与 HBase 集群交互的接口,用户可以通过 HBase Client 发送读写请求、管理数据等操作。

HBase部署与启动

下载、解压缩,在/etc/profile全局配置文件中添加

export HBASE_HOME=/export/servers/hbase-2.4.5
export PATH=$ PATH:$HBASE_HOME/bin

下载、解压缩,在/etc/profile全局配置文件中添加

export HBASE_HOME=/export/servers/hbase-2.4.5
export PATH=$ PATH:$HBASE_HOME/bin

下载、解压缩,在/etc/profile全局配置文件中添加

<configuration>
  <!-- hbase数据存放的目录-->
  	<property>
       <name>hbase.rootdir</name>
       <value>hdfs://my2308-host:9000/hbase</value>
    </property>

    <!-- zk的位置 -->
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>localhost</value>
        <description>my2308-host:2181</description>
    </property>

<!--hbase.cluster.distributed表示是否分布式部署,指定为true-->
    <property>
         <name>hbase.cluster.distributed</name>
         <value>true</value>
    </property>

    <!-- hbase主节点的位置 -->
    <property>
         <name>hbase.master</name>
         <value>my2308-host:60000</value>
     </property>
</configuration>

拷贝zookeeper的conf/zoo.cfg到hbase的conf/下

启动HBase,执行start-hbase.sh脚本

注意:为了方便启动,可在/etc/profile中添加环境变量
export HBASE_HOME=/export/servers/hbase-2.4.5
export PATH=$ PATH:$ HBASE_HOME/bin

HBase基本操作

前提条件

  • 启动Hadoop集群:sbin/start-all.sh
  • 启动ZooKeeper服务:zkServer.sh start
  • 启动HBase服务:start-hbase.sh

数据库操作

进入 hbase 客户端

hbase shell

查看所有库(命名空间)

list_namespace

创建一个名称为’mydb’的库

create_namespace ‘mydb’

删除’mydb’库

drop_namespace ‘mydb’

进入 hbase 客户端

hbase shell

表操作

查看 'mydb’库下的表

list_namespace_tables ‘mydb’

查看所有自己创建的表

list

在’mydb’库下创建名为test的表,并创建’f1’、'f2’两个列族

create ‘mydb:test’,‘f1’,‘f2’

注意:创建表时若不指定库名,默认在default库下创建表,创建表要至少指定一个列族

查看表详细信息

describe ‘mydb:test’ 或 desc ‘mydb:test’

增加列族

alter ‘mydb:test’,‘f3’

删除列族

alter ‘mydb:test’,‘delete’=>‘f2’

删除表

disable ‘mydb:test’
drop ‘mydb:test’

注意:删除表需要先进行disable,再进行drop

数据的CRUD操作

先在 default 库下创建一个名为stu的表,列族名称是 info

create ‘stu’,‘info’

插入数据

put ‘stu’,‘1001’,‘info:name’,‘linghc’
put ‘stu’,‘1001’,‘info:sex’,‘man’
put ‘stu’,‘1001’,‘info:age’,‘26’
put ‘stu’,‘1002’,‘info:name’,‘renyy’
put ‘stu’,‘1002’,‘info:sex’,‘female’
put ‘stu’,‘1002’,‘info:age’,‘24’
put ‘stu’,‘1003’,‘info:name’,‘yilin’
put ‘stu’,‘1003’,‘info:sex’,‘female’
put ‘stu’,‘1003’,‘info:age’,‘18’
某一行的列的个数可以不一样
put ‘stu’,‘1004’,‘info:name’,‘dongfangb’
put ‘stu’,‘1004’,‘info:sex’,‘female’
put ‘stu’,‘1004’,‘info:age’,‘28’
put ‘stu’,‘1004’,‘info:party’,‘rysj’

根据row key(行键)查询

get ‘stu’,‘1004’

根据行键、列名查询

get ‘stu’,‘1004’,‘info:name’,‘info:age’

扫描表数据

scan ‘stu’

按rowkey范围扫描 {STARTROW => ‘1001’ ,STOPROW => ‘1003’} :左闭右开,此时只查询到 1002

scan ‘stu’,{STARTROW => ‘1001’ ,STOPROW => ‘1003’}

指定STOPROW 后加!,可以实现左闭右闭

scan ‘stu’,{STARTROW => ‘1001’ ,STOPROW => ‘1003!’}

修改数据:直接put进行覆盖

put ‘stu’,‘1001’,‘info:name’,‘linghc1’

注意:修改数据后,其实只是在原来的基础上增加了一条数据,查询的时候返回了时间戳最新的一个版本,旧版本的数据还在

查寻每个单元格的2个版本数据

scan ‘stu’,{RAW=>true,VERSIONS=>2}

注意RAW参数必须和VERSIONS一起使用,旧版本的数据在适当的时候会被释放;如果想要保留最新两个版本的数据,可以将某个表的 VERSIONS设置为2

更改表的VERSIONS

alter ‘stu’,{NAME=>‘info’,VERSIONS=>2}

注意:创建表时若不指定库名,默认在default库下创建表,创建表要至少指定一个列族

删除数据

delete ‘stu’,‘1001’,‘info:sex’

此时查询会发现无数据

get ‘stu’,‘1001’,‘info:sex’

再通过版本号查询

scan ‘stu’,{RAW=>true,VERSIONS=>2}

会发现删除的数据有Delete标注

  • 根据行键和列名删除列

deleteall ‘stu’,‘1001’,‘info:sex’
标注为:DeleteColumn

  • 根据行键删除列族

deleteall ‘stu’,‘1004’
标注为:DeleteFamily

  • 删除表中所有数据

truncate ‘stu’
truncate命令将删除表中的所有数据行,但是保留表的结构和配置信息。

HBase的不足

当涉及到某些特定的应用场景时,HBase并不总是首选解决方案。举例来说,HBase本身并不支持复杂的聚合运算,如Join和GroupBy操作。在这种情况下,可以考虑在HBase之上集成Phoenix或Spark组件。Phoenix适用于小规模聚合的OLTP场景,而Spark则适用于大规模聚合的OLAP场景。

此外,HBase原生不支持二级索引功能,这意味着无法直接进行二级索引查找。不过,有许多第三方解决方案可以为HBase提供二级索引支持,比如Phoenix提供的二级索引功能。

另一个限制是HBase没有实现全局跨行事务,只支持单行事务模型。针对这一点,Phoenix提供了全局事务模型组件,可以弥补HBase在这方面的不足。

尽管如此,HBase作为一个高可靠性、高性能和可伸缩性的分布式NoSQL数据库,在Hadoop生态系统的支持下,通过集成Phoenix、Spark或其他第三方组件,仍然能够满足广泛的大数据存储和处理需求。

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

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

相关文章

食品预包装:舌尖安全的第一道防线

在当今快节奏的生活中&#xff0c;食品预包装不仅是保护食品的屏障&#xff0c;更是传递品质与美味的使者。 预包装首先展现出的是其保鲜的魔力。它宛如一层坚固的护盾&#xff0c;有效地阻隔外界因素对食品的侵蚀&#xff0c;让食品的新鲜度和口感得以长久保存。无论是酥脆的点…

本地离线模型搭建指南-RAG架构实现

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

Spring Boot+vue社区养老系统(智慧养老平台)

使用技术&#xff1a; springbootvueMySQL 主要功能&#xff1a; 管理员 登录个人资料密码管理, 用户管理:床位类型管理,床位管理,护工管理,老人管理 咨询登记管理&#xff0c;预约登记管理,老人健康信 息管理,费用管理等功能.护工角色包含以下功能: 护工登录&#xff0c;个…

工程师 - Total Phase公司介绍

Total Phase 是一家领先的嵌入式系统工具供应商&#xff0c;可简化各种通信协议的开发和调试。公司提供一系列产品&#xff0c;旨在帮助工程师和开发人员更高效地使用 I2C、SPI、USB 和 CAN 等协议。 关于Total Phase的关键信息&#xff1a; 产品&#xff1a; 协议分析仪&…

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信…

npm全局安装依赖指定存放文件目录

引言 学校机房&#xff0c;每次默认在c盘装完 电脑关机重启都得重新安装&#xff0c;十分麻烦 1-创建依赖安装/缓存目录 2-打开终端输入设置安装目录位置的命令 npm set cache \你创建的缓存文件目录\ npm set prefix \你创建的global全局安装依赖文件目录\至此以后npm -g 依…

FastGPT部署

部署脚本 # 数据库的默认账号和密码仅首次运行时设置有效 # 如果修改了账号密码&#xff0c;记得改数据库和项目连接参数&#xff0c;别只改一处~ # 该配置文件只是给快速启动&#xff0c;测试使用。正式使用&#xff0c;记得务必修改账号密码&#xff0c;以及调整合适的知识库…

【原创】springboot+mysql海鲜商城设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

递归调用,将源路径下所有文件文件夹复制到目标路径中.

其实代码demo很简洁&#xff0c;只是逻辑有点绕&#xff0c;主要是要一层一层调用自己&#xff0c;要清楚当前是第几层调用&#xff0c;及递归调用时进的点和出的点在哪儿&#xff0c;一切就清晰明了了。 /// <summary>/// 删除指定目录下面的所有文件和文件夹/// </s…

IDEA插件推荐-CodeGeex

功能&#xff1a;这个插件可以实现快速翻译代码&#xff0c;json文件格式转换&#xff0c;代码语言类型转换。 安装方式&#xff1a;File->Settings->Plugins->MarketPlace->搜索“CodeGeex”即可 &#xff08;CodeGeex功能展示&#xff09; &#xff08;CodeGeex…

bazel :Output Directory Layout

Output Directory Layout This page covers requirements and layout for output directories. Requirements for an output directory layout: Doesn’t collide if multiple users are building on the same box.如果多个用户在同一个盒子上建造则不会发生冲突。 Support…

面试题4:POST 比 GET 安全?

不是。HTTP就没有加密功能。 我们知道 GET一般将参数放到URL的查询字符串中&#xff0c;如果是实现登录页面&#xff0c;我们的用户名和密码就直接显示到浏览器的地址栏中了&#xff0c;此时就会轻易的被他人获取账号密码&#xff0c;很不安全。而POST会把参数放到 body 里&am…

Java宝藏实验资源库(8)多态、抽象类和接口

一、实验目的 理解面向对象程序的基本概念。掌握类的继承和多态的实现机制。熟悉抽象类和接口的用法。 二、实验内容、过程及结果 **1.Using the classes defined in Listing 13.1, 13.2, 13.3, write a test program that creates an array of some Circle and Rectangle in…

人工智能赋能数据资产分析:借助先进的人工智能技术,优化数据处理流程,显著提升数据资产分析的准确性和效率,为企业决策提供强大支撑,推动业务快速发展

一、引言 在数字化浪潮席卷全球的今天&#xff0c;数据已经成为企业最宝贵的资产之一。如何有效地分析这些数据&#xff0c;挖掘其中的价值&#xff0c;为企业决策提供有力支持&#xff0c;是每个企业都面临的挑战。近年来&#xff0c;人工智能技术的快速发展&#xff0c;为数…

WordPress软件下载主题Inpandora

Inpandora&#xff08;中文名为潘多拉&#xff09;是一款基于软件下载站定制的WordPress主题&#xff0c;帮助站长使用WordPress快速搭建一个专业的WordPress软件博客。Inpandora这款WordPress主题可以说是因软件而生&#xff0c;从UI设计到后台设置功能&#xff0c;都充分体现…

数据结构9——排序

一、冒泡排序 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff0c;顾名思义&#xff0c;就是指越小的元素会经由交换慢慢“浮”到数列的顶端。 算法原理 从左到右&#xff0c;依次比较相邻的元素大小&#xff0c;更大的元素交换到右边&#xff1b;从第一组相邻元素比较…

【Java】Java基础语法

一、注释详解 1.1 注释的语法&#xff1a; // 单行注释/*多行注释 *//**文档注释 */ 1.2 注释的特点&#xff1a; 注释不影响程序的执行&#xff0c;在Javac命令进行编译后会将注释去掉 1.3 注释的快捷键 二、字面量详解 2.1 字面量的概念&#xff1a; 计算机是用来处理…

Bandzip:打破压缩界限,文件管理更高效

名人说&#xff1a;&#xff1a;一点浩然气&#xff0c;千里快哉风。 ——苏轼 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍1、Bandzip2、核心特点 二、下载安装1、下载2、安装 三、使用方法 很高兴…

拖拽劫持与数据窃取

2010 年&#xff0c;ClickJacking 技术有了新的发展。一位名叫 Paul Stone 的安全研究者在 BlackHat 2010 大会上发表了题为“Next Generation Clickjacking”的演讲。在该演讲中&#xff0c;提出了“浏览器 拖拽事件”导致的一些安全问题。 目前很多浏览器都开始支持 Drag &a…

【pytorch05】索引与切片

索引 a[0,0]第0张图片的第0个通道 a[0,0,2,4]第0张图片&#xff0c;第0个通道&#xff0c;第2行&#xff0c;第4列的像素点&#xff0c;dimension为0的标量 选择前/后N张图片 a[:2,:1,:,:].shape前两张图片&#xff0c;第1个通道上的所有图片的数据 a[:2,1:,:,:].shape前两张…