= 編譯 hdfs fuse (0.20.1) = * 照[http://www.mail-archive.com/common-user@hadoop.apache.org/msg01812.html 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 {{{ #!text 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 這種寫資料到掛載資料夾的指令;讀取則沒有問題