常常会有这种需求,把HDFS的目录MOUNT到本地目录,然后方便使用LINUX下面的命令直接操作.
FUSE也可以达到同样的效果,但是配置比较复杂,新的HADOOP版本都建议使用NFS3来完成这个需求.
要点记录,
1. CORE-SITE.XML 修改
<property>
<name>hadoop.proxyuser.student.groups</name>
<value>*</value>
<description></description>
</property>
<property>
<name>hadoop.proxyuser.student.hosts</name>
<value>*</value>
<description>
</description>
</property>
加粗的是HADOOP用户,这点需要注意,也可以改成ROOT
2.HDFS-SITE.XML
<!-- nfs configuration needed -->
<property>
<name>nfs.dump.dir</name>
<value>/tmp/.hdfs-nfs</value>
</property>
<property>
<name>nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>
3.关掉本机的NFS服务
service rpcbind stop
service nfs stop
4.开启HDFS的NFS服务
使用ROOT用户启动 PORTMAP服务
./hdfs portmap &
其他用户没有权限绑定端口
使用STUDENT用户开启NFS3
./hdfs nfs3 &
5.创建MOUNT点,加载
mkdir /mnt/hdfs
mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync localhost:/ /hdfs
在NAMENODE节点上使用ROOT用户运行上述命令
有时候会报ROOT不能模拟ROOT用户的错误,这个错误,可能是BUG,需要更新HADOOP版本
我使用的版本是HADOOP2.6