Day8 —— 大数据技术之HBase

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或其他第三方组件,仍然能够满足广泛的大数据存储和处理需求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目-博客驿站测试报告

测试用例设计 功能测试 该部分主要围绕对于博客系统的增删改查, 文章通过性审核, 关注功能等进行测试, 还进行了其它一些探索性的测试. 以上是作者设计的全部用例. BUG发现: 问题1: 当多端同时操作同一篇文章BUG 环境: Windows11, Edge和Chrome浏览器 复现步骤: 1.先使用Edg…

6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大

内容提要 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点。白酒及光刻机概念集体走低&#xff0c;中芯国际港股跌超2%。CRO医药概念及水利股逆势走强。 A股低开低走 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点&#xff0c;跌0.24%。深成指跌0.04…

几何内核开发-实现自己的NURBS曲线生成API

我去年有一篇帖子&#xff0c;介绍了NURBS曲线生成与显示的实现代码。 https://blog.csdn.net/stonewu/article/details/133387469?spm1001.2014.3001.5501文章浏览阅读323次&#xff0c;点赞4次&#xff0c;收藏2次。搞3D几何内核算法研究&#xff0c;必须学习NURBS样条曲线…

板凳-------unix 网络编程 卷1-1简介

unix网络编程进程通信 unpipc.h https://blog.csdn.net/u010527630/article/details/33814377?spm1001.2014.3001.5502 订阅专栏 1>解压源码unpv22e.tar.gz。 $tar zxvf unpv22e.tar.gz //这样源码就被解压到当前的目录下了 2>运行configure脚本&#xff0c;以生成正确…

indexedDB---掌握浏览器内建数据库的基本用法

1.认识indexedDB IndexedDB 是一个浏览器内建的数据库&#xff0c;它可以存放对象格式的数据&#xff0c;类似本地存储localstore&#xff0c;但是相比localStore 10MB的存储量&#xff0c;indexedDB可存储的数据量远超过这个数值&#xff0c;具体是多少呢&#xff1f; 默认情…

前端初学java

目录 java术语 JDK Javac Java Jdb Jhat JVM JRE JAR JDK下载 运行java文件 字面量 隐式转换 强制转换 注意 运算符 &&、||、&、| Switch 程序入口 String[] args 数组 静态初始化 动态初始化 变量初始化 Java内存 方法 重载 Final 包 …

mac苹果窗口辅助工具:Magnet for mac 2.14.0中文免激活版

Magnet 是一款针对 MacOS 系统的窗口管理工具软件。它能够帮助用户更加高效地管理和组织桌面上的窗口&#xff0c;通过简单的快捷键操作&#xff0c;可以将窗口自动调整到指定的位置和大小&#xff0c;实现多窗口快速布局。Magnet 还支持多显示器环境下的窗口管理&#xff0c;可…

模拟算法讲解

模拟算法是一种基于实际情况模拟的算法&#xff0c;通过模拟现实世界中的系统或过程&#xff0c;来研究它们的性质和行为。模拟算法可以用于解决各种问题&#xff0c;包括物理模拟、经济模拟、社会模拟等。 模拟算法的基本步骤包括&#xff1a; 定义问题&#xff1a;明确需要模…

禁用/屏蔽 Chrome 默认快捷键

Chrome 有一些内置的快捷键&#xff0c;但是它并没有像其他软件一样提供管理快捷键的界面。在某些时候&#xff0c;当我们因为个人需求希望禁用 Chrome 某些快捷键时&#xff0c;又无从下手。 好在有开发者开发了 Chrome 插件&#xff0c;可以禁用 Chrome 快捷键的插件&#x…

Python中使用PyQT5库时报错:没有Qt平台插件可以初始化

一、发现问题&#xff1a;无限易pythonGo打开执行的时候报&#xff1a;“没有Qt平台插件可以初始化&#xff0c;请重新安装应用程序。”的错误&#xff0c;点击确定后无限易崩溃闪退。 二、解决问题&#xff1a; 1、重新安装依赖&#xff0c;打开CMD输入pip list&#xff0c;查…

用户态协议栈06-TCP三次握手

最近由于准备软件工程师职称考试&#xff0c;然后考完之后不小心生病了&#xff0c;都没写过DPDK的博客了。今天开始在上次架构优化的基础上增加TCP的协议栈流程。 什么是TCP 百度百科&#xff1a;TCP即传输控制协议&#xff08;Transmission Control Protocol&#xff09;是…

「动态规划」如何求环绕字符串中唯一的子字符串个数?

467. 环绕字符串中唯一的子字符串https://leetcode.cn/problems/unique-substrings-in-wraparound-string/description/ 定义字符串base为一个"abcdefghijklmnopqrstuvwxyz"无限环绕的字符串&#xff0c;所以base看起来是这样的&#xff1a;"...zabcdefghijklm…

浅谈红队攻防之道-office文件免杀

最完美的状态&#xff0c;不是你从不失误&#xff0c;而是你从没放弃成长。 ∙菜单栏&#xff1a;集成了Cobalt Strike的所有功能。 ∙快捷功能区&#xff1a;列出了常用功能。 ∙目标列表区&#xff1a;根据不同的显示模式&#xff0c;显示已获取权限的主机及目标主机。 ∙…

如何打包数据库文件

使用 mysqldump 命令&#xff1a; mysqldump -u username -p database_name > output_file.sql username 是数据库的用户名。database_name 是要导出的数据库名称。output_file.sql 是导出的 SQL 文件名&#xff0c;可以自定义。 示例&#xff1a; mysqldump -u root -p…

OS复习笔记ch12-2

辅存管理 文件分配问题 创建文件一次性分配最大空间吗&#xff1f;分配连续的分区空间&#xff0c;分区多大&#xff1f;用什么数据结构记录&#xff1f; &#xff08;1&#xff09;分配方式 类似于#ch8-3调页机制&#xff0c;文件分配也有预分配和动态分配的形式。 一般拷贝…

【database1】mysql:DDL/DML/DQL,外键约束/多表/子查询,事务/连接池

文章目录 1.mysql安装&#xff1a;存储&#xff1a;集合&#xff08;内存&#xff1a;临时&#xff09;&#xff0c;IO流&#xff08;硬盘&#xff1a;持久化&#xff09;1.1 服务端&#xff1a;双击mysql-installer-community-5.6.22.0.msi1.2 客户端&#xff1a;命令行输入my…

文华财经多空精准买卖点止损止盈数值主图指标公式源码

文华财经多空精准买卖点止损止盈数值主图指标公式源码&#xff1a; DD:EVERY(H>HV(H,20),1); KK:EVERY(L<LV(L,20),1); D:DD&&SUM(DD,BARSLAST(KK))1; K:KK&&SUM(KK,BARSLAST(DD))1; Y:1; DRAWCOLORKLINE(Y&&ISDOWN,COLORYELLOW,0); DRAW…

How to create a langchain doc from an str

问题背景&#xff1a; Ive searched all over langchain documentation on their official website but I didnt find how to create a langchain doc from a str variable in python so I searched in their GitHub code and I found this : 在 langchain 的官方文档中&#…

吴恩达机器学习 第二课 week4 决策树

目录 01 学习目标 02 实现工具 03 问题描述 04 构建决策树 05 总结 01 学习目标 &#xff08;1&#xff09;理解“熵”、“交叉熵&#xff08;信息增益&#xff09;”的概念 &#xff08;2&#xff09;掌握决策树的构建步骤与要点 02 实现工具 &#xff08;1&#xff09;…

视频讲解|【双层模型】分布式光伏储能系统的优化配置方法

1 主要内容 该讲解视频对应的程序链接为【双层模型】分布式光伏储能系统的优化配置方法&#xff0c;模型参考《分布式光伏储能系统的优化配置方法》&#xff0c;分为上下层求解方式&#xff0c;上层采用粒子群算法确定储能的选址和容量方案&#xff0c;以全年购电成本、网络损…