当前位置: 首页 > article >正文

Linux云计算 |【第五阶段】ARCHITECTURE-DAY4

主要内容:

HDFS文件系统的使用,调用Hadoop集群分析数据、Hadoop集群的维护、NFS网络配置管理

一、HDFS文件系统管理

1)文件系统管理方式:

  • ① WEB页面(能查看、能读取、不能写入)
  • ② 命令行(能查看、能读取、能写入)

格式:/usr/local/hadoop/bin/hadoop fs -命令

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -help

 


HDFS管理命令示例:

① 创建文件夹(-mkdir

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -mkdir /input

② 创建文件(-touchz

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -touchz /input/tfile

③ 查看文件和目录(-ls

如果访问路径不指定前缀,默认读取core-site.xml核心配置文件的fs.defaultFS参数

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls hdfs://hadoop1:9000/
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-07-13 11:14 hdfs://hadoop1:9000/input
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-07-13 11:14 /input

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls hdfs://hadoop1:9000/input
Found 1 items
-rw-r--r--   2 root supergroup          0 2021-07-13 11:14 hdfs://hadoop1:9000/input/tfile
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /input
Found 1 items
-rw-r--r--   2 root supergroup          0 2021-07-13 11:14 /input/tfile

访问本地文件系统请使用 file://

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls file:///

④ 上传文件(-put

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -put /usr/local/hadoop/*.txt /input/
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /input
Found 4 items
-rw-r--r--   2 root supergroup      86424 2021-07-13 11:19 /input/LICENSE.txt
-rw-r--r--   2 root supergroup      14978 2021-07-13 11:19 /input/NOTICE.txt
-rw-r--r--   2 root supergroup       1366 2021-07-13 11:19 /input/README.txt
-rw-r--r--   2 root supergroup          0 2021-07-13 11:14 /input/tfile

⑤ 下载文件(-get

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -get /input/tfile /tmp/tfile
[root@hadoop1 ~]# ls /tmp/ | grep tfile
tfile

⑥ 删除文件(-rm

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -rm /input/tfile
21/07/13 11:22:30 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /input/tfile
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /input
Found 3 items
-rw-r--r--   2 root supergroup      86424 2021-07-13 11:19 /input/LICENSE.txt
-rw-r--r--   2 root supergroup      14978 2021-07-13 11:19 /input/NOTICE.txt
-rw-r--r--   2 root supergroup       1366 2021-07-13 11:19 /input/README.txt

⑦ 删除文件夹(-rmdir

删除文件夹时,需提前将目录内的所有文件清空,否则无法删除

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -rm /input/*
21/07/13 11:25:04 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /input/LICENSE.txt
21/07/13 11:25:04 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /input/NOTICE.txt
21/07/13 11:25:04 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /input/README.txt
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -rmdir /input/
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /


使用集群分析数据示例:

① 重新初始化集群

警告:该方法会丢失所有数据

  • ​- 停止集群:/usr/local/hadoop/sbin/stop-all.sh
  • ​- 删除所有节点的dfs目录结构:/var/hadoop/*
  • ​- 在NameNode上重新格式化:/usr/local/hadoop/bin/hdfs namenode -format
  • ​- 启动集群:/usr/local/hadoop/sbin/start-all.sh
[root@hadoop1 ~]# /usr/local/hadoop/sbin/stop-all.sh
[root@hadoop1 ~]# for i in hadoop1 node-{0001..0003};do
ssh ${i} 'rm -rf /var/hadoop/*'
done
[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs namenode -format
[root@hadoop1 ~]# /usr/local/hadoop/sbin/start-all.sh

② 创建数据分析存储目录,并上传文件

[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -mkdir /input
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -put /usr/local/hadoop/*.txt /input
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /input

③ 分析上传的文件,分析热点词汇

[root@hadoop1 ~]# cd /usr/local/hadoop/
[root@hadoop1 hadoop]# ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output

④ 查看结果

[root@hadoop1 hadoop]# /usr/local/hadoop/bin/hadoop fs -cat /output/*

二、节点管理

1)增加修复节点

- 新增DateNode节点流程:

  • ① 启动一个新的主机,设置SSH免密登录
  • ② 在所有节点修改/etc/hosts,增加新节点的主机信息
  • ③ 安装Java运行环境(java-1.8.0-openjdk-devel)
  • ④ 拷贝NameNodede的/usr/local/hadoop到新节点
  • ⑤ 同步配置文件到所有主机

补充:通过新增节点方式实现修复节点

  • ① 修复节点比较简单,步骤和新增节点一致;(新节点的IP和主机名需要与损坏节点一致)
  • ② 如果旧节点数据丢失,新节点可以自动从其它集群节点的副本恢复数据;
  • ③ 新节点上线以后会自动恢复数据,如果数据量非常大,需要等待一段时间;


新增DateNode节点示例:

步骤1:购买1台云主机

主机名称

IP地址

相关配置

newnode

192.168.1.54

最低配置2核4G

步骤2:新节点环境准备-1(hadoop1操作)

① 配置SSH免密登录

[root@hadoop1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.54

② 配置主机名解析(所有节点修改/etc/hosts,增加新节点的主机信息)

[root@hadoop1 ~]# vim /etc/hosts
192.168.1.50    hadoop1
192.168.1.51    node-0001
192.168.1.52    node-0002
192.168.1.53    node-0003
192.168.1.54    newnode    //添加newnode
[root@hadoop1 ~]# for i in node-{0001..0003} newnode;do
> rsync -av /etc/hosts ${i}:/etc/
> done

③ 同步NameNode的/usr/local/hadoop配置目录到新节点

[root@hadoop1 ~]# rsync -aXSH /usr/local/hadoop newnode:/usr/local/

步骤3:新节点环境准备-2(newnode操作)

① 安装JAVA运行环境

[root@newnode ~]# yum install -y java-1.8.0-openjdk-devel

② 新节点上手动单独启动DateNode

[root@newnode ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode

补充:单独启动新DateNode节点,可以通过执行hadoop-daemon.sh start datanode,或者可以写入slaves配置文件,使用start-dfs.sh启动

设置最大同步带宽(防止突然性的大规模访问,给主机造成分布式拒绝同步攻击导致宕机);由于新增的节点为空节点,为了让HDFS集群节点存储均匀,需平衡数据

[root@newnode ~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth 500000000
Balancer bandwidth is set to 500000000
[root@newnode ~]# /usr/local/hadoop/sbin/start-balancer.sh    //启动平衡数据程序

④ 新节点启动NodeManager

由于NM不负责保存数据,所以增加节点相对简单,环境配置与DateNode一致;

[root@newnode ~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager

⑤ 验证新节点的角色

[root@newnode ~]# jps

步骤4: 验证集群(hadoop1操作)

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report   //HDFS集群信息

[root@hadoop1 ~]# /usr/local/hadoop/bin/yarn node -list    //YARN集群信息

 

2)删除修复节点

- 删除DataNode节点流程

  • ① 由于集群NodeName存在数据,直接删除会导致HDFS集群节点奔溃及数据丢失,首先需要进行故障节点的迁移数据,在节点下线时才不会影响集群运行;
  • ② 当节点的数据迁移完成,即可删除(下线)节点
  • ③ 删除节点之后,节点信息不会立即消失,需等待一段时间才会移除;

补充:在Hadoop2.x中YARN节点管理非常简单,NodeManage只负责计算,不保存数据,直接删除即可;

 


删除DateNode节点示例:

步骤1:模拟上传测试压缩包

[root@hadoop1 ~]# tar -czf test.tar.gz hadoop-2.7.7.tar.gz
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -put test.tar.gz /input
[root@hadoop1 ~]# /usr/local/hadoop/bin/hadoop fs -ls /input

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report   //HDFS集群信息
Name: 192.168.1.51:50010 (node-0001)
DFS Used: 220584781 (210.37 MB)    //HDFS占用的磁盘空间
Name: 192.168.1.52:50010 (node-0002)
DFS Used: 220552013 (210.33 MB)
Name: 192.168.1.53:50010 (node-0003)
DFS Used: 258048 (252 KB)
Name: 192.168.1.54:50010 (newnode)
DFS Used: 36864 (36 KB)

步骤2:删除节点

① 配置HDFS配置文件(hdfs-site.xml),数据迁移(hadoop1操作,无需同步)

[root@hadoop1 ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/usr/local/hadoop/etc/hadoop/exclude</value>   //移除节点列表文件
    </property>

② 编写移除节点列表文件

[root@hadoop1 ~]# echo newnode > /usr/local/hadoop/etc/hadoop/exclude

③ 迁移数据

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes

④ 查看HDFS集群DataNode节点的状态

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

Decommission Status三种状态

  • - Normal:正常状态
  • - Decommissioned in progress:数据正在迁移
  • - Decommissioned:数据迁移完成

注意:仅当节点状态为 Decommissioned时才能stop下线

⑤ 删除Datanode和NodeManager节点(newnode操作)

[root@newnode ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode
stopping datanode
[root@newnode ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager

⑥ 等待一段时间,查看集群状态

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

[root@hadoop1 ~]# /usr/local/hadoop/bin/yarn node -list

补充:在删除节点后,查看集群状态依旧还有该节点的信息,因为集群节点认为损坏节点失联,并不会将其立即移除,需要等待一段周期才会移除;

三、NFS网关概述

1)NFS网关的用途

相当于代理的作用,非网络文件系统

  • - 用户可以通过操作系统兼容的本地NFSv3客户端来浏览HDFS文件系统;
  • - 用户可以通过挂载点直接流化数据;
  • - 允许HDFS作为客户端文件系统的一部分被挂载;
  • - 支持文件附加,但是不支持随机写(Nolock)
  • - NFS网关目前只支持NFSv3和TCP协议(version=3,protocol=tcp)

 

2)代理用户

  • - 代理用户是NFS网关访问集群的授权用户,需要在NameNode和NFSGW上添加代理用户,代理用户的UID、GID、用户名必须完全相同;
  • - 如果因特殊原因,用户UID、GID、用户名不能保持一致,需要配置nfs.map的静态映射关系;

例如:

注意事项:

NFS网关架构图:


网关代理用户授权示例:

步骤1:购买1台云主机

主机名称

IP地址

相关配置

nfsgw

192.168.1.55

最低配置2核4G

 

步骤2:添加代理用户nfsuser(hadoop1、nfsgw操作)

[root@hadoop1 ~]# groupadd -g 800 nfsuser
[root@hadoop1 ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser
[root@hadoop1 ~]# id nfsuser
uid=800(nfsuser) gid=800(nfsuser) groups=800(nfsuser)

[root@nfsgw ~]# groupadd -g 800 nfsuser
[root@nfsgw ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser
[root@nfsgw ~]# id nfsuser
uid=800(nfsuser) gid=800(nfsuser) groups=800(nfsuser)

步骤3:HDFS集群授权代理用户(hadoop1操作)

① 配置核心配置文件(core-site.xml),授权代理用户

[root@hadoop1 ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop</value>
    </property>
    <property>
        <name>hadoop.proxyuser.nfsuser.groups</name>    //挂载点组授权
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.nfsuser.hosts</name>   //挂载点主机授权
        <value>*</value>
    </property>
</configuration>

② 停止集群所有服务

[root@hadoop1 ~]# /usr/local/hadoop/sbin/stop-all.sh

③ 同步NameNode的/usr/local/hadoop/配置文件到所有节点

[root@hadoop1 ~]# for i in node-{0001..0003};do
> rsync -avXSH /usr/local/hadoop/ ${i}:/usr/local/hadoop/
> done

④ 启动HDFS服务

[root@hadoop1 ~]# /usr/local/hadoop/sbin/start-dfs.sh

补充:配置NFS网关,可不用启动NodeManager计算节点

⑤ 验证角色

[root@hadoop1 ~]# jps

⑥ 验证HDFS集群

[root@hadoop1 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

 

3)NFSGW网关服务

  • - portmap服务(与系统rpcbind冲突)
  • - nfs3服务(与系统nfs冲突)

补充:nfsgw网关服务是Hadoop定制服务,与系统的NFS服务会有冲突,需卸载;

4)HDFS客户数授权NFSGW服务

① nfs.exports授权

  • - nfs.exports.allowed.hosts
  • - 默认情况下,export可以被任何客户端挂载,为了更好的控制访问,可以设置属性;值和字符串对应机器名和访问策略,通过空格来分割,机器名的格式可以是单一的主机、Java的正则表达式或者IPv4地址;使用rw或ro可以指定导出目录的读写或只读权限;默认设置为只读权限。

② nfs.dump配置

  • - nfs.dump.dir
  • - 用户需要更新文件转储目录参数,NFS客户端经常重新安排写操作,顺序的写操作会随机到达NFS网关,这个目录常用于临时存储无序的写操作,对于每个文件,无序的写操作会在他们积累在内存中超过一定阈值(如,1M)时被转储,需要确保有足够的空间的目录,NFS网关在设置该属性后需要重启;

步骤4:搭建NFS网关服务(nfsgw操作)

① 卸载nfs-utils、rpcbind服务

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

② 配置主机名解析

NFS网关具有双重角色,即是NFS服务器,又是HDFS客户端程序,所以NFS网关必须能访问到集群中的所有节点;

[root@nfsgw ~]# vim /etc/hosts
192.168.1.50    hadoop1
192.168.1.51    node-0001
192.168.1.52    node-0002
192.168.1.53    node-0003
192.168.1.55    nfsgw

③ 安装JAVA运行环境

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

④ 同步NameNode的hadoop安装目录到nfsgw主机(配置HDFS客户端)

[root@nfsgw ~]# rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/
[root@nfsgw ~]# ls /usr/local/hadoop/

⑤ 修改HDFS配置文件(hdfs-site.xml

[root@nfsgw ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop1:50090</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/usr/local/hadoop/etc/hadoop/exclude</value>
    </property>
    <property>
        <name>nfs.exports.allowed.hosts</name>    //访问策略及读写权限
        <value>* rw</value>    //所有节点可读写
    </property>
    <property>
        <name>nfs.dump.dir</name>   //文件转储目录
        <value>/var/nfstmp</value>  //存放临时无序写操作目录
    </property>
</configuration>

⑥ 创建转储目录(细节)

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

⑦ 为代理用户授权(细节)

[root@nfsgw ~]# chown nfsuser.nfsuser /var/nfstmp

⑧ 在日志文件夹为代理用户授权(细节)

[root@nfsgw ~]# rm -rf /usr/local/hadoop/logs/*
[root@nfsgw ~]# setfacl -m user:nfsuser:rwx /usr/local/hadoop/logs
[root@nfsgw ~]# getfacl /usr/local/hadoop/logs

5)注意事项:

① 启动Portmap服务需使用root用户(portmap端口号111小于1024)

② 启动nfs3服务需要使用core-site里面设置的代理用户

③ 必须为代理用户授权:

  • - /var/nfstmp不授权,上传文件会出错;
  • - /usr/local/hadoop/logs不授权,看不到报错日志

④ 必须先启动portmap之后再启动nfs3服务,如果portmp重启了,在重启后nfs3也必须重启;

步骤5:启动NFS网关服务

① 启动portmap服务(检查系统rpcbind服务确保已停止卸载)

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

[root@nfsgw hadoop]# jps    // 验证角色

② 启动nfs3服务

[root@nfsgw hadoop]# rm -rf /tmp/.hdfs-nfs/
[root@nfsgw hadoop]# sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3   //使用代理用户启动nfs3服务

[root@nfsgw hadoop]# sudo -u nfsuser jps     //验证角色

6)挂载NFS网关相关选项

  • - vers=3    //目前NFS只能使用v3版本
  • - proto=tcp   //仅使用TCP作为传输协议
  • - nolock      //不支持随机写NLM
  • - noatime   //禁用access time的时间更新
  • - noacl     //禁用acl扩展权限
  • - sync     //同步写入,避免重排序写入

步骤6:验证挂载NFS网关(newnode操作)

① 安装依赖软件包

[root@newnode ~]# yum install -y nfs-utils
[root@newnode ~]# showmount -e 192.168.1.55
Export list for 192.168.1.55:
/ *

② 挂载HDFS目录到本地/mnt文件夹

[root@newnode ~]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl,noatime,sync 192.168.1.55:/ /mnt/
[root@newnode ~]# df -h

 

小结:

本篇章节为【第五阶段】ARCHITECTURE-DAY4 的学习笔记,这篇笔记可以初步了解 HDFS文件系统的使用,调用Hadoop集群分析数据、Hadoop集群的维护、NFS网络配置管理。


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。


http://www.kler.cn/news/361881.html

相关文章:

  • [Vue3核心语法] setup语法糖
  • 企业级调度器 LVS
  • Cocos Creator导出obj文件用于后端寻路
  • 未来AI的学习能力会达到怎样的水平?
  • 51单片机快速入门之 串行通信 2024/10/21
  • 二叉树习题其二Java【力扣】【算法学习day.9】
  • LabVIEW水质监测系统
  • leetcode 3191. 使二进制数组全部等于 1 的最少操作次数 I 中等
  • 计算机的错误计算(一百三十一)
  • EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法
  • 『完整代码』坐骑召唤
  • 【数据结构】顺序表与链表的区别和各自特点
  • 数据结构-贪心算法笔记
  • MAC电脑的JDK、MAVEN配置及IDEA激活
  • Vehicle Spy3.9如何新建工程—Setup network Database
  • 基于SpringBoot中药材进存销管理系统【附源码】
  • C++基础(10. map_set 的使用)
  • 深入探索路由算法的核心原理与应用
  • ESlint代码规范
  • 基于PHP的减脂轻食购物网站【附源码】
  • 注册_登录安全分析报告:宝马中国
  • Vue学习笔记 Class绑定 Style绑定 侦听器 表单输入绑定 模板引用 组件组成 组件嵌套关系
  • concurrently 库作用
  • 如何让别人喜欢你的代码
  • VSCode生成HTML标准结构,使用VSCode进行提前设置为zh-CN
  • Disconnected from the target VM