Hadoop集群管理与NFS网关
目录
一.Hadoop集群管理
1.访问集群文件系统
2.重新初始化集群
3.增加新的节点
4.修复节点
5.删除节点
二.NFS网关
1.NFS网关概述
2.NFS网关架构图
3.HDFS用户授权
4.NFS网关服务搭建概述
5.配置NFS网关
6.mount验证
一.Hadoop集群管理
集群架构图例
1.访问集群文件系统
web页面查看
-
能看,能读,不能写入
命令行
-
能看,能读,不能写入
用集群分析数据
## 首先要把文件上传到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.sh3.增加新的节点
●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准备主机
| newnode | 192.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:44.修复节点
●修复节点比较简单,步骤与增加节点一-致
-注意:新节点的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分钟,需要这么久主要是因为迁移数据以及保持服务的稳定性统计表
| node-1 | 28k | 516M | 516M |
| node-2 | 28k | 516.04M | 664.15 M |
| node-3 | 28k | 793.15M | 922.16 M |
| newnode | 24k | 277.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 1012.NFS网关架构图
首先客户端mount挂载NFS,当是读请求的时候HDFS直接到后台集群查找并返回值;当是写的时候会在nfs创建一个临时文件夹,在调用HDFS切块最后写入集群
准备主机
| nfsgw | 192.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 nfsuserHDFS集群授权
## 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-develnfs. 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网关
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网关的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python之钉钉机器人编程
- 下一篇: jump-server 安装部署