2012-10-23 2 views
0

분산 캐시 기능을 사용하여 추가하려는 파일 목록이 있습니다. 다른 파일을 다른 작업을 줄이기 위해 필요합니다. 예를 들어, 파일 A는 reduce 1로 필요하지만 파일 B는 reduce 2로 필요합니다. Job Conf에서 두 파일 모두 DistributedCache.addCacheFile() 메소드를 사용하여 추가됩니다. reduce 클래스 구성 메소드에서 DistributedCache.getCacheFiles()를 사용하여 파일을 가져옵니다. 파일 A는 reduce 1의 메모리에만, 파일 B는 reduce 2의 메모리에만 가질 수 있습니다. 또는 reduce 작업이 시작되기 전에 두 파일이 모두 메모리에 추가됩니다.분산 캐시 하둡 및 확장 성

이것을 이해한다면 프로그램에 분산 캐시를 사용할 수 있습니다. 내 관심사는 확장성에 관한 것입니다. 파일이 큽니다. 따라서 reduce 작업은 두 파일을 메모리에 둘 수 없습니다. 그러나 파일 중 하나를 보유 할 수 있습니다.

Pls help !!!

감사

+1

분산 캐시는 메모리에 없습니다. 계산을 실행하는 모든 호스트에 항아리와 함께 파일을 복사하는 것은 혼란스러운 이름입니다. –

+0

그 점을 지적 해 주셔서 감사합니다. 따라서 노드의 디스크 공간만큼 파일을 추가 할 수 있습니까? –

+0

감속기가 파일을 처리 할 때 전체 파일을 메모리에 보유해야합니까? –

답변

0

캐시 파일을 반환하는 방법은, 당신은 당신이 그들을 추가 된 순서대로 캐시 된 모든 파일 이름의 배열을 반환합니다. 따라서 감속기 1에게 배열 [0] 파일을 얻고 2를 줄이면 배열 [1] 파일을 얻을 수 있습니다. 이 캐시는 매우 큰 파일을 포함하지 않는 것이 좋습니다.

+0

답장을 보내 주셔서 감사합니다 !! 따라서 분산 캐시에 추가 된 파일의 수와 관계없이 감속기는 원하는 캐시를 선택할 수 있습니다. 나 맞아? 그리고 reduce 노드로 복사하고 있기 때문에 그것을 디스크에 복사하고 있기 때문에 파일은 노드의 디스크 공간만큼 커질 수 있습니다. 맞습니까? –

+0

Mapper/Reducer는 DistributedCache를 사용하여 캐시에있는 파일 목록을 가져올 수 있으며 필요한 파일을 처리 할 수 ​​있습니다. 하지만, Hadoop 프레임 워크는 파일이 Mapper/Reducer에 의해 사용되는지 여부에 관계없이 TaskTracker 노드에 모든 파일을 복사합니다. –

+0

감사! 그건 내 의심을 정말로 씻어 버렸다. 나는 한 가지 더 질문이있다. 파일을 모든 노드에 복사하기 때문에 복사 된 파일은 네트워크를 통해 전송되므로 파일이 크거나 노드가 많은 경우 네트워크 성능에 영향을주지 않습니까? –