如何使用Cloudera Manager在线为集群减容
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
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告警恢复
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
- 注册中心 Eureka 源码解析 —— 调试环境搭建
- 一样的代码、不一样的写法,JavaScript必知的简写技巧|附源代码
- 【死磕Java并发】-----J.U.C之读写锁:ReentrantReadWriteLock
- 数据库中间件 MyCAT源码分析——跨库两表Join
- iOS一种动态栅格布局方案
- 消息队列中间件 RocketMQ 源码分析 —— Message 存储
- 数据库中间件 MyCAT 源码解析 —— 分片结果合并(一)
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 路由(一)之分库分表配置
- 数据库分库分表中间件 Sharding-JDBC 源码分析 —— SQL 解析(六)之删除SQL
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(五)之更新SQL解析
- ExtJs+WCF+LINQ实现分页Grid
- 数据库[分库分表]中间件 Sharding-JDBC 源码分析 —— SQL 解析(四)之插入SQL
- 基于sliverlight + wcf的web 文字版IM 示例
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(三)之查询SQL
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 线性表--顺序表--双向链表(六)
- C/C++什么时候使用二级指针,你知道吗?
- 萌新学习C++容易漏掉的知识点,看看你中招了没有(一)
- 萌新不看会后悔的C++string字符串常用知识点总结
- salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
- CodeForces - 260C
- 疯子的算法总结(九) 图论中的矩阵应用 Part 2 矩阵树 基尔霍夫矩阵定理 生成树计数 Matrix-Tree
- STL常用对象,不会搞得C++跟没学一样
- 桥接模式
- CF--思维练习--CodeForces - 220C Little Elephant and Shifts (STL模拟)
- CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)
- CF--思维练习--CodeForces - 219C Color Stripe (思维)
- 疯子的算法总结(六) 简单排序总 选择排序+插入排序+比较排序+冒泡排序
- C语言基础知识总结
- CF思维联系--CodeForces - 218C E - Ice Skating (并查集)