http://blog.csdn.net/dmcpxy/article/details/18257065
1.1 配置
編輯$HADOOP_HOME/etc/hadoop/hdsf-site.xml文件,增加如下配置:
<property>
<name>dfs.access.time.precision</name>
<value>3600000</value>
<description>The access time for HDFS file is precise upto thisvalue.
The default value is 1 hour. Setting a value of 0 disables
access times for HDFS.
</description>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>1024</value>
</property>
<property>
<name>dfs.nfs3.dump.dir</name>
<value>/tmp/.hdfs-nfs</value>
</property>
ü 上述的屬性名稱dfs.access.time.precision已經被dfs.namenode.accesstime.precision替換,建議使用這個名稱;
ü 上述的屬性名稱dfs.datanode.max.xcievers已經被dfs.datanode.max.transfer.threads替換,建議使用這個名稱;
編輯log4j.property文件,增加如下配置:
log4j.logger.org.apache.hadoop.hdfs.nfs=DEBUG
log4j.logger.org.apache.hadoop.oncrpc=DEBUG
1.2 啓動
然後可以啓動portmap了,注意這裏需要root權限才能啓動:
sudo ./bin/hdfs portmap -start
若提示端口已經被佔用,則說明系統已經啓動了,需要先停止:
service portmap stop
然後再啓動。
再啓動nfs,一定要先啓動portmap才能啓動nfs:
./bin/hdfs nfs3 start
可以通過以下兩個命令來觀察是否啓動OK:
rpcinfo -p 192.168.111.130 #後面的ip地址是namenode的啓動服務器地址
showmount -e 192.168.111.130
在/mnt目錄下建立掛載目錄hdfs
mkdir –p /mnt/hdfs
掛載到目標目錄,注意這裏使用的是mount.nfs,若沒有則需要手工先安裝,以下命令是在ubuntu12.04server版本是進行的:
sudo mount.nfs -o nolock 192.168.111.130://mnt/hdfs
若上述命令提示mount.nfs不存在,則需要提前先安裝好:
sudo apt-get install nfs-common
或者
sudo mount -o nolock 10.3.3.141:/ /mnt/hdfs #這是在suse機器上的命令
或者
sudo mount -t nfs -o vers=3,proto=tcp,nolock10.3.3.141:/ /mnt/hdfs #這是在suse機器上的命令
1.3 測試
實測如下:
一臺namenode(10.3.3.141),兩臺datanode(10.3.3.142,10.3.3.143):
1、往hdfs上覆制文件:
[aihadoop@suse-141 ~] $ time cp jdk.tar.gz/mnt/hdfs/
real 0m6.733s
user 0m0.000s
sys 0m0.264s
[aihadoop@suse-141 ~] $ ll jdk.tar.gz
-rw-r--r-- 1 aihadoop aihadoop 156209379 2013-12-2015:57 jdk.tar.gz
[aihadoop@suse-141 soft_bak] $ llspark-0.8.1-incubating-bin-hadoop2.tgz
-rw------- 1 aihadoop aihadoop 225613885 2013-12-2314:49 spark-0.8.1-incubating-bin-hadoop2.tgz
[aihadoop@suse-141 soft_bak] $ time cp spark-0.8.1-incubating-bin-hadoop2.tgz/mnt/hdfs/
real 0m7.671s
user 0m0.000s
sys 0m0.376s
從上面的測試來看,在目前這個環境中:上傳速度約爲:26m/s
2、從hdfs上覆制文件到本地目錄:
[aihadoop@suse-141 workdir] $ time cp/mnt/hdfs/test_put_250_06_20130604148159 .
real 0m3.243s
user 0m0.000s
sys 0m0.508s
[aihadoop@suse-141 soft_bak] $ lltest_put_250_06_20130604148159
-rw-r--r-- 1 aihadoop aihadoop 102324750 2014-01-0317:25 test_put_250_06_20130604148159
[aihadoop@suse-141 workdir] $ time cp/mnt/hdfs/jdk.tar.gz .
real 0m4.750s
user 0m0.004s
sys 0m0.420s
[aihadoop@suse-141 workdir] $ ll jdk.tar.gz
-rw-r--r-- 1 aihadoop aihadoop 156209379 2014-01-0317:44 jdk.tar.gz
[aihadoop@suse-141 soft_bak] $ time cp/mnt/hdfs/input/100_01_20130726021112 .
cp: writing `./100_01_20130726021112': No spaceleft on device #這裏空間不夠,寫部分成功了。
real 3m35.862s
user 0m0.164s
sys 0m17.613s
[aihadoop@suse-141 soft_bak] $ ll 100_01_20130726021112
-rw-r--r-- 1 aihadoop aihadoop 40210227202014-01-03 17:31 100_01_20130726021112
從上面的測試來看,在目前這個環境中:下載速度約爲:32m/s,當下載的文件在hdfs的緩存中時,下載速度非常快。
從客戶端進行文件上傳和下載的速度取決於HDFS部署的硬件環境和datanode的個數。