前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HDFS NFS Gateway配置使用说明

HDFS NFS Gateway配置使用说明

原创
作者头像
create17
修改2019-01-11 10:36:35
8.4K0
修改2019-01-11 10:36:35
举报
文章被收录于专栏:大数据实战演练

  “ 来,了解一下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服务正常开启。

代码语言:javascript
复制
service rpcbind start 

但是HDFS NFS 服务会与系统自带的NFS服务冲突,所以在启动前需要关闭系统自带的NFS服务。

代码语言:javascript
复制
service nfs stop

但是,上述的操作我们不需要手动执行,我们可以使用Ambari来安装NFSGateway组件,它会自动停止nfs服务和开启rpcbind服务。

在Ambari平台系统中进入要安装NFSGateway组件的机器,点击“添加”按钮,选择NFSGateway,如图所示:

安装完毕之后,需要我们再启动该组件,如图所示:

安装成功之后,在HDFS面板上就有了NFSGateway组件,如图所示:

三、HDFS NFS Gateway配置项说明
1. dfs.namenode.accesstime.precision

在Ambari平台系统中的HDFS配置项中搜索dfs.namenode.accesstime.precision,如图所示:

HDFS文件的访问时间精确到此值。默认值为0,禁用状态。将该值从“0”修改为“3600000”,访问时间为1小时。

注意:如果在允许访问时更新的情况下挂载导出,请确保未在配置文件中禁用此属性。更改此属性后,保存配置,在页面上重启依赖的服务。

2. nfs.file.dump.dir

在Ambari平台系统中的HDFS配置项中搜索nfs.file.dump.dir,如图所示:

NFS客户端经常重新排序写入。顺序写入可以随机顺序到达NFS网关。此目录用于在写入HDFS之前临时保存无序写入。需要确保目录有足够的空间。例如,如果应用程序上传了10个文件,每个文件都有100MB,则建议此目录有1GB空间,以防每个文件发生最坏情况的写入重新排序。

那么如何查看/tmp/.hdfs-nfs目录有足够的空间呢?

使用df -h目录就可以查看各挂载目录空间的大小,如图所示:

/tmp/.hdfs-nfs目录就在/目录下,由上图可知,还有75G的可用空间。

注意:不要将挂载点设置到该目录。如果挂载了,重启NFS Gateway组件就会被卡住。

3. nfs.exports.allowed.hosts

在Ambari平台系统中的HDFS配置项中搜索nfs.exports.allowed.hosts,如图所示:

默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或IPv4网络格式。访问权限使用rwro指定对导出的readwritereadonly访问。如果未指定访问权限,则只能读取对导出的默认计算机访问权限。更新此属性后重新启动NFS网关。

四、访问HDFS
1. 挂载

要访问HDFS,首先安装导出“/”。目前支持NFS v3。传输协议是TCP。

按如下方式挂载HDFS命名空间:

代码语言:javascript
复制
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。

示例:

代码语言:javascript
复制
# 创建挂载点
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命令来解挂挂载点:

代码语言:javascript
复制
umount /opt/hdfs
五、如何控制访问权限
1. 说明

默认情况下,导出可以由任何客户端装入。您必须更新此属性才能控制访问权限。

在Ambari平台系统中的HDFS配置项中搜索nfs.exports.allowed.hosts,如图所示:

值字符串包含机器名称和访问权限,由空格字符分隔。计算机名称可以是单主机,通配符或IPv4网络格式。访问权限使用rw或ro指定对导出的readwrite或readonly访问。

2. 示例

控制访问权限,允许liuyzh1.xdata主机拥有readwrite权限,liuyzh2.xdata主机拥有readonly权限,其余主机无权限。

修改nfs.exports.allowed.hosts,将该值修改为liuyzh1.xdata rw;liuyzh2.xdata ro,如图所示:

保存配置,重启依赖的服务即可。

查看挂载信息:

代码语言:javascript
复制
showmount -e $nfs_server

表示仅可以将hdfs空间挂载到liuyzh1.xdataliuyzh2.xdata主机上,其余主机不可以。

按照上述操作,就可以在liuyzh1.xdata主机上的挂载点操作hdfs文件;

liuyzh2.xdata主机上就只有“只读”权限,其余操作均报Permission denied提示,如图所示:

在其余主机上会挂载失败,报mount.nfs: Stale file handle的提示,如图所示:


长按下方二维码,关注更多精彩内容

如果感觉本文对您有帮助,请点赞支持一下,您的支持是我坚持写作最大的动力,谢谢!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、HDFS NFS Gateway简介
  • 二、安装启动NFSGateway
  • 三、HDFS NFS Gateway配置项说明
    • 1. dfs.namenode.accesstime.precision
      • 2. nfs.file.dump.dir
        • 3. nfs.exports.allowed.hosts
        • 四、访问HDFS
          • 1. 挂载
            • 2. 解挂
            • 五、如何控制访问权限
              • 1. 说明
                • 2. 示例
                相关产品与服务
                大数据
                全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档