유감-hadoop windows client 미지원

버전이 언제부터인지는 모르겠지만 windows에서 hadoop client 모듈을 이용하여 파일 upload 작업을 수행할 수 없게 되었다.
서버나 Map&Reduce 작업 수행은 linux에서 하도록 하는 것은 어쩔수 없겠지만 파일 업로드하는 작업을 windows에서 할 수 없도록 한 것은 이해가 안된다.

소스를 뒤져본 결과 파일 업로드 로컬에 temp 파일을 만든 후 close 시 전송하는데 이 temp 파일을 만들 때 로컬 디스크에 여유 공간을 확인하기 위해 "df" 명령을 이용하고 있다. 이런...
그리고 생성되는 파일도 무조건 상대경로를 이용하여 "tmp" 아래에 만들고 있다.

windows에서 클라이언트 모듈을 사용할 경우 다음 코드를 수정해 주면 된다.

org.apache.hadoop.dfs.DFSClient 에서

DFSClient의 private File newBackupFile() throws IOException 부분을 찾아 모두 주석처리하고 다음 코드로 대체한다.

      String name = "c:/temp/client-" + Math.abs(r.nextLong());
      File result = new File(name);
      return result;  

build package 후 jar를 이용하면 windows에서도 사용 가능하다.

hadoop 커뮤니티에 따질려고 해도 영어 때문에... 쩝.

windows에서 발생하는 대부분의 문제는 경로와 df 또는 sh 명령 문제이다.

소스에서 DF.java 클래스를 사용하는 부분 또는 DU.java 등을 사용하는 부분을 찾아 수정하면 된다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/196

Comments List

  1. 홍태희 2007/12/04 21:59 # M/D Reply Permalink

    hadoop 을 소스레벨에서 아직 보지는 않았는데요..궁금한게 있어서 질문드립니다.
    hadoop의 mapreduce 구현을 외부에서 제공하는 프로그램을 돌리는 형태로 구현할 수도있나요? 그 프로그램은 파일시스템에다가 output을 떨구는 프로그램 이거든요...

    1. 김형준 2007/12/04 23:58 # M/D Permalink

      예 가능합니다. streamming이라는 contrib된 부분도 있고요. 아니면 외부 프로그램을 인자로 받아서 mapreduce로 생성하는 Job을 자바로 만든 다음 이 job을 실행시키면서 수행할 명령행 인자를 주고 map에서는 이 인자를 받아서 처리하도록 하면 됩니다.
      문제는 수행할 프로그램을 미리 각 노드에 deploy를 해야 한다는 겁니다. 더 궁금하시면 댓글 주세요.

  2. 홍태희 2007/12/05 09:09 # M/D Reply Permalink

    답변감사하구요.^^ 가능하다니..시도해보고 궁금한게 생기면 질문드릴께요..감사합니다.

  3. cybaek 2007/12/24 10:32 # M/D Reply Permalink

    cygwin을 설치하는 것은 어떨까요?

Leave a comment
« Previous : 1 : ... 227 : 228 : 229 : 230 : 231 : 232 : 233 : 234 : 235 : ... 388 : Next »