为什么建议将 scan.setCacheBlocks(false) 用于 mapReduce 作业?

hba*_*hba 3 java hadoop hbase mapreduce

我明白为什么 scan.setCaching 对 mapreduce 作业有好处,但我不明白为什么 setCacheBlocks(false) 不好。它是否使服务器负担过重?

Cha*_*ant 5

简而言之,是的,如果您在 mapreduce 作业中将 blockcaching 设置为 true,它会给 RegionServer 带来负担。
当您主要在输入扫描上使用 mapreduce 作业时,很有可能最近扫描的输入将在下一个映射阶段被丢弃。Blockcache 是 LRU .. 它在第一次请求时将数据放入 Blockcache,然后在第二次请求中发现它没有使用并交换它并继续该过程。因此,RegionServer 不断地将数据交换进出 BlockCache,而没有任何收益。它只是大量不必要的 IO 使用。
但是在正常阅读的情况下,建议保持真实以从数据局部性中获益。