NFS网关支持NFSv3,并允许将HDFS作为客户端本地文件系统进行挂载。目前,NFS Gateway支持并启用以下使用模式:
- 用户可以通过NFSv3客户端兼容操作系统上的本地文件系统浏览HDFS文件系统。
- 用户可以将文件从HDFS文件系统下载到其本地文件系统。
- 用户可以将文件从本地文件系统直接上传到HDFS文件系统。
- 用户可以通过挂载点将数据直接传输到HDFS。支持文件追加,但不支持随机写入。
CDH部署NFS Gateway
可以在data01.bigdata-heboan.com(192.168.48.129)上验证服务是否启动
rpcinfo -p $nfs_server_ip
现在找一台客户端机器(192.168.48.130)
安装nfs
yum install rpcbind nfs-utils -y
验证 HDFS命名空间是否已导入并可以挂载
showmount -e $ nfs_server_ip
挂载导出"/"
目前NFS v3仅使用TCP作为传输协议。不支持NLM,因此需要mount选项“nolock”。强烈建议使用挂载选项“sync”,因为它可以最小化或避免重新排序的写入,从而产生更可预测的吞吐量。
上载大文件时,不指定sync选项可能会导致不可靠的行为。建议使用硬装。这是因为,即使在客户端将所有数据发送到NFS网关之后,当NFS客户端内核重新排序写入时,可能需要额外的时间将NFS网关传输到HDFS。
如果必须使用软安装,用户应该给它一个相对较长的超时(至少不低于主机上的默认超时)。
用户可以挂载HDFS命名空间,如下所示
mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync $server:/ $mount_point
经过测试使用, 挂载到本地读写不受kerberos认证影响, 但是需注意用户权限。
比如使用heboan用户对挂载的目录进行上传文件, 操作步骤如下:
- 在hdfs 集群主机,ndfs客户端创建用户heboan(最好使用ldap,如 freeipa管理,这样可以确保uid一致,否则手动创建可能uid不一样,这个要注意)
- 然后使用hdfs 创建/user/heboan (hdfs dfs -mkdir /user/heboan hdfs dfs -chown heboan:heboan /user/heboan)
- 最后使用用户heboan登录nfs客户端,就可以对/data/user/heboan目录进行读写了