环境说明
- 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,如图所示:
安装完毕之后,需要我们再启动该组件,如图所示:
安装成功之后,在HDFS面板上就有了NFSGateway组件,如图所示:
三、HDFS NFS Gateway配置项说明
1. d
在Ambari平台系统中的HDFS配置项中搜索d,如图所示:
HDFS文件的访问时间精确到此值。默认值为0,禁用状态。将该值从“0”修改为“3600000”,访问时间为1小时。
注意:如果在允许访问时更新的情况下挂载导出,请确保未在配置文件中禁用此属性。更改此属性后,保存配置,在页面上重启依赖的服务。
2. n
在Ambari平台系统中的HDFS配置项中搜索n,如图所示:
NFS客户端经常重新排序写入。顺序写入可以随机顺序到达NFS网关。此目录用于在写入HDFS之前临时保存无序写入。需要确保目录有足够的空间。例如,如果应用程序上传了10个文件,每个文件都有100MB,则建议此目录有1GB空间,以防每个文件发生最坏情况的写入重新排序。
那么如何查看/tmp/.hdfs-nfs目录有足够的空间呢?
使用df -h目录就可以查看各挂载目录空间的大小,如图所示:
/tmp/.hdfs-nfs目录就在/目录下,由上图可知,还有75G的可用空间。
注意:不要将挂载点设置到该目录。如果挂载了,重启NFS Gateway组件就会被卡住。
3. n
在Ambari平台系统中的HDFS配置项中搜索n,如图所示:
默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或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/hdfs2. 解挂
使用umount命令来解挂挂载点:
umount /opt/hdfs五、如何控制访问权限
1. 说明
默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。
在Ambari平台系统中的HDFS配置项中搜索n,如图所示:
值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或IPv4网络格式。访问权限使用rw或ro指定对导出的readwrite或readonly访问。
2. 示例
控制访问权限,允许liuyz主机拥有readwrite权限,liuyz主机拥有readonly权限,其余主机无权限。
修改n,将该值修改为liuyz rw;liuyz ro,如图所示:
保存配置,重启依赖的服务即可。
查看挂载信息:
showmount -e $nfs_server表示仅可以将hdfs空间挂载到liuyz和liuyz主机上,其余主机不可以。
按照上述操作,就可以在liuyz主机上的挂载点操作hdfs文件;
在liuyz主机上就只有“只读”权限,其余操作均报Permission denied提示,如图所示:
在其余主机上会挂载失败,报mount.nfs: Stale file handle的提示,如图所示:
--end--
欢迎关注我的公众号,微信搜索“大数据实战演练”,谢谢~