HBASE学习(一)

1.HBASE基础架构,

1.1 参考:

HBase集群架构与读写优化:理解核心机制与性能提升-CSDN博客

1.2问题:

1.FLUSH对hbase的影响

2. HLog和memstore的区别

     hlog中存储的是操作记录,比如写、删除。而memstor中存储的是写入的表数据 

2.HBASE与HDFS的关系

HBASE的主和从分别称为HMaster和RegionServer。其数据结构和表(表中又分为行和列)。支持实时读写。(如何实现的??)

HDFS的主和从分别称为NameNode和DataNode。其数据结构为hfile文件,无表的概念。不支持实时读写,用于批处理和高吞吐量的读写

  • HDFS 是 Hadoop 的分布式存储系统,提供高吞吐量的数据访问。
  • 特点:
    1. 数据以文件块(block)的形式分布在多个 DataNode 上。
    2. 支持数据冗余和容错,默认情况下每个文件块有 3 个副本(所以是HDFS机制实现了数据备份)。
    3. 主从架构:NameNode 负责元数据管理,DataNode 负责实际的数据存储。
  • 与 HBase 的关系:
    • HBase 依赖 HDFS 存储数据和元数据(如表的 Region 数据、WAL 日志等)。
    • HDFS 提供了可靠的存储基础,但不支持实时随机读写,这是 HBase 的补充功能。
  • HBase 是一个基于 HDFS 的分布式 NoSQL 数据库,专为海量数据的实时随机读写设计。
  • 特点:
    1. 数据按行存储,基于键值对。
    2. 支持超大规模表(行数和列数可以达到数十亿级)。
    3. 提供高性能的随机读写操作。
  • 依赖组件:
    1. HDFS:用于持久化存储表数据和 WAL(Write-Ahead Log)日志。
    2. ZooKeeper:用于集群管理、故障恢复、元数据存储和分布式协调。
  • HBase 的补充功能:
    • 提供高性能的随机读写,而 HDFS 主要用于批处理和高吞吐量的读写。

2. NameNode 和 HMaster是否等价

NameNode 和 HMaster 不等价,它们是分布式系统中两个独立的组件:

  • NameNode 是 HDFS 的管理节点,关注的是文件存储。
  • HMaster 是 HBase 的管理节点,关注的是表和 RegionServer 的管理

  对比NameNode 和 HMaster

特性NameNodeHMaster
系统所属HDFSHBase
作用管理文件系统元数据和块分布管理 HBase 表和 RegionServer
元数据存储存储在内存中(文件元数据)部分存储在 HDFS 和 ZooKeeper
与数据存储关系指挥 DataNode 存储文件块指挥 RegionServer 存储 HBase 数据
高可用性支持 Active/Standby NameNode支持 Active/Standby HMaster

3.hdfs不支持实时读写,hbase如何做到可以支持实时读写

读写流程的优化

  • 写流程(先写入内存,存储到一定量后才写入hfile)
    1. 数据写入 WAL(顺序写 HDFS)。
    2. 数据写入 MemStore(内存操作,低延迟)。
    3. 数据刷入 HDFS(按照rowkey顺序写 HFile,提升了使得后续的读速度)。
  • 读流程
    1. 查询数据时,优先从 MemStore 或 BlockCache(经常读取的数据会存储在BlockCache中) 中读取。
    2. 如果数据不在内存中,则从 HFile(HDFS)中加载。
    3. 查询结果可以缓存到 BlockCache 中,加速后续访问。

     总结原因就是:1.添加了内存作为中间缓冲区;2.数据按照rowkey顺序写入hfile

Zookeeper和Hbase的关系

1.zookeeper在HBASE 中的作用时什么?

  • 记录HBase 集群的运行状态
    • 活跃的 HMaster 和备份 HMaster 的状态。
    • 活跃的 RegionServer 列表。
  • 记录表和 Region 的元数据的位置
    • hbase:meta 表的位置(hbase:meta 是存储表和 Region 元数据的特殊表)。
    • 某些分布式锁和协调信息,例如 Region 的迁移状态。
  • 故障恢复和选主
    • 在 HMaster 故障时,ZooKeeper 会负责进行新主节点的选举。

2.读写数据时,为什么要从zookeeper中获取hbase的元数据,hbase的元数据时存储在zookeeper中吗?

   HBASE的元数据存储的HDFS中,但是元数据在HDFS中的存储位置却存储在zookeeper中,所以想访问元数据时,首先需要访问zookeeper。

同时,HMaster 会将表和 Region 的元数据加载到内存中以加速操作,但这些信息的持久化存储在 HDFS 和 ZooKeeper 中。

HBASE存储

1.hbase中列族对存储有什么影响

每个列族可以独立设置存储参数(如压缩、版本控制、TTL 等),这会影响存储的大小和性能。

HBase 为每个列族分配独立的块缓存(block cache)

一个region上,同一个列族的数据存储在一个或多个 HFile 中。但是同一个列的数据只存储在一个文件中。同一列族的数据存储在同一个磁盘上

hfile中每条数据的键(RowKey+Column Family+Column+Timestamp)和对应的值存储在同一个文件中。

2.hbase内部是如何实现备份的,即数据被损坏后,如何复原

   hbase数据分为两部分:存储到内存中的和固化到hfile文件中的。

2.1)RegionServer崩溃,则内存中数据会丢失,但是WAL(Write-Ahead Log)文件中会存储所有内存中的数据,所以Master将崩溃的 RegionServer 的 WAL 日志分配给其他 RegionServer,通过重放 WAL 恢复数据到内存即可。

2.2)hfile文件损坏,由于每个数据块(Block)在 HDFS 上默认会存储 3 个副本,所以只要有未损坏的hfile文件即可。HDFS 会自动从副本中修复损坏的文件。如果副本全部丢失,可使用快照或备份文件恢复(需人为定期备份)

2.3)如果整个集群毁坏(需要人为介入)

  • 从跨集群复制的备份集群恢复。
  • 从定期备份的快照或 HDFS 数据恢复。

    

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

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

相关文章

Flutter:封装ActionSheet 操作菜单

演示效果图 action_sheet_util.dart import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:demo/common/index.dart;class ActionSheetUtil {/// 底部操作表/// [context] 上下文/// [title] 标题/// [items] 选项列表 …

【Rust练习】28.use and pub

练习题来自:https://practice-zh.course.rs/crate-module/use-pub.html 1 使用 use 可以将两个同名类型引入到当前作用域中,但是别忘了 as 关键字. use std::fmt::Result; use std::io::Result;fn main() {}利用as可以将重名的内容取别名:…

Nginx 可观测性最佳实践

Nginx 介绍 Nginx 是一个开源、轻量级、高性能的 HTTP 和反向代理服务器,也可以用于 IMAP/POP3 代理服务器。Nginx 因其采用的异步非阻塞工作模型,使其具备高并发、低资源消耗的特性。高度模块化设计也使得 Nginx 具备很好的扩展性,在处理静…

《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《汽车维护与修理》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维护与修理》级别? 答:国家级。主管单位:中国汽车维修行业协会 …

PHP智慧小区物业管理小程序

🌟智慧小区物业管理小程序:重塑社区生活,开启便捷高效新篇章 🌟 智慧小区物业管理小程序是一款基于PHPUniApp精心雕琢的智慧小区物业管理小程序,它犹如一股清新的科技之风,吹进了现代智慧小区的每一个角落…

洛谷P4868 Preprefix sum

洛谷传送门 题目描述 前缀和(prefix sum)𝑆𝑖。 前前缀和(preprefix sum)则把 𝑆𝑖 作为原序列再进行前缀和。记再次求得前缀和第 𝑖 个是 𝑆&#x1d446…

机器学习中的凸函数和梯度下降法

一、凸函数 在机器学习中,凸函数 和 凸优化 是优化问题中的重要概念,许多机器学习算法的目标是优化一个凸函数。这些概念的核心思想围绕着优化问题的简化和求解效率。下面从简单直观的角度来解释。 1. 什么是凸函数? 数学定义 一个函数 f…

Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 Qt布局系统(Layouts) 布局管理器基础 高级布局技巧 嵌套布局 设置间距和边距 常用控件详解 按钮类控件 QPushButton (标准按钮) QRadioButton (单选按钮) QCheckBox (复选框) …

深入理解 ECMAScript 2024 新特性:字符串 isWellFormed 方法

ECMAScript 2024 引入了一个新的字符串实例方法:String.prototype.isWellFormed。这一新增功能是为了帮助开发者更容易地验证字符串是否为有效的 Unicode 文本。本文将详细介绍这一方法的使用场景、实现原理及其在实际应用中的价值。 String.prototype.isWellFormed…

生产管理看板助力节能科技公司实现数据自动化管理

在节能科技公司的生产过程中,数据管理的自动化是提高生产效率和产品质量的关键。然而,许多公司在数据记录、展示、对比和存档方面仍面临诸多痛点,如产品检测数据无法自动记录、缺乏直观的产线状态展示、检测数据对比繁琐耗时,以及…

【C++】B2112 石头剪子布

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述游戏规则:输入格式:输出格式:输入输出样例:解题分析与实现 💯我的做法实现逻辑优点与不足 &#x1f4af…

两分钟解决 :![rejected] master -> master (fetch first) , 无法正常push到远端库

目录 分析问题的原因解决 分析问题的原因 在git push的时候莫名遇到这种情况 若你在git上修改了如README.md的文件。由于本地是没有README.md文件的,所以导致 远端仓库git和本地不同步。 将远端、本地进行合并就可以很好的解决这个问题 注意:直接git pu…

微服务之松耦合

参考:https://microservices.io/post/architecture/2023/03/28/microservice-architecture-essentials-loose-coupling.html There’s actually two different types of coupling: runtime coupling - influences availability design-time coupling - influences…

hot100_240. 搜索二维矩阵 II

hot100_240. 搜索二维矩阵 II 直接遍历列减行增 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,1…

一步到位Python Django部署,浅谈Python Django框架

Django是一个使用Python开发的Web应用程序框架,它遵循MVC(Model-View-Controller)设计模式,旨在帮助开发人员更快、更轻松地构建和维护高质量的Web应用程序。Django提供了强大的基础设施和工具,以便于处理复杂的业务逻…

Apache PAIMON 学习

参考:Apache PAIMON:实时数据湖技术框架及其实践 数据湖不仅仅是一个存储不同类数据的技术手段,更是提高数据分析效率、支持数据驱动决策、加速AI发展的基础设施。 新一代实时数据湖技术,Apache PAIMON兼容Apache Flink、Spark等…

《计算机网络》课后探研题书面报告_了解PPPoE协议

PPPoE协议的工作原理与应用分析 摘 要 PPPoE(Point-to-Point Protocol over Ethernet)是一种广泛应用于宽带接入的网络协议,特别是在DSL(数字用户线路)和光纤网络中具有重要的应用价值。PPPoE结合了PPP协议的认证、加…

MAC上安装Octave

1. 当前最新版Octave是9.3版本,需要把mac os系统升级到14版本(本人之前的版本是10版本) https://wiki.octave.org/Octave_for_macOS octave的历史版本参考此文档:Octave for macOS (outdated) - Octavehttps://wiki.octave.org/Oc…

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库: 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图,该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件,文件内容及各配置项内容如下图,需要先将配置项【skip-grant-tab…

VSCode连接Github的重重困难及解决方案!

一、背景: 我首先在github创建了一个新的项目,并自动创建了readme文件其次在vscode创建项目并写了两个文件在我想将vscode的项目上传到对应的github上时,错误出现了 二、报错及解决方案: 1.解决方案: 需要在git上配置用…