2014-03-26 1 views
2

scan.setCaching이 mapreduce 작업에 적합한 이유를 이해하지만 setCacheBlocks (false)가 잘못된 이유를 이해할 수 없습니다. 서버에 과부하가 걸립니까?mapReduce 작업에 scan.setCacheBlocks (false)가 권장되는 이유는 무엇입니까?

+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 사용량이 너무 많습니다.
그러나 정상적인 읽기의 경우 데이터 지역에서 얻으려면 사실로 유지하는 것이 좋습니다.

관련 문제