2014-03-26 28 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使用。
但是在正常阅读的情况下,建议从数据本地获取它。

相关问题