CentOS HDFS升级要注意啥
小樊
35
2025-11-16 05:10:52
CentOS 上 HDFS 升级注意事项
一 升级方式与前置条件
- 明确升级路径:HDFS 的滚动升级要求集群为HA(高可用);非 HA集群无法在不停机的情况下完成升级(NameNode 必须重启)。此外,仅从 Hadoop 2.4.0 起才支持滚动升级。升级前务必确认版本支持矩阵与变更说明。
- 组件与系统检查:核对 Hadoop 各组件版本匹配(HDFS 与 YARN、HBase、ZooKeeper 等)、JDK 版本与依赖库兼容;在 CentOS 上保持系统与依赖为受支持版本,并统一配置 HADOOP_HOME、HADOOP_CONF_DIR、JAVA_HOME 等环境变量。
- 容量与资源:为升级预留充足磁盘空间(升级过程会产生新旧版本数据/元数据副本),并确保 NameNode/DataNode 节点具备足够的内存与 CPU 资源。
- 配置与变更管理:梳理将要变更的配置项(如 core-site.xml、hdfs-site.xml 中与存储、复制、权限、缓存相关的参数),先在测试环境验证,再推广到生产。
- 备份与回滚预案:完整备份 NameNode 元数据(fsimage、edits)、关键配置文件与脚本;制定可执行的回滚/降级流程并演练。
二 升级过程关键注意点
- 选择策略:优先采用滚动升级减少停机;非 HA 集群按停机升级流程执行(NN 重启不可避免,DN 可滚动)。
- 滚动升级操作要点(HA):
- 准备阶段:执行 hdfs dfsadmin -rollingUpgrade prepare 创建回滚用的 fsimage,用 -query 等待状态变为可继续。
- NameNode:先升级 Standby NN,通过故障转移切换为主;再升级原 Active NN 并以 -rollingUpgrade started 启动为备用。
- DataNode:按机架/子集分批执行:用 hdfs dfsadmin -shutdownDatanode host:IPC_PORT upgrade 关闭节点,确认停机后用 -getDatanodeInfo 检查,升级并重启,再处理下一批。
- 非 HA 升级要点:按顺序停机并升级 SecondaryNameNode(SNN) → NameNode(以 -rollingUpgrade started 启动)→ 升级并重启 SNN。
- 升级后验证:使用 hdfs dfsadmin -report 检查集群健康,核对 块数量、容量、副本数 与 DataNode 存活数;抽样读写文件验证业务可用性。
三 回滚与降级策略
- 概念区分:
- 降级(Downgrade):将软件版本恢复到升级前,但保留用户数据;可在升级进行中以滚动方式完成;要求升级前后 NameNode/DataNode 布局版本均未改变。
- 回滚(Rollback):将软件与用户数据一并恢复到升级前状态;只能在滚动升级开始后、完成前执行,且需要停机,不支持滚动回滚。
- 操作提示:若升级后发现问题且不满足降级条件,应尽快执行回滚;若仅需快速恢复服务且数据可接受,优先选择降级。
四 常见陷阱与实用建议
- 切勿误用格式化:升级过程中不要执行 hdfs namenode -format,否则会清空命名空间与数据;仅在全新集群初始化时使用。
- 新功能兼容性:若新版本启用了不向后兼容的新特性,应先在升级前关闭相关功能,升级完成后再启用。
- 升级顺序与依赖:通常 JournalNode(JN)/ZooKeeper(ZK) 在多数情况下无需与 HDFS 同步升级;若确需变更,请评估其对可用性的影响并安排维护窗口。
- 监控与日志:全程关注 NameNode/DataNode 日志 与关键指标(RPC 延迟、队列、块报告、磁盘使用),升级后对小文件、EC 策略、副本数等进行针对性验证与调优。