189 8069 5689

HDFS进阶应用配置NFS网关

HDFS进阶应用 配置NFS 网关

创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的上思网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

• NFS 网关用途

    – 1.用户可以通过操作系统兼容的本地NFSv3客户端来阅览HDFS文件系统

    – 2.用户可以从HDFS文件系统下载文档到本地文件系统

    – 3.用户可以通过挂载点直接流化数据。支持文件附加,但是不支持随机写

    – NFS 网关支持NFSv3和允许HDFS 作为客户端文件系统的一部分被挂载


• 特性与注意事项

    – 不支持随机写

    – 在非安全模式,运行网关的用户是代理用户

    – 在安全模式时,Kerberos keytab中的用户是代理用户

    – AIX NFS有一些知道的问题,不能让默认的HDFS NFS网关正常工作,如果想在 AIX 访问 NFS 网关需要配置下面的参数

    

        nfs.aix.compatibility.mode.enabled

        true

    

• 特性与注意事项

– HDFS超级用户是与NameNode进程本身具有相同标识的用户,超级用户可以执行任何操作,因为权限检查永远不会为超级用户失败。

    

        nfs.superuser

        the_name_of_hdfs_superuser

    

– 如果客户端安装允许访问时间更新,在某些Unix系统上,用户可以通过使用“noatime”安装来禁用访问时间更新

    dfs.namenode.accesstime.precision

    0

– nfs.dump.dir

– 用户需要更新文件转储目录参数。NFS客户端经常重新安排写操作,顺序的写操作会以随机到达NFS网关。这个目录常用于临时存储无序的写操作。对于每个文件,无序的写操作会在他们积累在内存中超过一定阈值(如。1 mb)被转储。需要确保有足够的空间的目录。例如,如果应用上传10个100M,那么这个转储目录推荐有1GB左右的空间,以便每个文件都发生最坏的情况。只有NFS网关需要在设置该属性后重启。

– nfs.exports.allowed.hosts

– 默认情况下,export可以被任何客户端挂载。为了更好的控制访问,可以设置属性。值字符串为机器名和访问策略,通过空格来分割。机器名的格式可以是单一的主机,Java的正则表达式或者IPv4地址。访问权限使用rw或ro来指定导出目录的读/写或机器只读访问。如果访问策略没被提供,默认为只读的。每个条目使用“;”来分割。

• 调试与日志排错

– 在配置 NFS 网关过程中经常会碰到各种各样的错误,如果出现了错误,打开调试日志是一个不错的选择

• log4j.property

– log4j.logger.org.apache.hadoop.hdfs.nfs=DEBUG

– log4j.logger.org.apache.hadoop.oncrpc=DEBUG

• core-site.xml

– hadoop.proxyuser.{nfsuser}.groups

– hadoop.proxyuser.{nfsuser}.hosts

– 这里的 nfsuser 是你机器上真实运行 nfsgw 的用户

– 在非安全模式,运行nfs网关的用户为代理用户

– groups 为挂载点用户所使用的组

– hosts 为挂载点主机地址

• hdfs-site.xml

– nfs.exports.allowed.hosts

– 设置允许访问 NFS 主机列与权限,默认 “ro”

    

        nfs.exports.allowed.hosts

        * rw

    

– dfs.namenode.accesstime.precision

– 关闭 access time

    

        dfs.namenode.accesstime.precision

        3600000

    

– nfs.dump.dir

– 设置转储目录

    nfs.dump.dir

    /tmp/.hdfs-nfs

– nfs.rtmax & nfs.wtmax

– 用户可以像访问本地文件系统的一部分一样访问HDFS,但硬链接和随机写还不支持。对于大文件I/O的优化,可以在mount的时候增加NFS传输的大小(rsize和wsize)。在默认情况下,NFS网关支持1MB作为最大的传输大小。更大的数据传输大小,需要在hdfs-site.xml中设置“nfs.rtmax” 和“nfs.wtmax”

– nfs.rtmax & nfs.wtmax

    

        nfs.rtmax

        4194304

    

    

        nfs.wtmax

        1048576

    

– nfs.port.monitoring.disabled

– 允许从没有权限的客户端挂载 nfs

    

        nfs.port.monitoring.disabled

        false

    

• nfs.map

– 系统管理员必须确保在NFS客户端的用户和在HDFS网关主机上的用户有相同的名称和UID。不同主机上创建的用户需要修改UID(例如使用“usermod -u 123myusername”),在NFS客户端或者NFS网关主机来进行。如果客户端的用户和NFS网关的用户 uid 不能保持一致需要我们配置 nfs.map 的静态映射关系

实验环境准备参考 https://blog.51cto.com/13558754/2066708

配置 NFS 网关

# cd /usr/local/hadoop/

# ./sbin/stop-all.sh

# jps

6598 Jps

# vim /etc/hosts

192.168.4.1     master

192.168.4.2     node1

192.168.4.3     node2

192.168.4.4     node3

192.168.4.5     nfsgw            //添加新的主机

# for i in {1..5}

> do

> rsync -a /etc/hosts 192.168.4.${i}:/etc/hosts

> done

# scp /etc/yum.repos.d/yum.repo nfsgw:/etc/yum.repos.d/

yum.repo                                                                        100%   61     0.1KB/s   00:00    

# ssh nfsgw 

Last login: Wed Jan 31 08:20:55 2018 from master

# sed -ri "s/^(SELINUX=).*/\1disabled/" /etc/selinux/config ; yum -y remove firewalld

# reboot

// 添加用户

[root@nfsgw ~]# adduser -g 10 -u 1001 nfsuser

[root@nfsgw ~]# id nfsuser

uid=1001(nfsuser) gid=10(wheel) 组=10(wheel)

[root@master ~]# adduser -g 10 -u 1001 nfsuser

[root@master ~]# id nfsuser

[root@master ~]# cd /usr/local/hadoop/

[root@master hadoop]# cd etc/hadoop/

[root@master hadoop]# vim core-site.xml

 

    hadoop.proxyuser.nfsuser.groups

    *

 

 

    hadoop.proxyuser.nfsuser.hosts

    *

 

[root@master hadoop]# for i in node{1..3}

> do

> rsync -a /usr/local/hadoop/etc/hadoop/ ${i}:/usr/local/hadoop/etc/hadoop/ -e "ssh"

> done

[root@master ~]# ssh nfsgw

[root@nfsgw ~]# yum -y install java-1.8.0-openjdk-devel.x86_64    

[root@nfsgw ~]# cd /usr/local/

[root@nfsgw ~]# rsync -azSH --delete master:/usr/local/hadoop ./ -e "ssh"       //同步hadoop

[root@nfsgw ~]# yum -y remove rpcbind nfs-util

[root@master ~]# cd /usr/local/hadoop/

[root@master hadoop]# ./sbin/start-dfs.sh         //启动集群

[root@master hadoop]# jps

6755 NameNode

7062 Jps

6953 SecondaryNameNode

[root@master hadoop]# ./bin/hdfs dfsadmin -report    //检查节点

[root@master hadoop]# ssh nfsgw 

Last login: Wed Jan 31 08:26:48 2018 from master

[root@nfsgw ~]# cd /usr/local/hadoop/

[root@nfsgw hadoop]# cd etc/hadoop/

[root@nfsgw hadoop]# vim hdfs-site.xml 

...

 

    nfs.exports.allowed.hosts            

    * rw            //允许那些主机访问权限

 

 

    dfs.namenode.accesstime.precision

    3600000        //accesstime 更新时间

 

 

    nfs.dump.dir    

    /var/nfstemp            //转储目录

 

 

    nfs.rtmax

    4194304               // 读文件 传输大小

 

 

    nfs.wtmax

    1048576            //写文件 传输大小

 

 

    nfs.port.monitoring.disabled

    false            // 允许客户端挂载

 

...

[root@nfsgw ~]# mkdir /var/nfstemp

[root@nfsgw ~]# chown 1001.10 /var/nfstemp/

[root@nfsgw ~]# setfacl -m u:nfsuser:rwx  /usr/local/hadoop/logs/

[root@nfsgw ~]# cd /usr/local/hadoop/

– 启动 portmap 服务

[root@nfsgw hadoop]# ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap

starting portmap, logging to /usr/local/hadoop/logs/hadoop-root-portmap-nfsgw.out

[root@nfsgw hadoop]# su nfsuser

– 启动 nfs3

[nfsuser@nfsgw hadoop]$ ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3

starting nfs3, logging to /usr/local/hadoop/logs/hadoop-nfsuser-nfs3-nfsgw.out

[nfsuser@nfsgw hadoop]$ jps

2728 Jps

2671 Nfs3

[nfsuser@nfsgw hadoop]$ exit

exit

[root@nfsgw hadoop]# jps

2738 Jps

2588 Portmap

2671 -- process information unavailable

– 这里要特别注意:

– 启动 portmap 需要使用 root 用户

– 启动 nfs3 需要使用 core-site 里面设置的用户

挂载 nfs

– 目前NFS v3仅使用TCP作为传输协议。 不支持NLM,因此需要安装选项“nolock”。 强烈建议使用安装选项“sync”,因为它可以最小化或避免重新排序写入,这将导致更可预测的吞吐量。 未指定同步选项可能会导致上传大文件时出现不可靠的行为

– 如果必须使用软安装,用户应该给它一个相对较长的超时(至少不小于主机上的默认超时)

# mount -t nfs -o vers=3,proto=tcp,nolock,sync,noatime,noacl 192.168.4.5:/ /mnt/

# ls /mnt/

input  output  tmp


当前文章:HDFS进阶应用配置NFS网关
文章来源:http://jkwzsj.com/article/gephcs.html

其他资讯