2014-03-26 30 views
2

我明白爲什麼scan.setCaching對mapreduce作業很好,但我不明白爲什麼setCacheBlocks(false)是壞的。它是否使服務器負擔過重?爲什麼scan.setCacheBlocks(false)被推薦用於mapReduce作業?

+0

http://grokbase.com/p/hbase/user/124mhgtesj/applying-filters-to-resultscanner希望它有幫助 – Zyn

+0

@Zyn感謝這一點 - 但它不能解釋爲什麼建議不依靠mapRed作業的塊緩存......除非我錯過了它。 – hba

回答

3

簡而言之 - ,如果在mapreduce作業中將blockcaching設置爲true,則會加重RegionServer負擔。
當您主要在輸入掃描中使用mapreduce作業時,最近掃描的輸入在下一個映射階段將被丟棄的概率很高。 Blockcache是​​LRU ..它在第一次請求期間將數據放入Blockcache中,然後發現它在第二次請求中沒有使用並將其交換,並且過程繼續。所以RegionServer不斷地將數據交換進入和離開BlockCache以獲取收益。它只是很多不必要的IO使用。
但是在正常閱讀的情況下,建議從數據本地獲取它。

相關問題