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的操作管理文档。
原文地址:Apache HBase 快照介绍之二:深入探索, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

導出 XML 為 PDF 有兩種方法:使用 XSLT 和使用 XML 數據綁定庫。 XSLT:創建 XSLT 樣式表,指定 PDF 格式使用 XSLT 處理器轉換 XML 數據XML 數據綁定庫:導入 XML 數據綁定庫創建 PDF 文檔對象加載 XML 數據導出 PDF 文件哪種方法更好取決於需求。 XSLT 提供靈活性,而數據綁定庫實現簡單;對於簡單轉換,數據綁定庫更好,對於復雜轉換,XSLT 更合適。

要在服務器端設置字符編碼以解決 Bootstrap Table 亂碼,需要按以下步驟進行:檢查服務器字符編碼;編輯服務器配置文件;設置字符編碼為 UTF-8;保存並重啟服務器;驗證編碼。

要在 Apache 中設置 CGI 目錄,需要執行以下步驟:創建 CGI 目錄,如 "cgi-bin",並授予 Apache 寫入權限。在 Apache 配置文件中添加 "ScriptAlias" 指令塊,將 CGI 目錄映射到 "/cgi-bin" URL。重啟 Apache。

啟動 Apache 的步驟如下:安裝 Apache(命令:sudo apt-get install apache2 或從官網下載)啟動 Apache(Linux:sudo systemctl start apache2;Windows:右鍵“Apache2.4”服務並選擇“啟動”)檢查是否已啟動(Linux:sudo systemctl status apache2;Windows:查看服務管理器中“Apache2.4”服務的狀態)啟用開機自動啟動(可選,Linux:sudo systemctl

本文介紹幾種檢查Debian系統OpenSSL配置的方法,助您快速掌握系統安全狀態。一、確認OpenSSL版本首先,驗證OpenSSL是否已安裝及版本信息。在終端輸入以下命令:opensslversion若未安裝,系統將提示錯誤。二、查看配置文件OpenSSL主配置文件通常位於/etc/ssl/openssl.cnf。您可以使用文本編輯器(例如nano)查看:sudonano/etc/ssl/openssl.cnf此文件包含密鑰、證書路徑及加密算法等重要配置信息。三、利用ope

本文將闡述如何通過分析Debian系統下的Apache日誌來提升網站性能。一、日誌分析基礎Apache日誌記錄了所有HTTP請求的詳細信息,包括IP地址、時間戳、請求URL、HTTP方法和響應代碼等。在Debian系統中,這些日誌通常位於/var/log/apache2/access.log和/var/log/apache2/error.log目錄下。理解日誌結構是有效分析的第一步。二、日誌分析工具您可以使用多種工具分析Apache日誌:命令行工具:grep、awk、sed等命令行工具可

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。
