关于Hbase的一些问题

hbase列簇设计原则,看这篇就对了 In Memory: 优先级最高,常驻cache,在创建列族时定义,不会像其他两种cache会因访问频率而发生改变,这就决定了它的独立性,另外两种block访问次数再多也不会被放到in-memory的区段里去,in-memory的block不管是第几次访问,总是被放置到in-memory的区段中,但是In Memory除了保证优先级外,不会提供其他的保证。第二行的key长度和类型与前一行相同,则不需要存储,第二行的时间戳值为0,而不是完整的时间戳,即时间戳与第一行时间戳相同。 阅读详情

HBase

1. RowKey如何设计,设计不好会产生什么后果

唯一原则:在设计上要保持RowKey的唯一性。

  • 因为HBase中的数据是以KV的格式来存储的,所以如果向同一张表中插入RowKey相同的数据,旧的数据会被覆盖掉。

长度原则:建议RowKey的长度不要过长最好不要超过十六字节。对齐RowKey长度。

  • 因为数据的持久化文件HFile是按照Key Value存储的,如果RowKey的长度过长,会使得文件过大,从而影响HFile的存储效率。
  • MemStore将缓存部分数据到内存,如果RowKey的长度过长就会导致内存的有效利用率降低,系统将无法缓存更多的数据,降低检索速率。

散列原则:设计出来的RowKey需要均匀的分布在各个RegionServer上。

  • 如果数据分布的不均匀就可能会造成数据倾斜的发生,进一步导致热点问题的出现,最终造成节点崩溃。

2. 列族如何设计,为什么不建议HBase设计过多列族

  • HBase的列族不是越多越好,官方推荐一个表的列族最好不超过三个,过多的列族不利于HBase数据的管理和索引。

  • 将所有相关性很强的key_value都放在同一个列族。这样可以增加查询效率,减少访问不同的磁盘文件。

  • 列族的长度尽可能小,一个是为了增加查询速率,一个是为了节省空间。

    • 内存开销:列族过多,内存开销会逐渐积累,导致RegionServer的内存占用增加,影响集群的稳定性。
    • 磁盘开销:过多的列族会导致更多的磁盘寻址和IO操作,增加磁盘开销。
    • 查询性能下降:查询跨越多个列族,会影响性能。
    • 写入性能下降:写入操作需要锁定列族,列族过多会导致性能下降。

    3. HBase读取数据的流程

    1. Client访问Zookeeper,获取hbase:meta所在的HRegionServer的节点信息;
    2. Client访问hbase:meta所在的HRegionServer,获取hbase:meta记录的元数据后加载到内存中,然后再从内从中查询出RowKey所在的Hregion(HRegion所在的HRegionServer);
    3. Client对RowKey所在的HRegion对应的HRegionServer发起读取请求;
    4. HRegionServer构建RegionScanner(需要查询的RowKey分布在多少个HRegion中就需要构建多少个RegionScanner),用于对该HRegion的数据检索;
    5. RegionScanner构建StoreScanner(HRegion中有多少个Store就需要构建多少个StoreScanner,Store的数量取决于表中的列族的数量),用于对该列族的检索;
    6. 所有的StoreScanner合并构建最小堆(已排序的完全二叉树)StoreHeap:PriorityQueue;
    7. StoreScanner构建一个MemStoreScanner和一个或多个StoreFIleScanner(数量取决于StoreFile的数量);
    8. 过滤掉能够确定索要查询的RowKey一定不存在的StoreFileScanner或MemStoreScanner(布隆过滤器);
    9. 经过筛选后留下的Scanner开始做读取数据的准备,将对应的StoreFile定位到满足的RowKey的起始位置;
    10. 将所有的StoreFileScanner和MemStoreScanner合并构建最小堆KeyValueHeap:PriorityQueue,排序的规则按照KeyValue从小到大排序;
    11. 从KeyValueHeap:PriorityQueue中经过一系列筛选后一行行的得到需要查询的KeyValue。

4. HBase写入数据的流程

  1. Client访问ZooKeeper,获取hbase:meta所在的HRegionServer的节点信息;
  2. Client访问hbase:meta所在的HRegionServer,获取hbase:meta记录的元数据后现加载到内存中,然后再从内存中查询出RowKey所在的HRegion(HRegion所在的HRegionServer);
  3. Client对RowKey所在的HRegion对应的HRegionServer发起写入请求;
  4. 建立连接后,首先将DML要做的操作写入到日志HLog;
  5. 然后将数据的修改更新到MemStore中,本次操作结束。一个HRegion由多个Store组成,一个Store对应一个列族,Store包括位于内存的MemStore和位于磁盘的StoreFile,写入操作先写入MemStore;
  6. 当MemStore数据达到阈值后(128M),创建一个新的MemStore;
  7. 旧的MemStore将刷写成为一个独立的StoreFIle(HRegionServer会启动FlushCache进程写入StoreFIle)并存放到HDFS,最后删除HLog中的历史数据。

5. Hive 和 HBase的区别

HBase和Hive都是架构在Hadoop之上的,都使用了HDFS作为底层存储。

不同点:

  • Hive是一个数仓工具,可以将结构化数据映射为表格。HBase是一个分布式的非关系型数据库。
  • Hive本身并不存储和计算数据,它底层通过Hadoop的MapReduce框架来处理数据。HBase底层使用HDFS和ZooKeeper分布式协调服务来存储和管理数据。
  • HBase是物理表,提供了一个超大内存的Hash表,搜索引擎通过它来存储索引,方便查询操作。
  • Hive不支持随机写入操作,HBase支持随机写入操作。
  • Hive适合查询和分析结构化数据,HBase适合存储和查询非结构化数据。

6. 为什么要使用Phoenix

  • 提供标准的SQL以及完备的ACID事务支持;
  • 通过利用HBase作为存储,让NoSQL数据库具备通过有模式的方式读取数据,可以使用SQL语句来操作HBase。
  • Phoenix通过协处理器在服务器端执行操作,最小化客户机/服务器数据传输。
  • Phoenix可以很好地与其他的Hadoop组件整合到一起,例如Spark、Hive等。

Phoenix只是在HBase之上构建了SQL查询引擎,Phoenix可以使用SQl快速查询HBase中的数据,但是数据的底层必须符合HBase的存储结构,HBase结合Phoenix可以实现海量数据的快速随机读写。Phoenix就相当于一个特别好用的皮肤,方便了程序员的操作。

7. HBase的热点Key会产生什么问题

HBase中的热点Key是指在同一时间内被频繁访问的行键,造成少数RegionServer的读写请求过多,负载过大,而其他RegionServer负载却很小,造成热点现象。

  • 读写性能下降:由于多个请求涌入到一台RegionServer中,导致该RegionServer的负载过高,从而影响读写性能。
  • 均衡性差:由于不同RegionServer负责不同的Region,而热点Key的存在会导致某些RegionServer的负载过高,从而影响整个集群的负载不平衡。
  • 单点故障:如果某个RegionServer负责的某个Region出现热点Key问题,该RegionServer发生故障会导致该Region不可用,从而影响整个集群的可用性。

避免HBase的热点Key的方式:

  • 合理设计RowKey
  • 采用哈希算法对RowKey进行分片,使数据分布更均匀
  • 使用预分区技术

8. 说一说HBase的数据刷写与合并

数据刷写(FLush):数据刷写是将内存中的数据写入到磁盘存储的过程。在HBase中,写入的数据首先会被缓存在内存的MemStore中,而不是直接写入磁盘。当MemStore中的数据达到一定大小阈值时,或者出发了一定的时间阈值,HBase会将该MemStore中的数据刷写到磁盘,生成一个新的Store文件。这样可以减少磁盘的随机写入操作,提高写入性能。

数据合并(Comoaction):数据合并是将多个Store文件合并成为一个更大的文件的过程。在HBase中,随着数据的写入和删除,会产生大量的小文件,这样对于查询操作会引入额外的磁盘寻址开销。为了优化性能和减少磁盘空间的占用,HBase会定期执行那个数据合并操作。数据合并会将多个Store文件合并成更大的文件,从而减少文件数量和磁盘寻址次数。

  • 触发数据合并的三种方式:MemStore刷盘,后台线程周期性检查,手动触发。
  • 小合并(Minor Compaction):当一个Region中的Store文件达到一定的数量或累积了一定大小时,会触发小合并。小合并只会合并相邻的几个Store文件,并生成一个新的更大的文件。
    • 不做任何删除数据、多版本数据的清理工作,但是会对 minVersion=0 并且设置 TTL 的过期版本数据进行清理。
  • 大合并(Major Compaction):当一个Region中的Store文件数量达到一定阈值,或者手动触发大合并操作时,会执行大合并。大合并会将所有的Store文件都合并为一个更大的文件。大合并 可以进一步优化查询性能和节省磁盘空间,但相应地需要更多的计算和IO资源。
    • 清理三类无意义数据:被删除的数据、TTL 过期数据、版本号超过设定版本号的数据。
Hbase问题 hbase hbck是hbase自带的一项非常实用的工具,很多hbase中出现的问题都可以尝试用hbase hbck修复。 新版本的hbck从 hdfs目录、META、RegionServer这三处获得region的Table和Region的相关信息,根据这些信息判断并尝试进行repair。 新版本的 hbck 可以修复各种错误,修复选项是:(请注意选项后面是否需要加具体表名) (1)-fix 向下兼容用,被-fixAssignments替代 (2)-fixAssignments 用于修复region as 阅读详情

相关推荐

hbase相关问题处理

通过new HTable方式,则每次方法调用都会建立新的连接,而且会从zk获取表的元数据,会导致将业务的并发传导到zookeeper服务,会对全局所有依赖zookeeper服务的节点存在一定的影响。可通过HTablePool等方式进行处理。对于Connection,一般就是初始化一次,就可在每个线程中调用conn.getTable方式获取表对象。即使连接的zookeeper节点异常,也会自动进行切换。

weixin_42106137的博客 869

4.hbase 表设计原则

反范式很重要 不用区分行和列 牢记有序和行键设计 - key均匀化 - 组合key(索引)设计 不同于传统关系数据库围绕数据先建模再考虑查询,HBase(Cassandra等NOSQL)强调围绕查询进行建模,干什么活做什么设计,海量数据就没必要多余的设计了。 具体总结包含如下三大原则: 反范式很重要 传统关系数据库中,期间遵循数据设计的三大范式,减小数据冗余,彼此间通过关系引用,hbase...

文洲的专栏 1519

Hbase运行时出现的问题 ,hadoop适配hbase版本

问题1.Hbase 的Hmaster 在运行一段时间后自动关闭 问题2.HBase Shell 命令行界面中执行命令时报错,ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 问题3.HBase Shell 命令行界面中执行命令时出现error:KeeperErrorCode = NoNode for /hbase/master

m0_61677070的博客 1300

Hbase的Row key怎么创建好?列族怎么创建比较好?

hbase存储时,数据按照Rowkey的字典序(byteorder)排序存储。 设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)一个列族在数据底层是一个文件,所以将经常一起查询的列放到一个列族中,列族尽量少,减少文件的寻址时间。 ...

Pandaminn的博客 2438

HBASE 问题及理解

hbase 界面 http://master:16010/master-status 使用xshell 进入hbase命令行无法删除问题: 进入到XShell 文件 --> 属性 --> 终端 --> 键盘 在 DELETE键序列 和 BACKSPACE键序列 中都选择 ASCII 127 HBASE常用操作命令 https://www....

FREEDOM 672

HBase最佳实践-列族设计优化

随着大数据的越来越普及,HBase也变得越来越流行。会用HBase现在已经变的并不困难,然而,怎么把它用的更好却并不简单。那怎么定义‘用的好’呢?很简单,在保证系统稳定性、可用性的基础上能够用最少的系统资源(CPU,IO等)获得最好的性能(吞吐量,读写延迟)就是’用的好’。HBase是一个庞大的体系,涉及到很多方面,很多因素都会影响到系统性能和系统资源使用率,根据场景对这些配置进行优化会很大程度上提升系统的性能。笔者总结至少有如下几个方面:HDFS相关配置优化,HBase服务器端优化(GC优化、Compaction优化、硬件配置优化),列族设计优化,客户端优化等,其中客户端优化在前面已经通过超

HBase之表的设计原则

1、列族的数量及列族的势 建议将HBase列族的数量设置的越少越好。当强,对于两个或两个以上的列族HBase并不能处理的很好。这是由于HBase的Flushing和压缩是基于Region的。当一个列族所存储的数据达到Flushing的阈值时,该表中所有列族将同时进行Flushing操作。这将带来不必要的I/O开销,列族越多,该特性带来的影响越大。 此外,还要考虑到同一个表中不同列族所存储的记录

super_ozman的专栏 6223

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当数据不满足正态分布假设时,该非参数检验是传统双因素方差分析的有效替代方案。文章从原理、R环境配置、数据准备、代码实现、结果解读到事后比较与可视化,提供了完整的实战指南,帮助研究者稳健地分析多因素实验设计中的主效应和交互效应。

cc789的博客 406

【原创】HBase中列族设计的原则

    HBase表在进行模式设计时,首先考虑的一个问题是,这个表应该有多少个列族。一张表设计多少列族合理呢?相信这个问题困扰着不少HBase初学者。让我们来先简单分析一下HBase的实现原理。     HBase中的表和其数据库一样,也是由行和列组成的,虽说模式有些不同。HBase中的表可能达到数十亿行和数百万列,表的大小可能达到TB级,显然不可能在一台机器上存放整张表。相反,一张表在存储...

iteye_13226的博客 1898

WPS集成DeepSeek最新教程,附详细图文,让文案生成更智能

本文将为大家详细介绍如何将 DeepSeek 功能集成到 WPS 中,通过 OfficeAI 插件,你无需进行复杂的本地部署,只需通过官网连接即可快速启用 DeepSeek 强大的 AI 功能。不论是文案生成、翻译校对,还是深度推理、决策支持,DeepSeek 都能为你提供便捷的解决方案。让我们一起来看看如何操作吧!

Java徐师兄的博客 6万+

新版本大疆智图4.5 永久许可摄影测量建模软件

大疆智图支持常见格式的成果输出,包括 TIFF 正射影像和高程模型、LAS 格式点云,以及 B3DM、OSGB、OBJ 等六种常用格式的三维模型,还包括 DXF 和 SHP 等格式的等高线。大疆智图 DJI Terra是领先的三维重建软件,提供先进的技术和简单的操作,一站式解决方案,从航线规划到数据的获取,以及模型重建、数据分析等都提供独一无二的支持,优化项目工程,提供自动化优势,获得更有效智能的决策和行动,最终用户可以获得理想的结果,减轻工作压力,提高作业效率。质量报告和剖面查看功能有助于分析点云质量。

qq_62821232的博客 6892

Hbase启动没有HMaster进程问题解决

目录1.问题2.解决2.1 启动的报错2.2 NameNode 状态问题2.3 日志机架感知报错3.问题解决 1.问题 之前已在虚拟机安装好了zookeeper和hdfs2.3.6,并确认这两个东西能正常使用。安装好hbase1.4.1后启动找不到hmaster进程,已确认没有版本冲突。但能启动HRegionServer进程。然后ip:16010/master-status访问根本拒绝访问。 2.解决 2.1 启动的报错 启动报错 OpenJDK 64-Bit Server VM warning: ign

mizuhokaga的博客 2万+

逆向拆解Android车机:VehicleHal如何通过HIDL与CarService通信?

本文深入剖析了Android Automotive OS中VehicleHal与CarService通过HIDL进行通信的底层机制。从逆向工程视角出发,详细介绍了如何捕获和分析HIDL调用日志,解析关键属性数据结构,并演示了利用SocketComm工具进行恶意属性注入攻击的实战路径,为车机系统安全评估提供了技术参考。

soda5的博客 720

Hbase超时问题揭秘

Lindorm是阿里开源的一个多模数据库,所谓多模,就是支持宽表、时序、对象、文本、队列、空间等多种数据模型,模型之间数据互融互通,具备数据接入、存储、检索、计算、分析等一体化融合处理与服务的能力,官方宣称:吞吐性能是开源HBase的3~7倍,P99时延为开源HBase的1/10,平均故障恢复时间相比开源HBase升10倍,支持冷热分离,压缩率比开源HBase提升一倍,综合存储成本为开源的1/2。需要注意的是,HBase的删除操作并不是实时的,而是通过Compaction过程逐步进行的。

qq_40023049的博客 1723

PSINS工具箱学习(四)捷联惯导更新算法

原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。

实践出真理,接毕设/课设项目开发指导 607

Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动

上一章节`Qemu`篇我们已经实现了我们`SOC`的`power reset`和 `power down` 寄存器,本章节我们就在`Linux driver`中去实现它

DSMGUOGUO的博客 542

HBASE 安装后 hbase shell 启动失败问题

1, 安装HBASE, 并且启动成功 [root@MASTER opt]# jps 21920 SecondaryNameNode 2273 HMaster 21441 NameNode 5490 ResourceManager 1844 QuorumPeerMain 2501 HRegionServer 21653 DataNode 3532 Jps 22236 No

reylee的博客 1万+

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1826

hbase热点问题排查及处理

先把region先移动到其他实例,观察10.22.33.41 cup是否降下来, 并观察10.22.9.4,10.22.9.6节点cpu是否明显上升, 确认该表HBASE_TPI导致cup过高。Hbase shell执行切分region命令,会把原先1个region切分为2个region,切分完成后再执行合并的动作, 可以暂时缓解region热点问题。4.重启regionserver(看某个regionserver是否读写明显超其他regionserve,如有该情况可重启单个regionserver节点)

码不停歇的博客 1034

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4628

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【HBase入门】10. HBase高可用、HBase架构、常见问题汇总

考虑关于HBase集群的一个问题,在当前的HBase集群中,只有一个Master,一旦Master出现故障,将会导致HBase不再可用。所以,在实际的生产环境中,是非常有必要搭建一个高可用的HBase集群的。

优快云GuoYuying的博客 1407

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

HBase运维中遇到的问题

在hbase服务级别core-site.xml文件中自定义hadoop.proxyuser.sxappopt.hosts=*,hadoop.proxyuser. sxappopt.groups=*两个参数,保存后重启hbase,修改这两个参数后可能会引起其他的一些组件之间的认证问题。另外提醒大家使用大数据集群的服务器就配上所有的节点。该问题的原因是从源集群复制过来的文件在目标集群上不存在,检查目标集群,可发现目标集群的NameNode上有出现未找到的文件,也就是说文件原来是存在的,但过程中又被删除了。

h952520296的博客 8974

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HBase启动问题总结

HBase启动问题总结1) Server is not running yet解决办法2)KeeperErrorCode = NoNode for /hbase/master/master 1) Server is not running yet ./hbase shell进入HBase Client端后尝试新建一个表格报错 Server is not running yet: $ ./hbas...

wj的博客 4144

HBase 遇到的问题以及处理

每次合并后,如合并 A 和 C,HBase 将开始对 RegionD 进行压缩。这种场景下,和以上的处理方式相同,需要注意的是这Region进行Compact的时候不能合并成功,在hbase shell 进行合并后,可以观察HMaster的日志,如果最终可以合并成功,则不会出现error日志信息,如果遇到始终不能合并的Region,可以先尝试将此Region下线掉(unassign region),再次上线(assign region),再执行merge操作。可以看到属于该表的每个区域的开始键/结束键。

偶是一只小小鸟~ 2333

hbase+java+springboot使用的一个问题,hbase查询卡住

我的服务是springboot+hbase的项目,具体现象如下: 执行到查询hbase的查询代码时没有异常,没有返回,也不往下执行,一直卡住不动。 经过最后把hbase-client的pom更改成hbase-shaded-client的pom问题得到解决。 问题的原因应该是自己的服务的pom中有protobuf的版本和hbase-client的冲突,hbase-client的pom中的protobuf的版本普遍比较老。具体什么是hbase-shaded-client,可以自行查阅。 ...

biaoge20150414的专栏 531

hbase问题总结

hbase启动时 : zookeeper 挂掉和 hmaster挂掉的问题 A: zookeeper 挂掉 ERROR [main] zookeeper.ZooKeeperWatcher:hconnection-0x6e1721d7, quorum=hadoop-senior01.ibeifeng.com:2181,baseZNode=/hbase Received unexpected Ke

keyuquan的博客 2567
上一篇: 让你彻底学会HBase
下一篇: 三十分钟学会SCALA
地球魔
博客等级 码龄6年 317粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值