温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.文档编写目的
在Hadoop集群资源紧张的情况下可以在线扩容来提升集群的计算能力,具体参考Fayson前面的文章《如何在非Kerberos环境下对CDH进行扩容》,那么在集群计算能力浪费的情况下,如何避免集群资源浪费?本篇文章主要介绍如何使用Cloudera Manager在线减容Hadoop集群。
1.节点强制下线
2.节点正常下线
3.总结
1.CM和CDH版本为5.13
1.拥有Cloudera Manager的管理员账号
2.CDH集群已安装成功并正常运行
2.节点强制下线
1.计算节点下线前DataNode节点磁盘使用情况和Yarn资源使用情况统计
Yarn资源统计
2.通过Cloudera Manager的进入所有主机列表
3.选中要下线的节点,点击从“从集群中删除”
4.点击“集群中删除”,注意两个勾选要去掉。
5.点击“确认”
删除成功
注意:这里可以看到Hadoop相关角色已从该节点删除,但是依然存在Hosts列表中,受Cloudera Manager管理。
6.将该节点从Cloudera Manager移除
7.点击“确认”,可以看到该节点已从集群中移除
8.查看集群资源情况
集群中DataNode节点磁盘使用情况统计
Yarn资源统计
3.节点正常下线
1.计算节点下线前集群的DataNode节点磁盘使用情况统计
集群Yarn资源情况统计
2.通过Cloudera Manager的进入所有主机列表
3.选中要下线的节点,点击从“从集群中删除”
4.从集群中删除172.31.7.172节点
等待将该节点从集群中删除,解除授权的过程中,该下线节点上的数据也会被自动复制到其他的DataNode节点,如果下线节点的数据量较大,此步骤会耗费非常长的时间。
5.下线成功
6.将该节点从Cloudera Manager中移除
7.点击“确认”,将该节点移除Cloudera Manager
可以看到172.31.7.172节点已被移除。
8.查看集群资源情况
集群Yarn资源情况统计
4.总结
这里Fayson使用了两种方式来下线节点即正常下线和强制下线。
1.强制下线时未勾选“解除授权角色”和“跳过管理角色”功能,则会直接将该节点上面的所有角色停止并删除节点上的角色,不会处理该节点上的数据,会导致集群Block缺失。
2.正常下线时勾选了“解除授权角色”和“跳过管理角色”功能,则在进行节点下线的时候会将该节点的数据复制到集群的其它节点上,在数据全部复制成功后才会将该节点从集群中删除。
3.对比强制下线和正常下线前后磁盘使用情况可以看出,强制下线并未将下线节点的数据复制到集群其它节点。
4.对比强制下线和正常下线前后Yarn资源情况,在该节点从集群中删除后,Yarn的资源有减少。
在强制下线后集群出现异常告警
NameNode异常日志:
The number of live datanodes 3 has reached the minimum number 1. Safe mode will be turned off automatically once the thresholds have been reached.
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1523)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.renewLease(FSNamesystem.java:5145)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.renewLease(NameNodeRpcServer.java:884)
at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.renewLease(AuthorizationProviderProxyClientProtocol.java:361)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.renewLease(ClientNamenodeProtocolServerSideTranslatorPB.java:670)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:617)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1073)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2226)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2222)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2220)
Caused by: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot renew lease for DFSClient_NONMAPREDUCE_1296242040_1. Name node is in safe mode.
异常原因:由于强制下线数据节点,HDFS的Block缺失,导致NameNode进入安全模式。Fayson在下线节点后,按照Cloudera Manager重启了集群,所以NameNode在接收DataNode汇报block的时候会进入安全模式,否则HDFS不会在一下线节点就自动进入安全模式。
解决方法:
sudo -u hdfs hadoop dfsadmin -safemode leave
sudo -u hdfs hadoop fsck / -delete
执行成功后等待集群将缺失的block从其他节点恢复至设置的副本数据
HDFS告警恢复
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。