“ 来,了解一下NFS Gateway组件,挺好用的”
环境说明
Ambari 2.6.1
HDP 2.6.4.0
前言
假如我们在命令行中访问HDFS路径的话,确实有点繁琐。那么有没有一种工具可以将HDFS上面的空间映射到linux本地磁盘上,然后再进行操作呢?答案是:当然有。HDFS服务中的NFS Gateway组件就可以解决我们的问题,一起往下看吧
一、HDFS NFS Gateway简介
HDFS的NFS网关允许客户端挂载HDFS并通过NFS与其进行交互,就像它是本地文件系统的一部分一样。网关支持NFSv3。
安装HDFS后,用户可以:
在NFSv3客户端兼容的操作系统上通过其本地文件系统浏览HDFS文件系统。
在HDFS文件系统和本地文件系统之间上载和下载文件。
通过挂载点将数据直接传输到HDFS。 (支持文件追加,但不支持随机写入。)
先决条件
NFS网关机器必须运行“运行HDFS客户端所需的所有组件”,例如Hadoop核心JAR文件和HADOOP_CONF目录。NFS网关可以安装在任何DataNode,NameNode或HDP客户端计算机上。在该计算机上启动NFS服务器。
二、安装启动NFSGateway
HDFS NFS Gateway工作需要依附 rpcbind 服务,所以启动前需要确定rpcbind服务正常开启。
service rpcbind start
但是HDFS NFS 服务会与系统自带的NFS服务冲突,所以在启动前需要关闭系统自带的NFS服务。
service nfs stop
但是,上述的操作我们不需要手动执行,我们可以使用Ambari来安装NFSGateway
组件,它会自动停止nfs
服务和开启rpcbind
服务。
在Ambari平台系统中进入要安装NFSGateway
组件的机器,点击“添加”按钮,选择NFSGateway
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/fa4d2be34ed32620256125abfa5af1e1.png)
安装完毕之后,需要我们再启动该组件,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/f71ac03d48ad5c440c215f14e479a979.png)
安装成功之后,在HDFS面板上就有了NFSGateway
组件,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/e28360620eda229e99c7752bd140ad5f.png)
三、HDFS NFS Gateway配置项说明
1. dfs.namenode.accesstime.precision
在Ambari平台系统中的HDFS配置项中搜索dfs.namenode.accesstime.precision
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/eba69ab1a0d3a1b7264b8dfe1638449f.png)
HDFS文件的访问时间精确到此值。默认值为0,禁用状态。将该值从“0”修改为“3600000”,访问时间为1小时。
注意:如果在允许访问时更新的情况下挂载导出,请确保未在配置文件中禁用此属性。更改此属性后,保存配置,在页面上重启依赖的服务。
2. nfs.file.dump.dir
在Ambari平台系统中的HDFS配置项中搜索nfs.file.dump.dir
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/e99ac9639b6d56deeb8b79791fe17c9b.png)
NFS客户端经常重新排序写入。顺序写入可以随机顺序到达NFS网关。此目录用于在写入HDFS之前临时保存无序写入。需要确保目录有足够的空间。例如,如果应用程序上传了10个文件,每个文件都有100MB,则建议此目录有1GB空间,以防每个文件发生最坏情况的写入重新排序。
那么如何查看/tmp/.hdfs-nfs
目录有足够的空间呢?
使用df -h
目录就可以查看各挂载目录空间的大小,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/1aeecfc7ded5b764e6300408bc5c9208.png)
/tmp/.hdfs-nfs
目录就在/
目录下,由上图可知,还有75G的可用空间。
注意:不要将挂载点设置到该目录。如果挂载了,重启NFS Gateway组件就会被卡住。
3. nfs.exports.allowed.hosts
在Ambari平台系统中的HDFS配置项中搜索nfs.exports.allowed.hosts
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/0c33fdf4e91e463b959e231f0403371d.png)
默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或IPv4网络格式。访问权限使用rw或ro指定对导出的readwrite或readonly访问。如果未指定访问权限,则只能读取对导出的默认计算机访问权限。更新此属性后重新启动NFS网关。
四、访问HDFS
1. 挂载
要访问HDFS,首先安装导出“/”。目前支持NFS v3。传输协议是TCP。
按如下方式挂载HDFS命名空间:
mount -t nfs -o vers=3,proto=tcp,nolock,sync,rsize=1048576,wsize=1048576 $server:/ $mount_point
将HDFS作为本地文件系统的一部分进行访问。其中$server是NFSGateway
所在的主机,$mount_point
代表挂载点。
注意:
由于不支持NLM,因此需要mount选项nolock。编写大文件时,请使用sync选项来提高性能。NFS客户端的sync mount选项提高了使用NFS网关将大文件写入HDFS的性能和可靠性。如果指定了sync选项,则NFS客户机计算机刷新会将操作写入NFS网关,然后再将控制权返回给客户端应用程序。同步的有用副作用是客户端不发出重新排序的写入。这减少了NFS网关的缓冲要求。在挂载NFS共享时,在客户端计算机上指定了sync。
示例:
# 创建挂载点
mkdir /opt/hdfs
# 将HDFS空间挂载到本地磁盘
mount -t nfs -o vers=3,proto=tcp,nolock,sync,rsize=1048576,wsize=1048576 10.6.6.72:/ /opt/hdfs
2. 解挂
使用umount
命令来解挂挂载点:
umount /opt/hdfs
五、如何控制访问权限
1. 说明
默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。
在Ambari平台系统中的HDFS配置项中搜索nfs.exports.allowed.hosts
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/0c33fdf4e91e463b959e231f0403371d.png)
值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或IPv4网络格式。访问权限使用rw或ro指定对导出的readwrite或readonly访问。
2. 示例
控制访问权限,允许liuyzh1.xdata
主机拥有readwrite
权限,liuyzh2.xdata
主机拥有readonly
权限,其余主机无权限。
修改nfs.exports.allowed.hosts
,将该值修改为liuyzh1.xdata rw;liuyzh2.xdata ro
,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/9e6691cabcee7e7f5cdb12d4e170b774.png)
保存配置,重启依赖的服务即可。
查看挂载信息:
showmount -e $nfs_server
![](https://i-blog.csdnimg.cn/blog_migrate/b353ae4424d195172f91e6aad9571188.png)
表示仅可以将hdfs空间挂载到liuyzh1.xdata
和liuyzh2.xdata
主机上,其余主机不可以。
按照上述操作,就可以在liuyzh1.xdata
主机上的挂载点操作hdfs文件;
在liuyzh2.xdata
主机上就只有“只读”权限,其余操作均报Permission denied
提示,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/906b7e5428ee4652758ea9c395c6b8df.png)
在其余主机上会挂载失败,报mount.nfs: Stale file handle
的提示,如图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/e94d409949762295af75087656913c48.png)
长按下方二维码,关注更多精彩内容
如果感觉本文对您有帮助,请点击右下角‘好看’支持一下,您的支持是我坚持写作最大的动力,谢谢!
内容持续更新中,点击阅读全文获取文章的最新内容