hadoop fuse mount 삽질

지난번에 포스팅한 Hadoop fuse mount(http://www.jaso.co.kr/100)는 hadoop 자체에서 제공하는 fuse mount 기능을 사용한 것이 아니라 fuse와 java를 연결하는 fuse-j를 이용하고 다시 fuse-j와 hadoop을 연결하는 구조를 사용하였습니다.
hadoop0.18 이후 버전에서는 fuse-hadoop 직접 연결이 가능한 모듈을 제공하고 있습니다. contrib에 있는 fuse-dfs입니다. 설치 관련 정보는 http://wiki.apache.org/hadoop/MountableHDFS 참고
지난주 fuse-dfs 설치 중에 무지 삽질했습니다. 문제의 원인은 JVM, Linux, FUSE의 버전과 32bits, 64bits 문제였습니다.

문제의 핵심은 libhfds의 컴파일이 32bits로 설정되어 있다는 것입니다.
fuse-dfs는 hdfs의 C++ 클라이언트 모듈인 libhdfs를 이용합니다. 이 libdhfs의 Makefile에 보면 -m32 옵션이 설정되어 있습니다.
Linux의 운영체제가 64bits인지라 fuse는 아무런 의심없이 64bits를 설치 했습니다. 몇번의 컴파일 문제로 -m32 옵션을 삭제하고 컴파일에는 성공했습니다.

다음 문제는 fuse module을 올리기 위해 "modprobe fuse"를 했는데 "FATAL: Module fuse not found." 계속 이런 에러만 나타납니다.
여러번의 삽질 결과 문제의 원인은 fuse는 설치할 때 kernel source를 필요로 하는데 kernel source가 현재 운영중인 linux 버전과 맞지 않는 버전이 설치되어 있었습니다. 이부분은 어쩔수 없이 포기하고 source 버전이 맞는 다른 장비에서 다시 설치를 시도 했습니다. 잘 되는군요...
모두 설치를 완료하고 "ls -al /mnt/hdfs" 잘 되더군요...
다시 "cp aaa.dat /mnt/hdfs/." 헉
"cp: cannot create regular file `./aaa.dat': Function not implemented"

cp 기능은 구현되어 있지 않다고 나옵니다.
fuse-dfs의 README를 자세히 읽어 보니 다음과 같은 문구가 있네요.
"rmdir, mv, mkdir, rm are all supported. just not cp, touch, ..." 이런.

0.19의 fuse-dfs에는
"Supports reads, writes, and directory operations (e.g., cp, ls, more..."

다시 0.19로 올려야 겠습니다. 반나절의 삽질을 하고도 아직 설치 못했습니다.

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

Posted by 김형준


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

Comments List

  1. 김영우 2008/10/27 11:40 # M/D Reply Permalink

    안녕하세요, 저도 0.18.1에 fuse-dfs를 설치하려던 참에 이 글을 보게되었습니다. 올려주신 글을 보지 못했다면 저도 무한 '삽질'할 뻔했네요. 후에 0.19로 올려서 설치하신 내용도 포스팅 부탁드립니다. 감사합니다.

  2. 세라비 2008/10/27 11:46 # M/D Reply Permalink

    고생 끝에 빛을 보는가 했더니... 고생하셨군요. 그나저나, 얼마전에 hadoop 0.18로 올렸는데...

Leave a comment
« Previous : 1 : ... 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : ... 388 : Next »