前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >挂载HDFS到本地目录

挂载HDFS到本地目录

作者头像
summerking
发布2022-09-16 12:23:24
2.4K0
发布2022-09-16 12:23:24
举报
文章被收录于专栏:summerking的专栏

Hadoop新特性:支持通过NFSv3挂载HDFS文件系统到用户的本地文件目录;也就是说:允许用户像访问本地文件系统一样访问HDFS!这对于普通用户来说大大的简化了HDFS的使用。summer记录下如何将HDFS文件系统挂载到Linux本地中。

# 1.部署架构图

# 2.实现效果

  1. 用户可以浏览HDFS文件系统通过本地的文件系统。
  2. 用户可以下载HDFS文件在本地文件系统。
  3. 用户可以直接上传文件从本地文件系统到hdfs。
  4. 用户可以通过挂载点将数据直接流到HDFS。

# 3.部署详解

这里使用2台主机举例:一台作为hadoop文件系统HDFS,另外1台作为客户机挂载HDFS到本地文件系统。

主机

主机名

IP

HDFS服务器

Master

192.168.0.95

PC1客户端

Node1

192.168.0.96

# 4.HDFS服务端操作

  1. 先停止HDFS服务端
代码语言:javascript
复制
[root@master sbin]# ./stop-dfs.sh 
Stopping namenodes on [apiserver.cluster.local]
apiserver.cluster.local: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
[root@master sbin]# jps
9150 Jps

  1. 编辑配置文件
代码语言:javascript
复制
[root@master sbin]# cd ../etc/hadoop/
[root@master hadoop]# vim hdfs-site.xml 
<configuration>
      <property>
         <name>dfs.replication</name>
         <value>1</value>
      </property>
      <property>
        <name>dfs.namenode.accesstime.precision</name>
        <value>3600000</value>
        <description>The access time for HDFS file is precise upto this value. The default value is 1 hour.
        Setting a value of 0 disables access times for HDFS.
        </description>
     </property>
     <property>
        <name>nfs.dump.dir</name>
        <value>/tmp/.hdfs-nfs</value>
     </property>
     <property>
        <name>nfs.exports.allowed.hosts</name>
        <value>* rw</value>
     </property>
</configuration>
[root@master hadoop]# vim core-site.xml 
[root@master hadoop]# cat core-site.xml 
<!-- Put site-specific property overrides in this file. -->
<configuration>
     <property>
         <name>fs.defaultFS</name>
         <value>hdfs://192.168.0.95:9000</value>             
     </property>
     <!-- 指定hadoop临时目录 -->
     <property>
         <name>hadoop.tmp.dir</name>
         <value>/home/summer/hadoop/data/tmp</value>
     </property>
     <property>
         <name>hadoop.proxyuser.root.groups</name>
         <value>*</value>
     </property>
     <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
     </property>
</configuration>
[root@master hadoop]# 

  1. 启动HDFS的NFS

启动NFS一共有三个守护进程,分别为 portmap,mountd和nfsd,NFS网关进程同时具有nfsd和mountd。这里我利用Hadoop自带的包启动

代码语言:javascript
复制
[root@master hadoop]# service nfs stop  //停止平台提供的nfs/rpcbind/portmap服务
Redirecting to /bin/systemctl stop nfs.service
[root@master hadoop]# service rpcbind stop
Redirecting to /bin/systemctl stop rpcbind.service
Warning: Stopping rpcbind.service, but it can still be activated by:
  rpcbind.socket
[root@master hadoop]# cd ../../sbin/
[root@master sbin]# ./start-dfs.sh   //启动hdfs文件系统
Starting namenodes on [apiserver.cluster.local]
apiserver.cluster.local: starting namenode, logging to /summer/hadoop/logs/hadoop-root-namenode-master.out
localhost: starting datanode, logging to /summer/hadoop/logs/hadoop-root-datanode-master.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /summer/hadoop/logs/hadoop-root-secondarynamenode-master.out
[root@master sbin]# jps  //验证进程是否启动
88064 SecondaryNameNode
87028 DataNode
89551 Jps
86446 NameNode
[root@master sbin]# ./hadoop-daemon.sh start portmap  //启动包含portmap的包(需要root权限):
starting portmap, logging to /summer/hadoop/logs/hadoop-root-portmap-master.out
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
[root@master sbin]# jps  //验证portmap进程
88064 SecondaryNameNode
87028 DataNode
93229 Jps
86446 NameNode
92350 Portmap
[root@master sbin]# ./hadoop-daemon.sh start nfs3  //启动 mountd and nfsd进程
starting nfs3, logging to /summer/hadoop/logs/hadoop-root-nfs3-master.out
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
[root@master sbin]# jps  //验证nfs3进程
88064 SecondaryNameNode
94704 Nfs3
95650 Jps
87028 DataNode
86446 NameNode
92350 Portmap
[root@master sbin]# rpcinfo -p 192.168.0.95  //验证所有服务是否已启动和运行
   program vers proto   port  service
    100005    3   udp   4242  mountd
    100005    1   tcp   4242  mountd
    100000    2   udp    111  portmapper
    100000    2   tcp    111  portmapper
    100005    3   tcp   4242  mountd
    100005    2   tcp   4242  mountd
    100003    3   tcp   2049  nfs
    100005    2   udp   4242  mountd
    100005    1   udp   4242  mountd
[root@master sbin]# showmount -e 192.168.0.95  //验证HDFS的namespace是否导出并可以挂载。
Export list for 192.168.0.95:
/ *
[root@master sbin]#

# 5.本机挂载

  • 创建目录并挂载
代码语言:javascript
复制
[root@master sbin]# mkdir /hdfs
[root@master sbin]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl 192.168.0.95:/ /hdfs/
[root@master sbin]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  468G   34G  435G    8% /
devtmpfs                 7.8G     0  7.8G    0% /dev
tmpfs                    7.8G     0  7.8G    0% /dev/shm
tmpfs                    7.8G  755M  7.1G   10% /run
tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/sda1               1014M  142M  873M   14% /boot
/dev/mapper/centos-home   24G  257M   24G    2% /home
tmpfs                    1.6G     0  1.6G    0% /run/user/1000
tmpfs                    1.6G     0  1.6G    0% /run/user/0
192.168.0.95:/           468G   34G  435G    8% /hdfs
[root@master sbin]# 

# 6.跨机器挂载

这里模拟node1(192.168.0.96)挂载远端HDFS文件系统(192.168.0.95)

代码语言:javascript
复制
[root@node1 mnt]# showmount -e 192.168.0.95
Export list for 192.168.0.95:
/ *
[root@node1 mnt]# mount 192.168.0.95:/ /mnt/
[root@node1 mnt]#

# 7.双向验证

在95机器(hdfs文件系统中)创建文件,验证96机器挂载点是否同步生成文件或文件夹 具体操作如下:

代码语言:javascript
复制
[root@master sbin]# hdfs dfs -mkdir /user
[root@master sbin]# hdfs dfs -mkdir /user/test
[root@master sbin]# hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-03-05 14:23 /user
[root@master sbin]# hdfs dfs -ls /user
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-03-05 14:23 /user/test
[root@master sbin]# cd /hdfs/
[root@master hdfs]# ls
user
[root@master hdfs]# ll
总用量 1
drwxr-xr-x 3 root 2584148964 96 3月   5 14:23 user
[root@master hdfs]# cd user/
[root@master user]# ls
test
[root@master user]# 

可以查看96上机器挂载点上同步生成了文件

代码语言:javascript
复制
[root@node1 mnt]# cd /mnt/
[root@node1 mnt]# ll
总用量 1
drwxr-xr-x 3 root 2584148964 96 3月   5 14:23 user
[root@node1 mnt]# cd user/
[root@node1 user]# ll
总用量 1
drwxr-xr-x 2 root 2584148964 64 3月   5 14:23 test
[root@node1 user]#

在96机器挂载点上创建文件或文件夹,验证95机器(hdfs文件系统中)是否同步生成文件 这里96创建一个文件

代码语言:javascript
复制
[root@node1 user]# touch 1234.sh
[root@node1 user]# ll
总用量 1
-rw-r--r-- 1 root root        0 3月   5 14:31 1234.sh
drwxr-xr-x 2 root 2584148964 64 3月   5 14:23 test
[root@node1 user]# 

可以查看95机器hdfs文件系统同步生成了一个文件

代码语言:javascript
复制
[root@master user]# hdfs dfs -ls /user
Found 2 items
-rw-r--r--   1 root root                0 2021-03-05 14:31 /user/1234.sh
drwxr-xr-x   - root supergroup          0 2021-03-05 14:23 /user/test
[root@master user]# 

这里模拟上传文件夹到96挂载点上

代码语言:javascript
复制
[root@node1 summer]# mv elasticsearch_cluster/ /mnt/
[root@node1 summer]# cd /mnt/
[root@node1 mnt]# ls
elasticsearch_cluster  user
[root@node1 mnt]# 

可以查看95机器hdfs文件系统中同步了该文件

代码语言:javascript
复制
[root@master user]# hdfs dfs -ls /
Found 2 items
drwxr-xr-x   - summer summer          0 2021-01-28 18:10 /elasticsearch_cluster
drwxr-xr-x   - root        supergroup           0 2021-03-05 14:31 /user
[root@master user]# 

也可通过浏览器直观查看

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 1.部署架构图
  • # 2.实现效果
  • # 3.部署详解
  • # 4.HDFS服务端操作
  • # 5.本机挂载
  • # 6.跨机器挂载
  • # 7.双向验证
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档