正確答案是:A: compact操作
分析:
在HBase中,HRegion是一個基本的存儲單元,它包含多個Store,每個Store對應(yīng)一個列族。每個Store中又包含多個StoreFile(HFile),這些文件是HBase用來存儲數(shù)據(jù)的底層文件。
當(dāng)數(shù)據(jù)不斷寫入HRegion時,會產(chǎn)生多個StoreFile。隨著StoreFile數(shù)量的增加,數(shù)據(jù)讀取的效率可能會下降,因為需要訪問多個文件來獲取完整的數(shù)據(jù)集。因此,當(dāng)StoreFile的數(shù)量達(dá)到一定閾值時,HBase會觸發(fā)compaction操作。
Compaction有兩種類型:
1. **Minor Compaction**:合并多個較小的StoreFile為一個較大的StoreFile,減少StoreFile的數(shù)量,提升讀取性能。
2. **Major Compaction**:不僅合并StoreFile,還會清理掉已經(jīng)刪除的數(shù)據(jù)和過期的數(shù)據(jù)(TTL過期),釋放存儲空間。
相比之下,split操作是在一個HRegion的大小超過一定閾值時觸發(fā)的,用于將一個過大的HRegion拆分成兩個較小的HRegion,以保持負(fù)載均衡。Flush操作是將MemStore中的數(shù)據(jù)寫入磁盤生成新的StoreFile。而write操作是數(shù)據(jù)寫入的過程。
因此,題目中描述的情形是StoreFile數(shù)量達(dá)到閾值,應(yīng)該觸發(fā)的是compact操作。