后台维护任务

原文链接 : http://kudu.apache.org/docs/background_tasks.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813641

贡献者 : 小瑶 ApacheCN Apache中文网

Apache Kudu 后台维护任务

Kudu 依赖于许多重要的自动维护活动运行后台任务。这些任务包括将数据从内存刷新到磁盘,压缩数据以提高性能,释放磁盘空间等。

Maintenance manager ( 维护管理 )

maintenance manager 安排并运行后台任务。在任何给定的时间点,maintenance manager 根据当时所需的改进来确定下一个任务的优先级,例如减轻内存压力,提高读取性能或释放磁盘空间。通过设置 —maintenance_manager_num_threads 可以控制专用于运行后台任务的工作线程数。

Flushing data to disk ( 将数据刷新到磁盘 )

从内存到磁盘 flush 数据可以缓解内存压力,并可通过从 MemRowSet 中的写入优化的面向行的内存中格式切换到磁盘上读取优化的以列为单位的格式来提高读取性能。刷新数据的后台任务包括 FlushMRSOpFlushDeltaMemStoresOp

与这些操作相关联的 metrics 分别具有前缀 flush_mrsflush_dms

Compacting on-disk data ( 压缩磁盘数据 )

Kudu 不断执行几种类型的压缩任务,以便在一段时间内保持一致的读写性能。将多个 DiskRowSets 组合到一个 DiskRowSet 中的合并压缩由 CompactRowSetsOp 运行。还可以运行两种类型的 delta 存储压缩操作:MinorDeltaCompactionOpMajorDeltaCompactionOp

有关这些不同类型的压实操作的更多信息,请参阅 Kudu Tablet 设计文档

Write-ahead log GC ( 预写日志 GC )

Kudu 每个 tablet 维护一个预先记录日志( WAL ),分为固定大小的分段。当活动段达到配置大小(由 —log_segment_size_mb 控制)时,tablet 会定期将 WAL 滚动到新的日志段。为了节省磁盘空间并减少启动时间,称为 LogGCOp 的后台任务尝试通过从本地节点不再需要它们的持久性而将其从磁盘中删除,从而对其进行垃圾收集( GC )旧的 WAL 段。

与此后台任务相关联的 metrics 具有前缀 log_gc

Tablet history GC and the ancient history mark ( tablet 历史GC和古代历史记号 )

因为 Kudu 使用多重并发控制( MVCC )机制来确保快照扫描可以从新的更改隔离到一个表中,所以定期对旧的历史数据进行垃圾回收(删除)以释放磁盘空间。虽然 Kudu 不会删除在最新版本的数据中可见的行或数据,但 Kudu 会删除不再可见的旧更改的记录。

历史上的 MVCC 数据变得无法访问并被自由删除的时间点被称为古代历史记录( AHM )。可以通过设置 —tablet_history_max_age_sec 来配置 AHM

有两个后台任务,GC 历史 MVCC 数据早于 AHM :运行合并压缩(称为 CompactRowSetsOp (见上))的后台任务,以及一个单独的后台任务,可以删除旧的撤消增量块,称为 UndoDeltaBlockGCOp 。运行 UndoDeltaBlockGCOp 可减少所有工作负载中的磁盘空间使用情况,特别是在更新或升级版本较高的系统中。

与此后台任务相关联的 metrics 具有前缀 undo_delta_block