通过NFS为hadoop HDFS扩容

已经在运行的hdfs存储空间不足,急需扩容。 但一时半会无法往机器中增加存储,正好手头有一个90T的存储机器,所以考虑通过NFS方式为HDFS扩容。

存储服务器为Debian 8,因此第一步:

安装Debian NFS服务器端

aptitude install nfs-common nfs-kernel-server portmap  

protmap可能会显示已经不建议安装了,但没关系,直接安装。

修改/etc/exports

/etc/exports 用来控制客户端访问NFS目录权限。假设 客户端机器IP为10.0.0.1,挂载的目录为/hdd1。那么输入如下:

# /etc/exports: the access control list for filesystems which may be exported
#        to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/hdd1 10.0.0.1(rw,no_subtree_check)
rw,表示可读可写。 nosubtreecheck表示不检查父目录权限。 具体参数看这里  

修改完后,重启nfs服务.

/etc/init.d/nfs-kernel-server restart

修改权限

chown nobody.nogroup /hdd1  

挂载NFS目录

此步骤在客户端操作!

因为我的客户端使用的是coreos,因此首先必须要启动rpc-statd.service

systemctl start rpc-statd.service  
如果有必要,添加到开机启动中
systemctl enable rpc-statd.service  
确认服务开启之后,挂载目录
mkdir /hdd1 #创建挂载点  
mount 10.1.0.1:/hdd1 /hdd1 #10.1.0.1是存储服务器IP  

IO测试

挂载成功之后,我们进行读写测试。 原盘:

time dd if=/dev/zero of=/hdd2/test.buf bs=8k count=300000  
300000+0 records in  
300000+0 records out  
2457600000 bytes (2.5 GB) copied, 1.44183 s, 1.7 GB/s

real    0m1.456s  
user    0m0.030s  
sys    0m1.409s  

NFS盘:

time dd if=/dev/zero of=/hdd1/test.buf bs=8k count=300000  
300000+0 records in  
300000+0 records out  
2457600000 bytes (2.5 GB) copied, 28.0597 s, 87.6 MB/s

real    0m28.068s  
user    0m0.035s  
sys    0m1.762s  

原盘hdd2和存储服务器的hdd1同样都是hdd盘,但写入速度差了20倍!

原盘:

time dd if=/hdd2/test.buf of=/dev/null bs=8k  
300000+0 records in  
300000+0 records out  
2457600000 bytes (2.5 GB) copied, 0.430581 s, 5.7 GB/s

real    0m0.432s  
user    0m0.019s  
sys    0m0.411s  

NFS盘:

time dd if=/hdd1/test.buf of=/dev/null bs=8k  
300000+0 records in  
300000+0 records out  
2457600000 bytes (2.5 GB) copied, 0.420416 s, 5.8 GB/s

real    0m0.423s  
user    0m0.010s  
sys    0m0.409s  

读入速度几乎都差不多。

因为客户端和存储服务器分属两个不同的机房,因此考虑到网络带宽,交换机网卡等因素。目前87MB/s属于还可忍受的速率。以后有机会了,再进行后续优化