目录
表是什么?
什么是快照?
归档
克隆和恢复表
从快照中克隆表
从快照中恢复表
未来的改进
结论
首页 数据库 mysql教程 Apache HBase 快照介绍之二:深入探索

Apache HBase 快照介绍之二:深入探索

Jun 07, 2016 pm 04:31 PM
apache hbase 介绍 快照 探索 深入

本文由 ImportNew - 陈 晨 翻译自 Cloudera。如需转载本文,请先参见文章末尾处的转载要求。 在关于Apache HBase 快照系列的第一篇中,我们学到了如何使用新的快照特性,以及实现背后的一些理论支持。现在是时候再深入探索一些技术细节了。 表是什么? HBase

本文由 ImportNew - 陈 晨 翻译自 Cloudera。如需转载本文,请先参见文章末尾处的转载要求。

在关于Apache HBase快照系列的第一篇中,我们学到了如何使用新的快照特性,以及实现背后的一些理论支持。现在是时候再深入探索一些技术细节了。

表是什么?

HBase表包含一系列元数据信息和键值对集合。

表信息:一份描述“设置”的清单文件,如列族,压缩类型与编码,布隆(bloom)过滤器类型等。

域:表“分区”称之为域。每个域都通过定义起始键和终止键来负责管理一份连续的键值集合。

WALs/MemStore:在数据写入磁盘之前,put会先写到写前日志(Write Ahead Log – WAL)然后保存在内存中,直到内存压力触发写入磁盘。WAL为恢复那些因为异常没有写入磁盘的put操作提供了一个简单的方式。

HFiles:某些时候所有数据都写入了磁盘。HFile就是HBase存储键值对的文件格式,HFile是不变的。但是当合并或域删除时可以被删除掉。(注意:想了解更多HBase写入过程的内容可以看下HBase写入过程博文,对于HFiles更多的细节可以看下HBase I/O – HFiles 博文)

什么是快照?

快照就是一系列元数据信息集合,能够允许管理员将表恢复至生成快照时的状态。快照不是表的复制。最简单的方式就是把它想象成为了追踪元数据(表信息和域)和数据(HFiles, 内存存储, WALs)一系列操作的集合。在生成快照操作中没有执行任何复制数据的动作。

离线快照:讨论快照的最简单的场景就是当一张表被关闭了。关闭一张表意味着所有的数据都写入了磁盘,而且不允许任何读写操作。在这种情况下,生成快照仅仅就是获取表元数据并且与磁盘中的HFiles保持关联。主节点执行操作需要的时间,主要取决于HDFS的namenode提供文件列表需要的时间。

在线快照:在大部分情况下,表都是开启的,而且每个域服务器都不断的处理put和get请求。在这种情况下,主节点接收到快照请求并要求每个域服务器都为其负责的域生成一份快照。

主节点和域服务器之间的通信是通过Apache ZooKeeper的,使用了类似两阶段提交事务。主节点建立一个“准备快照”的znode。每个域服务器会处理请求,并且为指定的表在其负责范围内的域准备快照。一旦准备完成,就会在准备请求的znode下建立一个子节点,意味着“准备完成”。

一旦所有域服务器都回报了他们的状态,主节点就建立另一个znode表示“提交快照”;每个域服务器会完成快照并在加入节点前报告状态。一旦所有域服务器都回报完成,主节点会完成快照并标记操作完成。若某个域服务器报告失败,主节点会新建znode来广播放弃信息。

当域服务器继续处理新请求是,不同的用例情况下可能需要不同的一致性模型。例如有人可能对不包含内存中最新数据的不完全的快照感兴趣,而有的人希望锁定写操作来获得一份完全保证一致性的快照以及其他可能性。

因此在域服务器上生成快照的程序是可拔插的。现在唯一的实现是“Flush Snapshot”,就是在生成快照之前进行写入操作(flush)来保证列一致性。其他的使用不同的一致性策略的程序可能会在未来实现。

在线生成快照需要的时间取决于实施快照操作并且将成功状态回报给主节点最慢的域服务器。这样的操作差不多在数秒之内完成。

归档

就像我们之前看到的,HFiles是不可变的。这样使得我们避免了在快照或克隆操作中复制数据,但在合并过程中文件被删除或者被合并后的版本替代。在这样情况下,如果有快照或者克隆表指向其中某些文件,可以将他们转移到一个“归档”位置而不是删除。如果你删除了快照且该文件不存在其他的引用,则该文件会被删除。

克隆和恢复表

当快照被用于在用户或程序异常后恢复/还原表时,可以看做是一个备份方案,但实际上快照特性的用处远远超过简单的备份还原。当从快照中克隆表后,你可以写一个MapReduce job或者简单应用来有选择性的合并差异,或者其他你认为重要的内容写入产品环境。另外一个场景就是你能够测试结构变化或者更新数据,而不用为复制表等待数小时并且最后硬盘中也不会存在大量重复数据。

从快照中克隆表

当管理员执行克隆操作时,按快照中的表结构建立了新表并按快照域信息中的开始/结束键分割。一旦表元数据建立,能够像快照使用的方式一样而不用拷入数据。因为HFiles是不可变的只是对建立的源文件的引用,这样就避免了数据拷贝并允许克隆能够修改而不影响源表或镜像。克隆操作是由主节点执行的。

从快照中恢复表

恢复操作与克隆操作相似。你可以把它想象成时删除表之后再从快照中克隆出来。恢复操作会恢复快照中的老数据并删除快照中不存在的数据,表结构也会恢复到与快照相同。在底层,恢复操作时通过比较表状态与快照间不同来实现的,移除快照中不存在的文件并加上快照中有而当前表状态中没有的文件关联。同样的表结构也被修改至快照生成时刻的状态。恢复操作是由主节点执行并且表要处于关闭状态。

未来的改进

当前,快照实现了包括所有基础功能性需求。如我们所见,新的在线快照一致性策略能够提供更好的伸缩性、一致性及性能提高。更好的文件管理能够缩减HDFS NameNode的加载时间以及提高磁盘空间管理。接下来,测量数据、Web 界面 (Hue)以及东西会加入到目标列表。

结论

HBase快照添加了类似“过程协作”的新功能用于在线快照、写时备份、恢复和克隆。

快照基于机器拷贝数据和复制表之上提供了更快更好的选择来处理“备份”和“克隆”方案。所有的快照操作(快照、恢复、克隆)不执行数据复制,使得表的快照更快并且节省磁盘空间。

期望了解更多关于启动和使用快照信息,请访问HBase的操作管理文档。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1279
29
C# 教程
1257
24
apache中cgi目录怎么设置 apache中cgi目录怎么设置 Apr 13, 2025 pm 01:18 PM

要在 Apache 中设置 CGI 目录,需要执行以下步骤:创建 CGI 目录,如 "cgi-bin",并授予 Apache 写入权限。在 Apache 配置文件中添加 "ScriptAlias" 指令块,将 CGI 目录映射到 "/cgi-bin" URL。重启 Apache。

怎么查看自己的apache版本 怎么查看自己的apache版本 Apr 13, 2025 pm 01:15 PM

有 3 种方法可在 Apache 服务器上查看版本:通过命令行(apachectl -v 或 apache2ctl -v)、检查服务器状态页(http://<服务器IP或域名>/server-status)或查看 Apache 配置文件(ServerVersion: Apache/<版本号>)。

apache怎么连接数据库 apache怎么连接数据库 Apr 13, 2025 pm 01:03 PM

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

apache80端口被占用怎么办 apache80端口被占用怎么办 Apr 13, 2025 pm 01:24 PM

当 Apache 80 端口被占用时,解决方法如下:找出占用该端口的进程并关闭它。检查防火墙设置以确保 Apache 未被阻止。如果以上方法无效,请重新配置 Apache 使用不同的端口。重启 Apache 服务。

怎么查看apache版本 怎么查看apache版本 Apr 13, 2025 pm 01:00 PM

如何查看 Apache 版本?启动 Apache 服务器:使用 sudo service apache2 start 启动服务器。查看版本号:使用以下方法之一查看版本:命令行:运行 apache2 -v 命令。服务器状态页面:在 Web 浏览器中访问 Apache 服务器的默认端口(通常为 80),版本信息显示在页面底部。

apache不能启动怎么解决 apache不能启动怎么解决 Apr 13, 2025 pm 01:21 PM

Apache 无法启动,原因可能有以下几点:配置文件语法错误。与其他应用程序端口冲突。权限问题。内存不足。进程死锁。守护进程故障。SELinux 权限问题。防火墙问题。软件冲突。

apache怎么配置zend apache怎么配置zend Apr 13, 2025 pm 12:57 PM

如何在 Apache 中配置 Zend?在 Apache Web 服务器中配置 Zend Framework 的步骤如下:安装 Zend Framework 并解压到 Web 服务器目录中。创建 .htaccess 文件。创建 Zend 应用程序目录并添加 index.php 文件。配置 Zend 应用程序(application.ini)。重新启动 Apache Web 服务器。

apache怎么删除多于的服务器名 apache怎么删除多于的服务器名 Apr 13, 2025 pm 01:09 PM

要从 Apache 中删除多余的 ServerName 指令,可以采取以下步骤:识别并删除多余的 ServerName 指令。重新启动 Apache 使更改生效。检查配置文件验证更改。测试服务器确保问题已解决。

See all articles