Linux FUSE = Filesystem in Userspace
- 컴퓨터 파일 시스템을 개발할 때 사용되는 프레임워크로
- Fuse 사용 시 hdfs 셸 명령을 쓰지 않고 로컬 파일처럼 hdfs를 사용할 수 있음
1.Fuse 관련 패키지 설치
#fuse 관련 패키지 설치
sudo apt-get install fuse libfuse-dev
#깃에서 클론해오기
git clone --depth 1 --branch branch-3.1 https://github.com/apache/hadoop.git
나는 hadoop을 설치해둔 hadoop 폴더가 이미 있어서 뒤에 hadoop_dev를 추가해서 hadoop_dev라는 폴더로 설치해줬다.
#깃에서 클론해오기
git clone --depth 1 --branch branch-3.1 https://github.com/apache/hadoop.git hadoop_dev
2.빌드
다운 받은 경로로 들어가서, 빌드를 실행시켜준다.
cd hadoop_dev
./start-build-env.sh #Permission Denied 시 sudo ./start-build-env.sh
자세히 보면, 경로가 ~/hadoop으로 바껴져 있다. Hadoop 개발자 빌드 환경 내에 남게 된 것. 이제 실행 파일을 빌드시켜주자. 아래 코드를 입력해준다.
mvn package -Pnative -Drequire.fuse=true -DskipTests -Dmaven.javadoc.skip=true
오우 에러가 미친듯이 난다. 이럴 땐 아래 코드를 실행해서 권한을 변경해 준 뒤 다시 위에 코드를 실행시켜준다.
sudo chown -R [유저이름]:[유저이름] /home/[유저이름]
#sudo chown -R tank:tank /home/tank
실행 시킬 때 시간이 좀 걸리니 참고하도록 하장. 잘 되다가 마지막 부분에 오류뜨는데, fuse_dfs만 잘 만들어지면 문제 없이 사용 가능하다. exit으로 개발자 빌드 환경에서 탈출한 뒤 이후 아래 코드로 빌드된 바이너리를 복사해준다.
exit
sudo cp ~/hadoop_dev/hadoop-hdfs-project/hadoop-hdfs-native-client/target/main/native/fuse-dfs/fuse-dfs ~/hadoop/bin/
이 후, ~/hadoop/bin 경로로 들어가서
라이브러리 설정을 포함하는 sh 파일을 생성해준다.
cd ~/hadoop/bin
vi fuse_dfs_wrapper.sh
#!/bin/bash
# naive fuse_dfs wrapper
# define HADOOP_HOME & JAVA_HOME
export HADOOP_HOME=/home/[사용자명]/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# define CLASSPATH
while IFS= read -r -d '' file
do
export CLASSPATH=${CLASSPATH}:${file}
done < <(find ${HADOOP_HOME}/share/hadoop/{common,hdfs} -name "*.jar" -print0)
# define LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${HADOOP_HOME}/lib/native/:${JAVA_HOME}/lib/server/
# run fuse_dfs
fuse_dfs "$@"
저장하고 나온 뒤, 권한 부여
chmod +x fuse_dfs_wrapper.sh
3.마운트
이제 셋팅이 끝났다. 마운트를 적용할 폴더를 만들고 마운트를 진행해보자.
mkdir ~/hadoop/workspace
mkdir ~/hadoop/workspace/mount_data
fuse_dfs_wrapper.sh dfs://localhost:9000 ~/hadoop/workspace/mount_data -oinitchecks
#도메인은 본인에 맞게 바꿔주자
df -h
입력해보면 fuse_dfs가 무사히 추가된 것 까지 확인 완료 ! 마운트 취소는 아래와 같이 하면 된다.
fusermount -u ~/hadoop/workspace/mount_data
#안되는 경우 강제로
fusermount -uz ~/hadoop/workspace/mount_data
이제 마운트가 완료되었으니, ~/hadoop/workspace/mount_data의 데이터를 hdfs명령어 없이도 리눅스 일반 폴더 핸들링하듯이 사용하면 된다. 끝!
적고나니 엄청 단순한데 오류에 오류를 너무 많이 만나서 정말 힘겨웠다...ㅠㅠㅠ.... 그래도 이제 하나하나 직접 구축하면서 작업하니 하둡 시스템에 대한 전반적인 이해가 되기 시작한다. 남은 내용도 파이팅!
참고 문서
https://sleeplessbeastie.eu/2021/09/13/how-to-mount-hdfs-as-a-local-file-system/
'리눅스 Linux' 카테고리의 다른 글
[Linux] 도커 컴포즈 (Docker Compose) 기초 개념과 설치부터 실행까지 (0) | 2024.04.09 |
---|---|
[Linux] 뉴비를 위한 Docker 기초 개념 및 명령어, 설치부터 예제까지 (0) | 2024.04.09 |
[Linux/Ubuntu] 삼바(Samba)를 설치하고 HDFS를 윈도우 디렉토리와 연결해보자 (0) | 2024.03.29 |
[Linux] 뉴비를 위한 VIM 기초 사용법 총정리 (0) | 2024.03.27 |
[Linux/Ubuntu] 리눅스와 우분투는 무엇일까? (0) | 2024.03.20 |
댓글