首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

HBase原理 | HBase RegionServer宕机数据恢复

HBase采用类LSM的架构体系,数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore),在满足一定条件下缓存数据再会异步刷新到硬盘。...而删除数据最好是一个文件一个文件整体删除,因此设计了日志滚动机制,方便文件整体删除。类似于Binlog的处理机制。 3....HLog失效:上文提到,很多日志数据在之后会因为失效进而可以被删除,并且删除操作是以文件为单元执行的。那怎么判断一个日志文件里面的数据失效了呢?...首先从原理上讲一旦数据从Memstore中落盘,对应的日志就可以被删除,因此一个文件所有数据失效,只需要看该文件中最大sequenceid对应的数据是否已经落盘就可以,HBase会在每次执行flush的时候纪录对应的最大的...HLog删除:HMaster后台会启动一个线程每隔一段时间(由参数’hbase.master.cleaner.interval’,默认1分钟)会检查一次文件夹OldWALs下的所有失效日志文件,确认是否可以被删除

2.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

HBase数据操作

# HBase数据操作 put delete 数据查询 get scan 数据统计 # put 语法 put '表名','行键','列族:列限定符','单元格值',时间戳 描述 必须指定表名、行键...', 描述:必须指定表名、行键和列族,列限定符和时间戳是可选参数; delete最小删除粒度为单元格,且不能跨列族删除 注意 delete操作并不会马上删除数据,只是将对应的数据打上删除标记...,只有在数据产生合并时,数据才会被删除。...语法 count '表名' hbase(main):004:0> count ‘student’ 3 row(s) in 0.0440 seconds 在关系型数据库中,有多少条记录就有多少行,表中的行数很容易统计...而在 HBase 里,计算逻辑行需要扫描全表的内容,重复的行键是不纳入计数的,且标记为删除数据也不纳入计数。

1.7K30

HBase数据定义

# HBase数据定义 HBase Shell 数据定义 创建表 表相关操作 查看某个表是否存在 查看当前HBase所有的表名 查看选定表的列族及其参数 修改表结构 删除表 清空数据 # HBase...exit 推出hbase shell # 数据定义 命令 描述 create 创建指定模式的新表 alter 修改表的结构,如添加新的列族 describe 展示表结构的信息,包括列族的数量与属性...list 列出HBase中已有的表 disable/enable 删除或更改表时,需禁用表,更改完后需要解禁表 disable_all 禁用所有的表 is_disabled 判断一个表是否被禁用 drop...删除表 truncate 如果只是想删除数据而不是表结构,用truncate来禁用表、删除表并自动重建表结构 # 创建表 语法 create '表名','列族名' 描述 必须指定表名和列族...,表中至少有两个列族; # 删除表 语法 disable 'teacher' drop ' teacher ' 注意:删除表之前需要先禁用表 # 清空数据 语法 truncate truncate 'teacher

1K20

Hbase-2.0.0_03_Hbase数据模型

1. hbase数据模型 ? 1.1. HBase数据模型术语 Table HBase表由多行组成。...每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。 为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供了两种数据版本回收方式。...HBase从不在修改数据,因此例如delete不会立即删除(或标记为已删除)与delete条件对应的存储文件中的条目。相反,会写一个所谓的墓碑,将会掩盖删除的值。...当HBase进行一次大的压实时,将对墓碑进行处理,实际地除去那些死值,以及墓碑本身。如果删除一行时指定的版本大于行中任何值的版本,则你可以认为删除完整的行。 1.9.3....Sort Order 所有数据模型操作HBase都以排序的顺序返回数据

1.6K20

HBase 数据读写流程

数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 row0001 的用户信息 要想取得这条数据...HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息 例如 region 的 开始KEY、结束KEY、所在server的地址…… ?...hbase:meta 表就像一个目录,通过他可以快速定位数据的实际位置 hbase:meta 表是存储在 ZooKeeper 中的,所以客户端就需要先访问 ZooKeeper,获取到 hbase:meta...,从中查询出目标数据是在哪个 regionserver 中的哪个 region 中,然后到 region 中进行读取 ?...但写操作会引发一些后续问题,例如HLog日志文件越来越大了、StoreFile越来越多了、当前region越来越大了,所以,系统有还有更多的工作需要做 系统会定期清理HLog日志文件,把其中已经写入文件的记录删除

2K81

HBase暴力删除HDFS数据后建表出现Table already exist问题的解决

在一些情况下,不得不对HBase数据进行暴力删除,这种情况如原始数据量特别大,而又不需要存储的时候。或者HBase无法启动等问题。...删除比较简单,直接调用hadoop fs -rm -r /hbase这样的命令即可实现对HDFS上存储的HBASE原始文件进行删除。(当然细划的可以删除掉某个具体的数据表)。...但是在删除完毕后,重启HBase后,创建数据表时候,发现出现table already exist的问题。 ? 才想起来,这种问题出现肯定是ZOOKEEPER还存在这些信息。...于是用zkCli.sh登录zookeeper,输入命令rmr /hbase,再重启hbase,果然建表就顺利通过。...摸了近几天的hbase,发现其非常繁琐,需要与zookeeper严格绑定,当然为了在某些情况下的恢复,它也显得非常重要。

1K50

HBase 数据存储结构

在「HBase」中, 从逻辑上来讲数据大概就长这样: 单从图中的逻辑模型来看, HBase 和 MySQL 的区别就是: 将不同的列归属与同一个列族下 支持多版本数据 这看着感觉也没有那么太大的区别呀,...在内存中维护一个有序的数据 将内存中的数据push 到磁盘中 将磁盘中的多个有序文件进行归并, 合成一个较大的有序文件 HBase存储 在「HBase」中, 数据的存储就使用了 「LSM 树」进行存储....其中每一条数据都是一条操作记录. 那么在「HBase」实现中的部分内容如下....按照这个顺序进行读取指定 row key 的某一列数据时, 最先拿到的数据就是最新的版本, 若是 delete 操作, 说明最后执行了删除操作, 即使后面有数据, 最新数据也是空...., 加速读取 根据数据块的位置和大小, 找到指定数据块并二分查找指定数据 HBase 数据列族式存储 先简单回顾一下行式存储和列式存储.

2.6K20

hbase数据清理 原

Done. 0 row(s) in 1.2570 seconds hbase(main):023:0> enable 'SVNCHECKOUTTBL_UPT' 0 row(s) in 4.5620 seconds...hbase(main):024:0> hbase(main):026:0> major_compact('SVNCHECKOUTTBL_UPT') 0 row(s) in 0.1920 seconds...上面是基本的操作,如果你的表已经很满,满到几乎快把hadoop撑爆的时候,上面的方法是慢慢删除的方法,下面是具体的解释: ttl是hbase中表数据的过期时间,一个列族可以对应一个ttl值 habse...中数据删除不是立刻执行的,类似软删除,当你标识数据删除状态之后,hbase会在大版本合并的时候去真正的处理hadoop上的文件,进而释放磁盘空间, 另外注意一点,在修改表的ttl值的时候,一般需要先disable.../bin/sh exec /usr/local/code_hbase/hbase/bin/hbase shell <<EOF major_compact('TABLE') EOF

2.1K30

Hbase数据

海量数据存储解决方案:Hbase数据库解析 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统...就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。...HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。...Hbase数据库的操作 shell命令行: list:列出所欲表 create “表名”,“列族”,“多个列族” put “表名”,“行键”,“列族:列”,“值” get “表名”,“行键”...disable 表名 drop 表名 删除表 scan:查询全名 sqoop:数据传输

1.7K20

误删HBase数据如何抢救?

数据保护 当误删数据发生时候,不管三七二十一,第一要务是进入hbase shell,执行如下命令: ?...这里有必要解释一下HBase清理数据的原理: 首先HBase是一个LSM架构,不断发生着数据文件的写入和合并 当删除操作发生时,不会去清理数据文件中的数据,而是写入一个删除标记到新文件中。...数据恢复 数据恢复的前提数据没有被物理删除,也就是上文提及的。你只需要在查询(Scan)的时候,指定raw模式来搜索数据,就能看到被删除数据,之后你要做就是把数据再写入一次。...4.现在我们带上raw再次查找数据,不仅能看到被删除数据,还能看到删除标记。 ? 这里我设置了TIMERANGE, 指定的是数据写入的时间。...如果你使用的是云HBase,即便因为major compaction物理删除数据,只要你开启了备份功能,依然可以恢复。

1.7K40

2021年大数据HBase(一):HBase基本简介

HBase基本简介 一、HBase产生的背景介绍 从 1970 年开始,大多数的公司数据存储和维护使用的是关系型数据库 大数据技术出现后,很多拥有海量数据的公司开始选择像Hadoop的方式来存储海量数据..., 如果要进行随机读取数据,效率较低(压根就不支持) 总结: HADOOP仅适合存储大批量的数据, 进行顺序化读取数据, 并不支持随机读取数据操作 二、HBase的基本介绍 NoSQL是一个通用术语...,泛指一个数据库并不是使用SQL作为主要语言的非关系型数据HBase是BigTable的开源java版本。...Hbase查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务),从技术上来说,HBase更像是一个「数据 存储」而不是「数据库」,因为HBase缺少RDBMS中的许多特性,例如带类型的列...4、时空数据 ◼ 主要是轨迹, 气象网格之类, 滴滴打车的轨迹数据主要存在Hbase之中, 另外在所有大一点的数据量的车联网企业, 数据也是存储在HBase 5、CubeDb OLAP

1.7K40

2021年大数据HBase(三):HBase数据模型!!!【建议收藏】

HBase数据模型 在HBASE中,数据存储在具有行和列的表中。...这是看起来关系数据库(RDBMS)一样,但将HBASE表看成是多个维 度的Map结构更容易理解 术语: 表(Table) : HBase数据都是以表形式来组织的, HBase中的表由多个行组成..., 但在列族中不存储任何内容 所有的列族的数据全部都存储在一块(文件系统HDFS) Hbase官方建议所有的列族保持一样的列, 并且将同一类的列放在一个列族中 列标识符(Column Qualifier...,包含一个值和一个时间戳, 数据以二进制存储 版本号(verson num): 每条数据都会有版本号的概念 每条数据都可以有多个版本号, 默认值为系统时间戳, 类型为Long 时间戳(timeStamp...): 每个数据都会有时间戳的概念 在向Hbase插入更新数据的时候, HBase默认会将当前操作的时间记录下来, 当然也可以人为指定时间 不同版本的数据按照时间倒序排序, 即最新的数据排在最前面 -

1.1K20

数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

;         }     } 注意:truncate,清空表数据,实际底层操作是先使表不可用(下线),然后删除表,最后根据表信息重新创建一张新表。...} 6.2.6 删除多行数据(delete)     // 删除多行数据     public static void deleteData(String tableName, String rowKey...,如果不组装,则删除的是行键的数据(多行数据)         // delete.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column...("删除多行数据成功");         table.close();     } 6.2.7 获取所有数据(scan)     // 获取所有数据(全表扫描)     public static ...", "name", "hahahaha");         // 删除多行数据         // deleteData("student", "1001", "info", "name");

1.8K30
领券