• UID80
  • 登录2017-12-11
  • 粉丝64
  • 关注21
  • 发帖1124
  • 主页
  • 金币6545枚
社区居民
忠实会员
原创写手
潇潇宇 发布于2016-08-19 13:44
0/895

通过NFSv3挂载HDFS到本地目录

楼层直达

通过NFSv3挂载HDFS到本地目录

 

 

4. 透过NFS访问hdfs
最重要的参考文档是这篇,来自官方
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsNfsGateway.html


当然里面有坑,两个:
一个是需要停止系统的portmap/rpcbind服务,(也就是说,hdfs-nfs自己实现pormap和nfs server的功能)
另一个是启动Gateway服务服务的时候,要切换到相应的用户。


4.1 虚拟机环境
ip地址 为 172.30.0.129, 机器名 ip-172-30-0-129,其他未变




4.2 HDFS安装
显然,得首先安装HDFS 系统,目前HDFS 已经深度集成到 Hadoop 中了,所以,也就是安装 Hadoop (略)。




4.3 配置core-site.xml文件


在 etc/hadoop/core-site.xml 中添加以下两个节, 样板如下:
(说明: 用在你的集群中启动Gateway服务的用户名代替“nfsserver”)


<property>
  <name>hadoop.proxyuser.nfsserver.groups</name>
  <value>root,users-group1,users-group2</value>
  <description>
         The 'nfsserver' user is allowed to proxy all members of the 'users-group1' and
         'users-group2' groups. Note that in most cases you will need to include the
         group "root" because the user "root" (which usually belonges to "root" group) will
         generally be the user that initially executes the mount on the NFS client system.
         Set this to '*' to allow nfsserver user to proxy any group.
  </description>
</property>


<property>
  <name>hadoop.proxyuser.nfsserver.hosts</name>
  <value>nfs-client-host1.com</value>
  <description>
         This is the host where the nfs gateway is running. Set this to '*' to allow
         requests from any hosts to be proxied.
  </description>
</property>






因此,我的配置文件 添加 如下:
<property>
  <name>hadoop.proxyuser.nfsguest.groups</name>
  <value>root,nfs-group</value>
</property>


<property>
  <name>hadoop.proxyuser.nfsguest.hosts</name>
  <value>ip-172-30-0-129</value>
</property>


代理用户是nfsguest,nfs组的名字是 nfs-group


4.3.1 先行配置
a. 机器名

在/etc/hosts 中添加 如下一行, 之后重启
172.30.0.129 ip-172-30-0-129


b. 添加用户, 用户组
[root@ip-172-30-0-129 hdfs]# groupadd nfs-group
[root@ip-172-30-0-129 hdfs]# useradd nfsguest -g nfs-group
[root@ip-172-30-0-129 hdfs]# usermod -a -G nfs-group nfsguest
[root@ip-172-30-0-129 hdfs]# usermod -a -G nfs-group root
查看操作结果
[root@ip-172-30-0-129 hdfs]# grep 'nfsguest'  /etc/passwd
nfsguest:x:501:501::/home/nfsguest:/bin/bash
[root@ip-172-30-0-129 hdfs]# grep 'nfs-group'  /etc/group
nfs-group:x:501:root,nfsguest
[root@ip-172-30-0-129 hdfs]# su nfsguest
[nfsguest@ip-172-30-0-129 hdfs]




4.4 配置 log4j.property,
在 etc/hadoop/log4j.properties 文件中,增加如下:
log4j.logger.org.apache.hadoop.hdfs.nfs=DEBUG
log4j.logger.org.apache.hadoop.oncrpc=DEBUG




4.5 配置 hdfs-site.xml 文件
4.5.1 安全配置

默认地,export可以被任何客户端挂载。
用户可以更新属性 dfs.nfs.exports.allowed.hosts 。
配置的value包括机器的名字和访问权限,用空格分开。
机器名字格式可以是一台主机,通配符,或者IPv4网卡地址。
访问权限用rw或者指定机器的访问权限readwrite或者readonly。如果访问权限没有被提供,默认的是只读。
条目用“;”分隔。例如: “192.168.0.0/22 rw ; //w*//.example//.com ; host1.test.org ro;”
这个属性被更新后,只有NFSGateway需要重新启动。
例如:
<property>  
  <name>dfs.nfs.exports.allowed.hosts</name>  
  <value>172.30.0.243 rw ;172.30.0.129 rw ;</value>  
</property>


4.5.2 在文件 core-site.xml 中的其他配置
客户端在存取时间 (NameNode需要重启)
dfs.namenode.accesstime.precision
更新文件转储目录
dfs.nfs3.dump.dir
优化性能
dfs.nfs.rtmax
dfs.nfs.wtmax




4.6 启动 网关 服务   (除特别说明外,都在root下操作)


a. 顺序停止相关服务 hdfs,nfs, rpcbind

[root@ip-172-30-0-129 hadoop-2.7.1]# sbin/stop-dfs.sh 
Stopping namenodes on [localhost]
localhost: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
[root@ip-172-30-0-129 hadoop-2.7.1]# bin/hdfs dfs -ls /
ls: Call From ip-172-30-0-129/172.30.0.129 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
[root@ip-172-30-0-129 hadoop-2.7.1]# 
[root@ip-172-30-0-129 hadoop-2.7.1]# service nfs  stop
Shutting down NFS daemon:                                  [FAILED]
Shutting down NFS mountd:                                  [FAILED]
Shutting down NFS quotas:                                  [FAILED]
[root@ip-172-30-0-129 hadoop-2.7.1]# service rpcbind stop
Stopping rpcbind:                                       [  OK  ]
[root@ip-172-30-0-129 hadoop-2.7.1]# 


b. 启动Hadoop的portmap,
[root@ip-172-30-0-129 hadoop-2.7.1]# sbin/hadoop-daemon.sh --script /home/hdfs/hadoop-2.7.1/bin/hdfs start portmap
starting portmap, logging to /home/hdfs/hadoop-2.7.1/logs/hadoop-root-portmap-ip-172-30-0-129.out
[root@ip-172-30-0-129 hadoop-2.7.1]# ls /home/hdfs/hadoop-2.7.1/logs/ -lht
total 153M
-rw-r--r-- 1 root root  714 Jan 22 08:46 hadoop-root-portmap-ip-172-30-0-129.out
-rw-r--r-- 1 root root  14K Jan 22 08:46 hadoop-root-portmap-ip-172-30-0-129.log
(省略)
[root@ip-172-30-0-129 hadoop-2.7.1]# cat /home/hdfs/hadoop-2.7.1/logs/hadoop-root-portmap-ip-172-30-0-129.out
ulimit -a for user root
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3911
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3911
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@ip-172-30-0-129 hadoop-2.7.1]# cat /home/hdfs/hadoop-2.7.1/logs/hadoop-root-portmap-ip-172-30-0-129.log
2016-01-22 08:46:45,533 INFO org.apache.hadoop.portmap.Portmap: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting Portmap
STARTUP_MSG:   host = ip-172-30-0-129/172.30.0.129
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 2.7.1
STARTUP_MSG:   classpath = (省略).jar
STARTUP_MSG:   build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a; compiled by 'jenkins' on 2015-06-29T06:04Z
STARTUP_MSG:   java = 1.7.0_91
************************************************************/
2016-01-22 08:46:45,543 INFO org.apache.hadoop.portmap.Portmap: registered UNIX signal handlers for [TERM, HUP, INT]
2016-01-22 08:46:45,731 INFO org.apache.hadoop.portmap.Portmap: Portmap server started at tcp:///0.0.0.0:111, udp:///0.0.0.0:111
[root@ip-172-30-0-129 hadoop-2.7.1]# 


c. 启动  mountd 和 nfsd 服务 (在 代理用户 下操作)
"不安全“模式下,需要切换到 代理用户nfsguest下
[root@ip-172-30-0-129 hadoop-2.7.1]# sbin/hadoop-daemon.sh --script /home/hdfs/hadoop-2.7.1/bin/hdfs start nfs3
starting nfs3, logging to /home/hdfs/hadoop-2.7.1/logs/hadoop-root-nfs3-ip-172-30-0-129.out
[root@ip-172-30-0-129 hadoop-2.7.1]# ls /home/hdfs/hadoop-2.7.1/logs/ -lht
total 153M
-rw-r--r-- 1 root root  17K Jan 22 09:03 hadoop-root-nfs3-ip-172-30-0-129.log
-rw-r--r-- 1 root root  714 Jan 22 09:03 hadoop-root-nfs3-ip-172-30-0-129.out
(省略)
[root@ip-172-30-0-129 hadoop-2.7.1]# cat /home/hdfs/hadoop-2.7.1/logs/hadoop-root-nfs3-ip-172-30-0-129.out
ulimit -a for user root
core file size          (blocks, -c) 0
(省略)
file locks                      (-x) unlimited
[root@ip-172-30-0-129 hadoop-2.7.1]# cat /home/hdfs/hadoop-2.7.1/logs/hadoop-root-nfs3-ip-172-30-0-129.log
2016-01-22 09:03:36,098 INFO org.apache.hadoop.nfs.nfs3.Nfs3Base: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting Nfs3
STARTUP_MSG:   host = ip-172-30-0-129/172.30.0.129
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 2.7.1
STARTUP_MSG:   classpath = (省略).jar
STARTUP_MSG:   build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a; compiled by 'jenkins' on 2015-06-29T06:04Z
STARTUP_MSG:   java = 1.7.0_91
************************************************************/
2016-01-22 09:03:36,107 INFO org.apache.hadoop.nfs.nfs3.Nfs3Base: registered UNIX signal handlers for [TERM, HUP, INT]
(省略)
2016-01-22 09:03:38,535 INFO org.mortbay.log: Started HttpServer2$SelectChannelConnectorWithSafeStartup@0.0.0.0:50079
2016-01-22 09:03:38,544 INFO org.apache.hadoop.oncrpc.SimpleTcpServer: Started listening to TCP requests at port 2049 for Rpc program: NFS3 at localhost:2049 with workerCount 0
[root@ip-172-30-0-129 hadoop-2.7.1]# 

 




d. 停止服务,使用下面的命令:
sbin/hadoop-daemon.sh --script /home/hdfs/hadoop-2.7.1/bin/hdfs stop portmap
sbin/hadoop-daemon.sh --script /home/hdfs/hadoop-2.7.1/bin/hdfs stop nfs3


e. 验证服务
[root@ip-172-30-0-129 hadoop-2.7.1]# rpcinfo -p ip-172-30-0-129
   program vers proto   port  service
    100005    2   tcp   4242  mountd
    100000    2   udp    111  portmapper
    100000    2   tcp    111  portmapper
    100005    1   tcp   4242  mountd
    100003    3   tcp   2049  nfs
    100005    1   udp   4242  mountd
    100005    3   udp   4242  mountd
    100005    3   tcp   4242  mountd
    100005    2   udp   4242  mountd
[root@ip-172-30-0-129 hadoop-2.7.1]# 
如果看到类似的输出,那么所有的服务,都起来了。


f. 验证 hdfs的名字空间是否输出
[root@ip-172-30-0-129 hadoop-2.7.1]# showmount -e ip-172-30-0-129
Export list for ip-172-30-0-129:
/ 172.30.0.243,172.30.0.129
[root@ip-172-30-0-129 hadoop-2.7.1]# 


更多情况下,是看到类似这样的输出:
Exports list on $nfs_server_ip :
/ (everyone)


4.7 挂载
[root@ip-172-30-0-129 hadoop-2.7.1]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync ip-172-30-0-129:/  /mnt/hdfs
[root@ip-172-30-0-129 hadoop-2.7.1]# ls /mnt/hdfs -lh
total 11K
drwxr-xr-x 2 root 2584148964   64 Dec 24 11:21 slog
drwxr-xr-x 5 root 2584148964  160 Dec 24 12:10 solr
-rw-r--r-- 1 root 2584148964 5.5K Jan 21 02:36 test.txt
[root@ip-172-30-0-129 hadoop-2.7.1]# bin/hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - root supergroup          0 2015-12-24 11:21 /slog
drwxr-xr-x   - root supergroup          0 2015-12-24 12:10 /solr
-rw-r--r--   1 root supergroup       5538 2016-01-21 02:36 /test.txt
[root@ip-172-30-0-129 hadoop-2.7.1]# 


0人打赏
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 80957/379   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 45952/191   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 45588/0   Python爬虫:常用浏览器的useragent

  • 42130/261   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 39096/145   省时省力的Android组件群来了,非常棒的原型参考

  • 30566/143   2016抢红包软件及源码

  • 29596/71   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 29488/2   超全!整理常用的iOS第三方资源

  • 24860/161   Android版类似UC浏览器:非常赞,产品级的源码

  • 23073/31   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 22768/26   Android工程师面试题大全

  • 22734/27   2016程序员跳槽全攻略

  • 22089/10   GitHub上排名前50的iOS项目:总有一款你用得着

  • 21088/21   码魂:程序员的牛B漫画

  • 19329/85   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 19327/74   【持续更新中】Android福利贴(二):资料源码大放送

  • 19183/43   一个绚丽的loading动效分析与实现!

  • 19115/10   2016年最全的Android面试考题+答案 精编版

  • 18895/3   吐槽那些程序员的搞笑牛逼注释

  • 17885/45   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 17811/104   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 17766/82   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 17756/1   iOS 动画总结

  • 17411/25   个人收集的Android 各类功能源代码

  • 16922/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 16895/23   Android福利第三波【Android电子书】

  • 16712/1   iOS中文版资源库,非常全

  • 16707/81   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 16655/54   基于瀑布流的美女图片浏览App,有注释的源代码

  • 16519/18   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 16500/10   女程序员的梦,众网友的神回复

  • 16226/23   珍藏多年的素材,灵感搜寻网站

  • 16221/11   年会上现场review代码是怎么样的体验!

  • 15876/19   65条最常用正则表达式,你要的都在这里了

  • 14999/16   基于Android支付宝支付设计和开发方案

  • 14413/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 14358/18   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 14155/47   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 13975/62   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 13840/0   GitHub iOS 库和框架Top100 

  • 13689/7   用程序员的姿势抢过年的火车票

  • 13663/7   一张图搞定iOS学习路线,非常全面

  • 13310/10   成为Java顶尖程序员 ,看这11本书就够了

  • 13242/10   微信支付终于成功了(安卓,iOS),在此分享

  • 13124/18   一张图搞定Android学习路线,非常全面

  • 12980/29   【持续更新中】Android福利贴(一):资料源码

  • 12886/4   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 12703/4   46 个非常有用的 PHP 代码片段

  • 12161/3   即时通信第三方库

  • 11578/9   流媒体视频直播方案

  • 11549/18   八个最优秀的Android Studio插件

  • 11390/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 11227/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 11152/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 11083/12   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 10586/1   基于node-webkit跨平台应用案例集之(一)

  • 10336/6   开箱即用!Android四款系统架构工具

  • 10132/11   十大技巧快速提升Android应用开发性能

  • 10121/4   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 10079/2   Android性能优化视频,文档以及工具

  • 返回顶部