hadoop을 linux 파일시스템으로 mount
- Posted at 2006/08/30 17:44
- Filed under project/lucene_hadoop
Linux에는 ext2, ext3와 같은 기본 파일 시스템 이외에 다양한 파일시스템을 mount 시킬 수 있다. 이것이 가능한 것은 Linux의 커널이 직접 파일시스템을 핸들링 하는 것이 아니라 VFS(Virtual File Switch)라는 추상레이어를 이용하기 때문에 가능하다.
파일시스템 개발팀은 자신들이 필요한 파일 시스템을 만든 후 Linux에 마운트 시키기 위해서는 VFS에서 정의한 자료구조와 operation을 제공하고 이들을 연결시키는 구성만 하면 나머지는 커널이 모두 알아서 처리한다.
이것은 객체지향의 abstract 클래스의 활용과 비슷하다고 할 수 있다. DrawingTool 프로그램에서는 Drawable abstract 클래스의 draw() 메소드만 호출하고 실제 이 draw()에 대한 구현은 Rectangle, Circle 클래스에 있는 원리이다.

FUSE(Filesystem in Userspace)는 VFS 인터페이스를 만족시키지 않는 파일시스템을 쉽게 VFS 인터페이스를 적용할 수 있도록 지원해주는 오픈소스이다. (http://fuse.sourceforge.net/)

FUSE를 이용하여 hadoop도 쉽게 linux 파일시스템으로 마운트시킬 수 있다. FUSE의 경우 기본적으로는 C로 구성되어 있지만 다른 프로그램언어 팩을 지원하고 있다. 자바의 경우 FUSE-J라는 이름으로 제공된다.
FUSE, FUSE-J를 설치하고 FUSE-J에서 제공하는 클래스를 상속받아 자신의 파일시스템에 맞는 기능을 연결해주면 Linux 파일시스템으로 mount 하여 사용할 수 있다.
당연히 Hadoop-Fuse를 연결시켜 주는 부분도 이미 오픈소스로 만들어서 오픈되어 있다. Hadoop-Fuse의 경우 만든 사람이 apache 프로젝트에 제공했지만 FUSE가 GPL 라이센스를 사용하고 있어 공식적으로 apache의 hadoop 프로젝트 내에는 포함되지 못했다.
위의 파일을 다운로드 받아 Readme 파일이나 doc 파일을 읽고 따라하면 문제없이 마운트할 수 있다. 주의할 점은 아직 64bits Linux에서는 설치가 잘 안된다는 것이다. 필자가 잘못 설치했을 수도 있겠지만, 64bits에서 설정한 내용을 32bits에 적용하니까 제대로 동작한다. 이것때문에 거의 반나절은 삽질...
아직까지는 hadoop이 파일 시스템이 가져야 하는 전체 기능에 대해 제공하지 않기 때문에 mount 된다고 해도 사용할 수 있는 기능은 한정적이다.
예를 들면 ls -al 명령에서 파일의 소유자 정보는 현재 사용자 정보로 나타나고, 파일의 생성/수정 시간도 현재 시간으로 나타난다. 그리고 hadoop에서는 파일 수정 기능이 없기 때문에 vi 등으로도 편집 작업을 할 수 없다.
주의사항 : mount.sh 실행하기 전에 반드시 다음 실행
mknod -m 666 /dev/fuse c 10 229
파일시스템 개발팀은 자신들이 필요한 파일 시스템을 만든 후 Linux에 마운트 시키기 위해서는 VFS에서 정의한 자료구조와 operation을 제공하고 이들을 연결시키는 구성만 하면 나머지는 커널이 모두 알아서 처리한다.
이것은 객체지향의 abstract 클래스의 활용과 비슷하다고 할 수 있다. DrawingTool 프로그램에서는 Drawable abstract 클래스의 draw() 메소드만 호출하고 실제 이 draw()에 대한 구현은 Rectangle, Circle 클래스에 있는 원리이다.
FUSE(Filesystem in Userspace)는 VFS 인터페이스를 만족시키지 않는 파일시스템을 쉽게 VFS 인터페이스를 적용할 수 있도록 지원해주는 오픈소스이다. (http://fuse.sourceforge.net/)

FUSE를 이용하여 hadoop도 쉽게 linux 파일시스템으로 마운트시킬 수 있다. FUSE의 경우 기본적으로는 C로 구성되어 있지만 다른 프로그램언어 팩을 지원하고 있다. 자바의 경우 FUSE-J라는 이름으로 제공된다.
FUSE, FUSE-J를 설치하고 FUSE-J에서 제공하는 클래스를 상속받아 자신의 파일시스템에 맞는 기능을 연결해주면 Linux 파일시스템으로 mount 하여 사용할 수 있다.
당연히 Hadoop-Fuse를 연결시켜 주는 부분도 이미 오픈소스로 만들어서 오픈되어 있다. Hadoop-Fuse의 경우 만든 사람이 apache 프로젝트에 제공했지만 FUSE가 GPL 라이센스를 사용하고 있어 공식적으로 apache의 hadoop 프로젝트 내에는 포함되지 못했다.
위의 파일을 다운로드 받아 Readme 파일이나 doc 파일을 읽고 따라하면 문제없이 마운트할 수 있다. 주의할 점은 아직 64bits Linux에서는 설치가 잘 안된다는 것이다. 필자가 잘못 설치했을 수도 있겠지만, 64bits에서 설정한 내용을 32bits에 적용하니까 제대로 동작한다. 이것때문에 거의 반나절은 삽질...
아직까지는 hadoop이 파일 시스템이 가져야 하는 전체 기능에 대해 제공하지 않기 때문에 mount 된다고 해도 사용할 수 있는 기능은 한정적이다.
예를 들면 ls -al 명령에서 파일의 소유자 정보는 현재 사용자 정보로 나타나고, 파일의 생성/수정 시간도 현재 시간으로 나타난다. 그리고 hadoop에서는 파일 수정 기능이 없기 때문에 vi 등으로도 편집 작업을 할 수 없다.
주의사항 : mount.sh 실행하기 전에 반드시 다음 실행
mknod -m 666 /dev/fuse c 10 229
Posted by 김형준
- Response
- No Trackback , No Comment
Trackback URL : http://www.jaso.co.kr/trackback/100
fuse-2.5.3.tar.gz
fuse-j.jar





