在规划分布式系统部署时,必须执行一些基本的数学估算,以确保在给定系统的数据和软件要求的情况下有足够的计算能力。而对于备份和还原功能,在估算备份和还原策略的性能时,网络容量是最大的瓶颈。第二个瓶颈是可以读/写数据的速度。
要估计完整备份的持久化时间,我们必须了解调用的一般操作:
每个RegionServer上的预写日志滚动:根据每个RegionServer的不同负载,每个RegionServer一到数十秒。
获取表格的HBase快照:通常几十秒。根据构成表的region和文件的数量不同有所变化。
将快照导出到目的地:请参阅下文。与数据的大小和到目的地的网络带宽有关。
为了估计最后一步将花费多长时间,我们必须对硬件做出一些假设。请注意,这些对您的系统来说是 并非准确的 - 这些是您或您的管理员对您的系统所熟知的数字。假设在单个节点上从HDFS读取数据的速度上限为80MB / s(在该主机上运行的所有Mapper上),现代网络接口控制器(NIC)支持10Gb / s,架顶式交换机可以处理40Gb / s,集群之间的WAN为10Gb / s。这意味着您只能以1.25GB / s的速度向远程数据库发送数据 - 这意味着参与ExportSnapshot的16个节点(1.25 * 1024 / 80 = 16
)应该能够完全打满集群之间的链接。由于群集中有很多节点,我们可以让每个节点export一部分,仍然可以打满网络。这样对任何一个节点的影响较小,有助于确保本地SLA。如果快照的大小是10TB,这将完全备份将占用2.5小时的网络带宽(10 * 1024 / 1.25 / (60 * 60) = 2.23hrs
)
通常,本地集群与远程存储之间的WAN带宽很可能是完整备份速度的最大瓶颈。
当关注限制备份对“生产系统”的计算性能影响时,上述公式可以与hbase backup create
:-b
,-w
,-q
的可选命令行参数一起使用。 -b
选项限制每个工作程序(Mapper)写入数据的带宽。 -w
参数限制将在DistCp作业中生成的工作程序数量。 -q
允许用户指定YARN队列,该队列可以限制执行复制备份工作到特定节点 - 这可以将执行复制的备份工作任务隔离到一组非关键节点。将-b
和-w
选项与我们之前的公式相关联:-b
将用于限制每个节点以完全80MB/s的速度读取数据,-w
用于限制该任务只产生16个工作程序。
就像我们为完整备份所做的那样,我们也必须了解增量备份过程的运行时和成本。
识别自上次完全备份或增量备份以来的新预写日志:可忽略不计,根据来自备份系统表的先验知识就能获取。
读取,过滤和写入等同于WALls的“最小化”文件:以写入数据的速度为主,这个取决于HDFS的写入速度。
将HFiles拷贝到目的地:见上文。
对于第二步,此操作的主要成本是重写数据(假设WAL中的大多数数据被保留)。在这种情况下,我们可以假设每个节点的聚合写入速度为30MB / s。继续我们的16节点集群示例,这需要大约15分钟来执行50GB数据(50 * 1024/60/60 = 14.2)写入。启动DistCp MapReduce作业的时间可能会主导复制数据所需的实际时间,网络传输时间(50 / 1.25 = 40秒)可以忽略。