Version 3 (modified by waue, 15 years ago) (diff) |
---|
編譯 hdfs fuse (0.20.1)
照Building libhdfs.so in Hadoop 0.20.1所作,然而modprobe fuse 無法找到
執行到 ant compile -Dcompile.c++=true -Dlibhdfs=true
遇到錯誤
BUILD FAILED /opt/hadoop-0.20.1/build.xml:1418: Execute failed: java.io.IOException: Cannot run program "/opt/hadoop-0.20.1/src/c++/pipes/configure" (in directory "/opt/hadoop-0.20.1/build/c++-build/Linux-i386-32/pipes"): java.io.IOException: error=13, Permission denied
使用 sourceforge 上得 fusehdfs (0.18.3)
- 經過測試如下
$ sudo apt-get install libfuse2 libfuse-dev fuse-utils
- 由於無法確定fuse目錄為何,因此再下載了fuse的原始碼來編譯
$ sudo tar -xzvf fuse-2.8.1.tar.gz -C /opt/ $ cd /opt/fuse-2.8.1 $ sudo ./configure ; make ; $ sudo sudo make install
- 開啟 Hadoop 0.18.3 (假設已安裝好)
$ ./hadoop namenode -format $ ./start-all.sh
- 安裝 HDFS-FUSE:
$ tar xvzf hdfs-fuse-0.2.linux2.6-gcc4.1-x86.tar.gz -C /opt/ $ mkdir /tmp/hdfs
- 加入以下資訊到 /opt/hdfs-fuse/bin/hdfs-mount
export JAVA_HOME=/usr/lib/jvm/java-6-sun export HADOOP_HOME=/opt/hadoop export FUSE_HOME=/usr/local export HDFS_FUSE_HOME=/opt/hdfs-fuse export HDFS_FUSE_CONF=/opt/hdfs-fuse/conf
ps : /opt/hdfs-fuse 是 hdfs-fuse的解壓縮目錄;/opt/hadoop 是hadoop的解壓縮路徑;/usr/local是剛剛重新make過fuse的預設路徑
- 掛載 fuse-hdfs
$ sudo /opt/hdfs-fuse/bin/hdfs-mount /tmp/hdfs
- 解除fuse-hdfs
$ sudo fusermount -u /tmp/hdfs
- 遇到的狀況
hdfs-fuse 似乎只能用root 掛載,因此權限和hdfs上的waue就會不同,以至於無法寫入資料到掛載起來的目錄,如mkdir 、cp、mv 這種寫資料到掛載資料夾的指令;讀取則沒有問題