列族數對Flush的影響
在Hbase中,調用API往對應的表中插入數據是會寫到MenStore的。而MenStore是一種內存結構。每個列族對應一個MenStore和多個HFile。
列族越多,會導致內存中存在越多的MrenStore。存儲在MenStore中的數據在滿足一定條件下將會促發Flush操作,這樣每次Flush的時候都會在磁盤中生成一個HFile文件,並且,Flush操作涉及到一定IO操作,也會阻塞客戶端的讀寫操作。
這樣會導致越多的列族最終持久化到磁盤的HFile越多。然而,當前的Flush操作是Region級別的,也就是說,Region中某個MenStore被Flush,同一個Region的其他Menstore也會進行Flush操作。當表有很多列族,而且列族之間數據不均勻,比如一個列族數據有100w條,另一個列族只有10w條數據,這樣,Flush操作的時候就會有更多的小文件產生。