wiki:waue/2009/1002

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 這種寫資料到掛載資料夾的指令;讀取則沒有問題