2013-03-12 1 views

답변

4

는 필요에 따라 다른 접근 방법이 있습니다 :

  • 각 매퍼에서 파일을 직접 from HDFS을 읽어보십시오. 이는 공통 파일이 실제로 작을 때만 권장됩니다.
  • CompositeInputFormat을 사용하면 맵 측 결합이라고하는 각 맵퍼에서 여러 파일을 한 번에 읽을 수 있습니다. 두 파일은 같은 방식으로 분할되고 분할됩니다.
  • 작업을 설정하는 동안 파일을 DistributedCache에 추가하십시오. 파일은 모든 매퍼가 액세스 할 수있는 모든 노드에 저장됩니다.
+0

안녕하세요, @harpun : 답장을 보내 주셔서 감사합니다. 그러나 나는 아직도 혼란 스러울만한 것들을 가지고있다. 나는 [link] (http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata)에서 분산 캐시 (Distributed Cache)가 hdfs에게 모든 노드에 복사 파일을 보내라고 말한 것을 보았다. 각 노드가 부? 이렇게하면 옵션 (1)과 옵션 (3)의 차이는 무엇입니까 – JoJo

+0

@ user2052141 예, 모든 노드는이 캐시에 저장된 파일의 복사본을 얻을 것입니다. 또한 작업 설정시, 즉 실제로 작업을 실행하기 전에 캐시에 저장 될 파일을 지정해야합니다. 접근법 (1)에서 작업의 모든 단계에서 HDFS의 모든 파일에 액세스 할 수 있습니다. 일반 파일의 경우 (1)은 (3)보다 느립니다. – harpun

+0

안녕하세요, @harpun : 대단히 감사합니다. 또 다른 질문은 DistributedCache.getLocalCacheFiles와 DistributedCache.getCacheFiles의 차이점을 알고 있다는 것입니다. 나는 그것을 구현하기 위해 프로그래밍하고있다 : cacheFiles = DistributedCache.getLocalCacheFiles (job); uris = DistributedCache.getCacheFiles (job); 그러나 cacheFiles는 null이지만 uris는 hdfs의 특정 파일을 가리킬 수 있습니다. – JoJo

관련 문제