- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有人知道区域服务器队列大小是什么意思吗?
根据文档的定义:
9.2.5. hbase.regionserver.compactionQueueSize Size of the compaction queue. This is the number of stores in the region that have been targeted for compaction.
就是regionserver需要被major compacted的Store(或者store files?听说过两个版本)的数量。
我的工作是使用顺序键(非分布式)以热点方式写入数据。我在度量历史记录中看到,一次发生了 compaction-queue-size = 4。这在理论上是不可能的,因为我在任何时候都只有一个商店可以写(顺序键)。
然后我深入研究日志,发现有任何关于队列大小> 0 的提示:每个主要压缩都说“此选择在队列中等待 0 秒”
013-11-26 12:28:00,778 INFO [regionserver60020-smallCompactions-1385440028938] regionserver.HStore: Completed major compaction of 3 file(s) in f1 of myTable.key.md5.... into md5....(size=607.8 M), total size for store is 645.8 M. This selection was in queue for 0sec, and took 39sec to execute.
更令人困惑的是:早期版本不是启用了多线程,只是将每个压缩作业分配给一个线程,因此存在压缩队列吗?
遗憾的是 hbase 文档中没有详细解释。
最佳答案
我不完全理解你的问题。但让我尽力回答这个问题。
首先让我们谈谈HBase的一些术语。 Source
Table (HBase table)
Region (Regions for the table)
Store (Store per ColumnFamily for each Region for the table)
MemStore (MemStore for each Store for each Region for the table)
StoreFile (StoreFiles for each Store for each Region for the table)
Block (Blocks within a StoreFile within a Store for each Region for the table)
HBase 中的 Region
定义为两个行键之间的 Rows
。如果您的 Table
中有多个 ColumnFamily
,则每个 ColumnFamily
每个 都会得到一个
。每个 Store
地区Store
都有一个 MemStore
和 0 个或多个 StoreFiles
StoreFiles 在刷新 MemStore 时创建。每隔一段时间,后台线程会触发压缩以控制文件数量。有两种类型的压缩:主要压缩和次要压缩。当一个 Store 被作为 minor compaction 的目标时,它也会拾取一些相邻的 StoreFiles 并将它们重写为一个。次要压缩不会删除已删除/过期的数据。如果次要压缩收集了 Store 中的所有 StoreFiles,则它会被提升为主要压缩。在主要压缩中,Store 的所有 StoreFiles 都被重写为一个 StoreFile。
好的... 那么什么是压缩队列?它是 RegionServer 中作为压缩目标的 Store 数量。同样,刷新队列是等待刷新的 MemStores 的数量。
至于为什么有一个队列,当你可以异步的时候,我不知道。这将是一个很好的问题,可以在 HBase 邮件列表上提出。它往往具有更快的响应时间。
编辑:压缩队列不会占用 RegionServer 100% 的资源。
关于hadoop - HBase 压缩队列大小到底是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20230942/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!