2012-01-31 2 views
2

내 mapreduce 스크립트 내에서 hadoop의 hdfs 클러스터에있는 파일을 참조하고 싶습니다.mapreduce에서 로컬 hdfs 파일을 어떻게 참조합니까?

전체 경로 (hdfs : // ip/path/to/file)를 사용하지 않고 대신 local/path/to/file 참조를 사용할 수 있습니까? 저는 java를 사용하고 다음과 같이 시도했습니다 :

File file = new File(stringPathToFile); 

그러나 로컬 파일 시스템을 참조하는 것으로 보입니다.

미리 감사드립니다.

+0

하지만 HDFS 액세스가 로컬 파일 액세스보다 빠르므로 HDFS 경로를 더 잘 전달할 수 있습니다. – Amnesiac

답변

4

Hadoop API으로 파일에 액세스해야합니다. 아마도 open을 찾고 있습니다. 이렇게하면 일반적인 열린 파일처럼 작동하는 스트림이 제공됩니다. File은 HDFS에서 파일을 다루는 방법을 알지 못합니다.

나는 이것을하는 방법을 보여주는 code example을 발견했다.


편집 : 다시 질문을 읽고 나면, 난 당신이 맵리 듀스 작업의 내부에서이 액세스하는났습니다. 파일이 충분히 작 으면 (한 컴퓨터의 디스크에있을 수 있음) DistributedCache을 사용하는 것이 좋습니다. 이렇게하면 작업을 실행하는 모든 노드에 파일이 저장되어 신속하게 액세스 할 수 있습니다. 여러 매퍼로 HDFS를 읽으면 작업에 네트워크 대역폭 병목 현상이 발생할 수 있습니다.

관련 문제