1. 安裝fuse:
首先去http://fuse.sourceforge.net/上下載和查看如何安裝fuse,我安裝的fuse是2.8.5版本的,下載2.8.5
版本後,使用如下三個命令安裝fuse:
./configure --prefix=/usr
make
make install
安裝完成後,可以使用如下命令測試fuse 是否安裝成功:
mkdir /tmp/fsue
fuse/example> ./hello /tmp/fuse
cat /tmp/fuse/hello 如果顯示hello world !就表示成功了。
2. 安裝ant :
查看一下當前系統有沒有ant ,如果沒有,使用sudo apt-get install ant 即可安裝
3. Hadoop 的安裝和配置:
我這裡使用的是hadoop 的 Pseudo-Distributed Mode ,配置如下:
<?xml version="1.0"?>
<!-- core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<?xml version="1.0"?>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
將hadoop 配置好,並將hadoop 啟動,特別是hdfs ,以備後續測試使用。
4. 設置環境變量
我直接寫在了~/.profile 中以便後續使用方便
export JAVA_HOME=java 的根目錄,根據系統來設置
export HADOOP_HOME= hadoop 的根目錄,根據系統來設置
export OS_ARCH=i386 ( 如果你的系統是64 位的,應該寫成amd64 ,其實主要為了後面的路徑設置方便而設置,在$HADOOP_HOME/c++/ 的目錄下有兩個子目錄,一個是64 位的,一個32 位的,根據自己的系統選擇使用哪個目錄而已, 也有java 的相關目錄)
export OS_BIT=32 // 如果系統是64 位的,這裡應該寫64
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:${HADOOP_HOME}/build/c++/Linux-$OS_ARCH-$OS_BIT/lib:/usr/local/lib:/usr/lib
5. libhdfs 的制作:
cd $HADOOP_HOME/
ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1
ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs
6. fuse-dfs
cd $HADOOP_HOME
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
如果報錯,請查看相關軟件是否安裝上,我這裡報錯是automake 沒有安裝,用apt-get 安裝一下就沒問題了
7.fuse 配置
將如下內容放在$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh 腳本的最上邊
export JAVA_HOME=java 的根目錄,根據系統來設置
export HADOOP_HOME= hadoop 的根目錄,根據系統來設置
export OS_ARCH=i386 // 如果系統是64 位的,這裡應該寫amd64
export OS_BIT=32 // 如果系統是64 位的,這裡應該寫64
同時授予$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh 可執行權限chmod +x $HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh
8. 測試
mkdir /tmp/dfs ( 用來將hdfs 的目錄映射到/tmp/dfs 上,對/tmp/dfs/ 下面進行的文件操作,比如mkdir ,touch 等命令會直接反映到hdfs 上)
$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh dfs://localhost:8020 /tmp/dfs
測試一下ls –l /tmp/dfs 看看下面顯示hdfs 下的目錄,如果touch 一個文件到/tmp/dfs 將會在hdfs 裡面顯示出來。