2
我明白爲什麼scan.setCaching對mapreduce作業很好,但我不明白爲什麼setCacheBlocks(false)是壞的。它是否使服務器負擔過重?爲什麼scan.setCacheBlocks(false)被推薦用於mapReduce作業?
我明白爲什麼scan.setCaching對mapreduce作業很好,但我不明白爲什麼setCacheBlocks(false)是壞的。它是否使服務器負擔過重?爲什麼scan.setCacheBlocks(false)被推薦用於mapReduce作業?
簡而言之 - 是,如果在mapreduce作業中將blockcaching設置爲true,則會加重RegionServer負擔。
當您主要在輸入掃描中使用mapreduce作業時,最近掃描的輸入在下一個映射階段將被丟棄的概率很高。 Blockcache是LRU ..它在第一次請求期間將數據放入Blockcache中,然後發現它在第二次請求中沒有使用並將其交換,並且過程繼續。所以RegionServer不斷地將數據交換進入和離開BlockCache以獲取收益。它只是很多不必要的IO使用。
但是在正常閱讀的情況下,建議從數據本地獲取它。
http://grokbase.com/p/hbase/user/124mhgtesj/applying-filters-to-resultscanner希望它有幫助 – Zyn
@Zyn感謝這一點 - 但它不能解釋爲什麼建議不依靠mapRed作業的塊緩存......除非我錯過了它。 – hba