欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop集群管理与NFS网关

发布时间:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Hadoop集群管理与NFS网关 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

目录

一.Hadoop集群管理

1.访问集群文件系统

2.重新初始化集群

3.增加新的节点

4.修复节点

5.删除节点

二.NFS网关

1.NFS网关概述

2.NFS网关架构图

3.HDFS用户授权

4.NFS网关服务搭建概述

5.配置NFS网关

6.mount验证


一.Hadoop集群管理

集群架构图例

1.访问集群文件系统

web页面查看

  • 能看,能读,不能写入

命令行

  • 能看,能读,不能写入

~]# /usr/local/hadoop/bin/hadoop fs -命令 # 该命令与shell的命令类似# 示例 ~]# cd /usr/local/hadoop ~]# /usr/local/hadoop/bin/hadoop fs -mkdir /input mkdir: Cannot create directory /input. Name node is in safe mode. # 手动命令来离开安全模式 ~]# ./bin/hadoop dfsadmin -safemode leave DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.Safe mode is OFF # 创建目录 ~]# ./bin/hadoop fs -mkdir /input ~]# ./bin/hadoop fs -mkdir /aaa ~]# ./bin/hadoop fs -ls / Found 2 items drwxr-xr-x - root supergroup 0 2022-03-12 15:39 /aaa drwxr-xr-x - root supergroup 0 2022-03-12 15:39 /input # 删除目录 ~]#./bin/hadoop fs -rmdir /aaa # 添加文件 ~]# ./bin/hadoop fs -touchz /ceishi.txt # 上传密码文件 ~]# ./bin/hadoop fs -put /etc/passwd /mima # 把文件系统上的input目录下载下来 ~]# ./bin/hadoop fs -get /input /root/input # 删除非空目录和文件(递归删除用-rm -r) ~]# ./bin/hadoop fs -rm -r /input

用集群分析数据

## 首先要把文件上传到hdfs # 创建文件夹 ~]# cd /usr/local/hadoop ~]# ./bin/hadoop fs -mkdir /input # 把要分析的文件上传至hdfs目录中 ~]# ./bin/hadoop fs -put *.txt /input/ ~]# ./bin/hadoop fs -ls /input Found 3 items -rw-r--r-- 2 root supergroup 86424 2022-03-12 16:17 /input/LICENSE.txt -rw-r--r-- 2 root supergroup 14978 2022-03-12 16:17 /input/NOTICE.txt -rw-r--r-- 2 root supergroup 1366 2022-03-12 16:17 /input/README.txt## 然后分析的jar包程序,在每个节点上要有(这里用默认的,如果有其他的在每个节点上也要拷贝一份) ~]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output# /input是文件系统上的,/output是文件系统上的

 

 web页面查看(不能直接查看,要下载下来)

 

2.重新初始化集群

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

1、停止集群 /usr/local/hadoop/sbin/stop-all.sh ​

2、删除所有节点的 /var/hadoop/* ​

3、在 hadoop1 上重新格式化 /usr/local/hadoop/bin/hdfs namenode -format ​

4、启动集群 /usr/local/hadoop/sbin/start-all.sh

~]# /usr/local/hadoop/sbin/stop-all.sh ~]# for i in hadoop1 node-{0001..0003};do ssh ${i} 'rm -rf /var/hadoop/*'; done ~]# /usr/local/hadoop/bin/hdfs namenode -format ~]# /usr/local/hadoop/sbin/start-all.sh

3.增加新的节点

●HDFS 新增节点

-启动一个新的系统,设置SSH免密码登录

-在所有节点修改/etc/hosts, 增加新节点的主机信息

-安装java运行环境(java-1. 8.0-open jdk-deve 1)

-拷贝NamNode的/usr/ local/hadoop到新节点

-同步配置文件到所有机器

为防止当多个节点同时写入数据而导致新增节点死机,所以这边要设置一个带跨(防止ddos攻击)

●在新节点启动DataNode

~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode

●设置带宽,平衡数据

~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth500000000 # 500000000五百兆 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 启动数据平衡,当数据丢失时,会自动从其他服务上找回

●查看状态

~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

由于nodemanager不负责保存数据,所以增加节点相对简单,环境配置与datanode-致

●增加节点(newnode)

~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager

●查看节点(ResourceManager)

~]# /usr/local/hadoop/bin/yarn node -list

准备主机

主机IP地址配置
newnode192.168.1.54最低配置2核2G

新节点安装

在 hadoop1 上执行

~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.54 ~]# 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 ~]# for i in node-{0001..0003} newnode;do rsync -av /etc/hosts ${i}:/etc/ done ~]# rsync -aXSH /usr/local/hadoop newnode:/usr/local/

在 newnode 节点执行

# 安装java的环境 ~]# yum install -y java-1.8.0-openjdk-devel # 删除日志,方便后期排错 ~]# cd /usr/local/hadoop && rm -rf logs/* # 启动数据节点 ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode # 设置同步带跨 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth 500000000 # 启动数据平衡 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 设置master可以自动管理新增节点,不设置也可以手动管理(这里不设置自动管理,)# nodemanager提供计算能力的,数据来源文件系统,利用cpu来计算,本身不存储如何数据的 ~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager ~]# jps 1186 DataNode 1431 NodeManager 1535 Jps

如果要设置自动管理则需要在这里HDFS添加slave管理主机

验证集群(hadoop1上执行)

~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ... ... ------------------------------------------------- Live datanodes (4): ~]# /usr/local/hadoop/bin/yarn node -list ... ... Total Nodes:4

4.修复节点

●修复节点比较简单,步骤与增加节点一-致

        -注意:新节点的ip和主机名要与损坏节点的一致

●如果旧节点数据丢失,新节点可以自动恢复数据

●上线以后会自动恢复数据,如果数据量非常巨大,需要一段时间

   ●修复节点的过程与新增节点一致

5.删除节点

为了测试删除节点数据,这边准备点数据,并上传文件系统

~]# cat hadoop-2.7.7.tar.gz >> mydata # 上传数据之前先查看数据占比 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ~]# /usr/local/hadoop/bin/hadoop fs -put mydata / ~]# /usr/local/hadoop/bin/hadoop fs -ls / Found 2 items -rw-r--r-- 2 root supergroup 1093602605 2022-03-12 18:00 /mydata

配置数据迁移 hdfs-site.xml(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>

配置排除主机列表,并迁移数据(hadoop1上执行)

# 在删除配置文件中添加 newnode,默认文件不存在 ~]# echo newnode >/usr/local/hadoop/etc/hadoop/exclude # 迁移数据前查看 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report | grep Decommission Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal# 迁移数据 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes # 查看状态,仅当节点状态为 Decommissioned 时候才可以下线 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

数据的三种状态

Normal:正常状态

Decommissioned in Progress:数据正在迁移

Decommissioned:数据迁移完成

注意:仅当状态变成Decommissioned 才能down机下线

下线节点(注:newnode执行)

~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager # 注:下线需要30~40分钟,需要这么久主要是因为迁移数据以及保持服务的稳定性

统计表

节点名上传前上传后下线newnode后
node-128k516M516M
node-228k516.04M664.15 M
node-328k793.15M922.16 M
newnode24k277.13M

下线之后还可以保存4~8小时

二.NFS网关

1.NFS网关概述

●NFS网关的用途

        -用户可以通过操作系统兼容的本地NFSv3客户端来浏览HDFS文件系统

        -用户可以通过挂载点直接流化数据

        -允许HDFS作为客户端文件系统的一部分被挂载

        -支持文件附加,但是不支持随机写(nolock)

        - NFS网关目前只支持NFSv3和TCP协议(vers=3, proto=tcp)

可以把HDFS mount成一个文件夹

● 代理用户

-代理用户是NFS网关访问集群的授权用户

        在NameNode和NFSGW上添加代理用户

        代理用户的UID,GID, 用户名必须完全相同

-如果因特殊原因用户UID、GID、 用户名不能保持- -致,需要我们配置nfs. map的静态映射关系

-例如:

uid 10 100 # Map the remote UID 10 to the local UID 100gid 11 101 # Map the remote GID 11 to the local GID 101

2.NFS网关架构图

首先客户端mount挂载NFS,当是读请求的时候HDFS直接到后台集群查找并返回值;当是写的时候会在nfs创建一个临时文件夹,在调用HDFS切块最后写入集群

准备主机

主机IP地址配置
nfsgw192.168.1.55最低配置1核1G

3.HDFS用户授权

hadoop1与nfsgw都要添加用户

## hadoop1机器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser## nfsgw机器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser

HDFS集群授权

## hadoop1机器 # 文件全部内容,下面两配置是nfs的 ~]# 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> # nfs所在组*全部授权</property><property><name>hadoop.proxyuser.nfsuser.hosts</name><value>*</value> # nfs所在组*全部授权</property> </configuration> # 停止集群,同步数据,为了排错方便可以把日志清空 ~]# /usr/local/hadoop/sbin/stop-all.sh ~]# rm -rf /usr/local/hadoop/logs/* ~]# for i in node-{0001..0003};dorsync -avXSH /usr/local/hadoop/etc ${i}:/usr/local/hadoop/done # 再次启动,nodeManager可以不启动,这边为了测试方便 ~]# /usr/local/hadoop/sbin/start-dfs.sh ~]# jps 5925 NameNode 6122 SecondaryNameNode 6237 Jps # 验证集群 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ... ... ------------------------------------------------- Live datanodes (3):

4.NFS网关服务搭建概述

  • nfsgw网关服务

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

-卸载NFSGW的rpcbind与nfs-utils

yum remove y rpcbind nfs-utils
  • NFS网关具有双重角色,他既是一-个HDFS的客户端程序,又是一个NFS服务器,所以NFS网关必须能访问到集群中的所有节点,配置/etc/hosts

  • NFS网关配置

-NFS网关同样需要Hadoop的相关配置文件

-同步NameNode的hadoop安装目录到NFSGW

rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/

-安装JAVA运行环境(java-1.8.0-openjdk-devel)

yum install -y java-1.8.0-openjdk-devel

nfs. exports授权

  • nfs. exports. allowed. hosts

-默认情况下,export可 以被任何客户端挂载。为了更好的控制访问,可以设置属性。值和字符串对应机器名和访问策略,通过空格来分割。机器名的格式可以是单一的主机、Java的正则表达式或者IPv4地址

-使用rw或ro可以指定导出目录的读写或只读权限。

-默认设置为只读权限

  • nfs. dump临时目录配置

- nfs. dump. dir

-用户需要更新文件转储目录参数。NFS客 户端经常重新安排写操作,顺序的写操作会随机到达NFS网关。这个目录常用于临时存储无序的写操作。对于每个文件,无序的写操作会在他们积累在内存中超过一-定阈值(如,1M) 时被转储。需要确保有足够的空间的目录,先使用内存缓存,当内存不足时使用硬盘

- NFS网关在设置该属性后需要重启

5.配置NFS网关

~]# yum remove -y rpcbind nfs-utils ~]# 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 ~]# yum install -y java-1.8.0-openjdk-devel # 这边因为集群以及搭建好了nfs默认安装的,这边直接拷贝 ~]# rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/# 这边以及配好了三个参数(文件系统,指定副本数,删除节点文件) ~]# 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> # 指定/目录挂载以读写来执行,类似于目录/etc/exports(/ *(rw))</property><property><name>nfs.dump.dir</name><value>/var/nfstmp</value> # 当内存不足时可以放到这个临时文件中</property> </configuration> # 创建转储目录,并设置所有者,所有组 ~]# mkdir /var/nfstmp ~]# chown nfsuser.nfsuser /var/nfstmp # 由于 /usr/local/hadoop/logs也是root权限的,nfsuser用户不能把日志写进去,这里也要设置权限,这里由于rpcbind启动要root用户,就是把文件设置成nfsuser用户,当启动时也会自动改回来的 ~]# rm -rf /usr/local/hadoop/logs/* ~]# setfacl -m user:nfsuser:rwx /usr/local/hadoop/logs ~]# getfacl /usr/local/hadoop/logs

启动portmap

注意:

  • 启动portmap需要使用root用户

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

  • 必须为代理用户授权

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

  • 必须先启动portmap之后再启动nfs3

  • 如果portmap重启了,在重启之后nfs3也必须重启

  • 启动NFS网关

# 在nfs机器上 ~]# cd /usr/local/hadoop/ # 启动portmap ~]# ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap## 测试 # 监听端口111与进程 ~]# ss -nulpt | grep 111 ~]# jps 1376 Portmap 1416 Jps # 随便找一台同网段的主机 ~]# yum -y install rpcbind~]# rpcinfo -p nfs的ipprogram vers proto port service100000 2 udp 111 portmapper100000 2 tcp 111 portmapper# 删除临时文件 ~]# rm -rf /tmp/.hdfs-nfs # 授权nfsuser用户启动 ~]# sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3 ~]# sudo -u nfsuser jps 1452 Nfs3 1502 Jps

6.mount验证

注:由于hadoop只能用版本4,但是这里用不了

  • 目前NFS只能使用v3版本

         -vers=3

  • 仅使用TCP作为传输协议

    -proto=tcp

  • 不支持随机写NLM

    -nolock禁用

  • access time的时间更新

          -noatime(mtime(文件的内容不同才会变),ctime(当属性变化才会变的时间),atime(访问才会变的时间))

  • 禁用acl扩展权限

          -noacl

  • 同步写入,避免重排序写入

          -sync

## 到刚刚安装rpcbind的服务上 ~]# rpcinfo -p 192.168.1.55program vers proto port service100005 3 udp 4242 mountd100005 1 tcp 4242 mountd100000 2 udp 111 portmapper100000 2 tcp 111 portmapper100005 3 tcp 4242 mountd100005 2 tcp 4242 mountd100003 3 tcp 2049 nfs100005 2 udp 4242 mountd100005 1 udp 4242 mountd ~]# yum install -y nfs-utils ~]# showmount -e 192.168.1.55 Export list for 192.168.1.55: / * ~]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl,noatime,sync 192.168.1.55:/ /mnt/ ~]# df -h Filesystem Size Used Avail Use% Mounted on 192.168.1.55:/ 118G 15G 104G 13% /mnt# vers :指定版本 # proto: 指定协议 # nolock: 不支持锁(随机写) # noatime:把访问就改时间关闭 # noacl: 不支持acl权限 # sync: 异步写入

总结

以上是生活随笔为你收集整理的Hadoop集群管理与NFS网关的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。