资讯动态

CDH集群机房搬迁实战:从数据迁移到全量校验的完整指南

发布时间:2026/9/11 13:22:31 来源:尧图企业网站定制
接手CDH集群机房搬迁这类任务的时候很多人的第一反应是不就是把机器从A机房挪到B机房吗跟搬家一样顺理成章。真干过一回你就知道这个类比害死人。普通服务器搬机柜开机自检过了就算成功而CDH这种分布式系统你把210个节点全搬过去以后面对的可能是一整屏的DataNode心跳超时、ZooKeeper会话断开、HDFS块上报风暴然后在业务恢复会议上被问到哑口无言。这几年我经手过不止一次CDH集群整体搬迁从十几个节点的测试集群到上百个节点的生产集群都碰过。每次搬迁结束后团队里都会多出一批新的经典反面教材。这篇文章把我踩过的坑、验证过有效的流程、以及搬迁后真正要紧的校验项全部整理出来给正准备做机房搬迁的同行一个可以照着执行的参考。不管你是只搬一个边缘节点还是整个生产集群跨机房迁移下面的思路和步骤都能用得上。1. 搬迁的本质不是搬机器是在另一栋楼里重建一套分布式系统1.1 为什么机房搬迁比想象中难得多先想清楚一个问题CDH集群为什么不能像普通应用服务器那样关机、搬运、开机、完事因为CDH是一个强依赖网络、时钟、机架感知和节点身份的系统。HDFS靠DataNode的心跳和块上报维持元数据视图YARN靠NodeManager与ResourceManager之间的心跳维系调度关系ZooKeeper靠多数派选举保证HA切换可用。这些机制全部建立在节点间网络可达性稳定、节点身份可识别、时钟基本一致、物理分布符合机架拓扑脚本预期的前提上。搬迁的过程中至少以下几件事会同时发生变化机房变了意味着网络环境大概率变化IP、路由、防火墙策略、DNS解析可能全部重来。物理位置变了机架拓扑变了但拓扑脚本如果没跟着改HDFS就会认为所有节点都还在老机架上副本摆放规则当场失效。硬件的启动顺序变了这意味着ZooKeeper、NameNode、JournalNode这些角色的启动顺序如果乱了很可能出现脑裂或者元数据加载异常。甚至连磁盘盘符顺序、网卡名称、MAC地址绑定关系都可能变而这几个东西恰恰是CDH节点身份识别和数据目录定位的关键。所以我把搬迁的本质定义为在物理迁移的同时把整套集群的身份、网络、拓扑、角色关系全部重建一遍。只搬箱子的那个阶段反而是整个项目里最不需要动脑子的阶段。1.2 CDH集群搬迁的三种主流模式做了这么多项目我做方案时一般会把搬迁模式收敛成三种没有第四种花活整机搬迁模式旧集群停机所有机器统一断电搬运到新机房重新上电启动最后调整配置恢复服务。适合同城短距离、停机窗口充足、集群规模小或者业务可以接受长时间中断的场景。数据复制重建模式在新机房搭建一套全新CDH集群通过DistCp等方式把HDFS数据、Hive元数据、Kafka数据等从旧集群复制过去然后业务切换。适合新旧机房可以并行运行、数据量可控、切换时间要求高的场景。滚动分批迁移模式集群不停机按批次把部分节点从旧机房搬入新机房每搬完一批就恢复并验证一批直到所有节点完成迁移。适合大规模生产集群、业务连续性要求高、不能接受长时间停机的场景。选择哪种模式核心考量是四个变量业务可接受的停机窗口、新旧机房间的网络带宽和延迟、集群总数据量、以及实施团队对CDH的熟练程度。表三种搬迁模式适用性对照维度整机搬迁数据复制重建滚动分批迁移停机窗口需数小时到数天短分钟级切换几乎无感知数据量约束无限制受复制带宽和时间限制受批次规划和Balancer限制新旧机房并行不需要必须必须实施复杂度低中高典型适用场景同城短搬、测试集群跨地域迁移、版本升级同步做生产集群、大规模迁移我个人的倾向是只要新旧机房之间能打通专线或者足够带宽的网络数据量又在几百TB以内滚动分批迁移永远是体验最好的方案。它对业务几乎无感而且在实施过程中遇到问题时永远是局部问题不会把整集群拖下水。1.3 影响搬迁方案选型的几个硬指标方案选型不能光凭感觉我每个项目都会先量化计算下面几个指标再用数字倒推方案总数据量用hdfs dfs -du -h /统计HDFS总用量加上HBase、Kafka、ZooKeeper数据目录的物理大小得出集群的真实负载量。可用的迁移带宽新老机房之间的专线带宽或者裸光纤带宽注意要刨掉线上业务本来就要用的部分。比如总带宽是10Gbps但是线上业务白天要占掉6Gbps那迁移带宽只能按4Gbps算。单日可迁移数据量带宽×时间窗口×有效利用率。有效利用率通常按0.7算因为TCP传输存在重传、小文件拖慢效率、HDFS写入本身有副本开销等多种损耗。停机窗口上限业务方给出的最大可接受中断时间这决定了是否必须选择滚动分批迁移。公式很简单实操中很管用。比如200TB数据、5Gbps有效带宽、按0.7有效率计算理论单日可迁移约37TB复制全量需要约5.4天。如果业务方说只能给3天停机窗口那整机搬迁根本不成立必须走滚动迁移。这个测算表放在方案第一页评审会上基本没人能挑出毛病。2. 搬迁前的盘点和评估这一步少做一件事后面可能赔进去一周2.1 资产与拓扑信息的完整盘点很多人会觉得资产盘点是行政或者资产管理干的活技术团队拿现成的资产表看一眼就行。我吃过这个亏。上一份资产表跟实际机房差了十多个机柜位置部分节点IP也变了到了现场完全是凭着CM界面里agent alive状态一个个对着找。从那次以后盘点永远是从Cloudera Manager的Hosts页面导出全量主机列表再到每个机柜面前对照物理标签做二次确认。必须盘清楚的几个维度节点身份信息主机名、IP、MAC地址、主板序列号、磁盘序列号。CDH的agent在首次注册时会生成一个agent UUID存储在/var/lib/cloudera-scm-agent/下如果整盘镜像或者系统盘被换掉这个身份信息要特别注意。集群角色分布哪些节点是NameNode、ZooKeeper、JournalNode、Kafka Broker、HBase RegionServer这些角色在搬迁顺序上有优先级。机架与U位信息精确到每个机柜的U位编号迁移后机架位置肯定变这个信息是后续更新机架感知脚本的输入。网络连接信息业务网、管理网、存储网分别走哪些网卡、哪些VLAN、哪些交换机端口。CDH生产环境通常至少有三张网卡只记录一张IP是完全不够的。盘点结果不要只存Excel我会顺手整理成三份文件主机信息清单、机柜U位规划表、网络端口对照表。这三份文件在搬迁现场是团队的作战地图。2.2 网络环境与依赖服务的迁移前测试搬迁不是搬到新机房才测网络而是在搬第一批机器之前就要在新机房搭一个小规模的测试环境验证网络基础条件。如果新机房的网络配置有问题搬过去一批就是死一批。重点测试这么几项新旧机房之间专线连通性和延迟延迟超过10ms就要警惕超过30ms基本不能做跨机房实时数据复制。新机房的DNS和hosts解析策略CDH集群强烈依赖/etc/hosts或DNS解析主机名必须能稳定解析到规划的新IP。防火墙策略和安全组配置CDH组件之间端口非常多ZooKeeper的2181/2888/3888、HDFS的8020/50070/50470、YARN的8088/8040/8042还有Kafka的9092等等。我通常会在新机房防火墙策略里先按整段放通内网跑通之后再按最小化原则收敛。时钟同步新机房有没有可用的NTP服务器能不能在集群内部自建NTP源。时间不同步会导致Kerberos认证失败CDH如果启用了Kerberos时间偏差超过5分钟直接全员掉线。2.3 数据量、复制时长与搬迁批次规划数据量测算是搬迁方案里最能体现专业度的地方。我一般会做三张表HDFS目录明细表、各节点DataNode存储用量表、服务角色总览表。HDFS的数据量明细直接关系到最后校验时能不能核对清楚。操作命令是# 查看HDFS各级目录用量 hdfs dfs -du -h /data # 按目录汇总统计 hadoop fs -du / | sort -rh | head -50 # 查看每个数据节点已用空间 hdfs dfsadmin -report各节点DataNode用量表用来决定每个批次搬哪些节点。原则是尽量保证每批迁走的节点存储用量接近避免某一批搬走了集群中存储量最大的节点导致剩下的节点在Balancer过程中压力过大。批次规划时还要遵守一个硬规则任何批次下线的DataNode总量不能超过副本冗余度的边界。三副本情况下单批下线节点数不要超过副本数减一保守做法是单批下线不超过总节点数的1/3。否则NameNode为了保证副本数会触发大规模的跨节点复制网络和磁盘压力会瞬间打满影响线上业务。3. HDFS数据迁移与副本策略滚动迁移的核心操作3.1 为什么滚动迁移时不需要DistCp全量复制滚动分批迁移的数据核心逻辑是不复制数据数据跟着机器走但要保证在搬迁过程中HDFS的副本数不下降数据安全性不降级。难点在于当一个DataNode从集群中退场断电、断网、下线NameNode会认为该节点上的所有块都损失了一个副本。如果三副本集群中某一块的三个副本恰好都在同一批次下线的节点上这个块就会变成零副本产生数据丢失。规避办法有两个维度一是靠概率和批次控制保证任意一批下线的节点里不包含某个块的全部副本。在随机均匀分布的情况下只要单批下线节点占比足够小这个概率就足够低但没法做到100%。二是通过HDFS的Decommission机制让数据在节点真正下电之前先转移。把节点加入dfs.hosts.exclude文件执行刷新后NameNode会慢慢把该节点上所有块的其他副本复制到其他节点然后标记为Decommissioned。这一步做完节点即使突然断电也不会造成任何副本下降。实操时我的选择是以Decommission为主、批次控制为辅。每批1/3以内节点先exclude并等待Decommission状态完成再断电搬迁。这样既保证数据安全又不会因为等待块复制太久而影响整体进度。3.2 搬迁批次内DataNode的下线与恢复流程每批节点的标准操作顺序我整理了下面几个步骤已经固化成团队的标准作业流程进入维护窗口确认该批节点上没有正在执行的关键作业。在Cloudera Manager中找到这批DataNode逐个执行Decommission操作。CM的HDFS实例页面可以直接选中多个DataNode点击Decommission。观察NameNode UI或者CM界面的副本数和块完整性指标等所有受影响的数据块完成复制。对大量数据的节点这一步可能持续数小时需要耐心盯。确认Decommission状态后停掉该批节点上的DataNode进程、NodeManager进程以及其他非必要角色。保留ZooKeeper等协调角色到最后再停。执行系统关机、拔线、搬运。到新机房后启动顺序是反过来的先通电开机等操作系统启动完成并确认网络恢复再启动Cloudera Manager Agent然后启动DataNode等服务。这里一定要提醒DataNode重新启动后会向NameNode发送块报告和注册信息如果大批量节点同时上线NameNode会承受很大的元数据负载。我通常会在CM里设置dfs.namenode.handler.count适当调大并且分批启动DataNode避免一瞬间的块汇报风暴。恢复后立即检查这一批的健康状态# 检查新节点是否注册成功 hdfs dfsadmin -report | grep -A 5 Hostname: new-datanode-01 # 检查是否有Under Replicated Blocks hdfs dfsadmin -report | grep Under replicated blocks # 触发一次主动块平衡 hdfs balancer -threshold 10 -policy datanode3.3 搬迁过程中HDFS副本策略的调整与Balancer调优滚动搬迁开始之前我会把HDFS的副本参数仔细过一遍确认使用默认三副本策略并且启动Balancer来均衡数据。Balancer运行时的参数调整很关键dfs.datanode.balance.bandwidthPerSec控制每个DataNode用于Balancer的最大带宽默认值往往太低。在搬迁场景下我会临时调整到100MB/s到200MB/s搬迁完成后再降回去。dfs.balancer.moverThreads控制移动块数据的并发线程数适当调高可以加快自动平衡速度但不宜过高以免压垮磁盘IO。Balancer的-threshold参数建议设为5到10表示允许各节点存储使用率偏差在5%到10%范围内搬迁阶段不用追求绝对均衡。Balancer是否要手动执行我的经验是正常搬迁时每个批次Decommission完成后NameNode自己会为了恢复副本数而自动触发副本复制这个过程会显著改变各节点的数据分布。等到所有批次搬迁完成后一定要手动跑一次全局Balancer否则集群的存储使用率会明显不均个别节点可能到80%其他节点才50%后续很容易触发误告警。Balancer的运行时间一般选在业务低峰期可以用nohup hdfs balancer -threshold 5 /tmp/balancer.log 21 启动然后通过日志观察进度。3.4 搬迁期间不停业务业务DistCp增量同步技巧如果新旧机房之间已经打通专线并且你计划采用数据复制重建模式或者想在整体切换前先做一次全量校验DistCp就避免不了。DistCp我没少用几个关键参数要特别注意hadoop distcp -p -update -delete -m 20 -bandwidth 100 \ hdfs://old-namenode:8020/data \ hdfs://new-namenode:8020/data-update只复制源端有而目标端没有的或者内容已经发生变化的文件配合增量同步很好用。-delete删除目标端那些源端已经不存在的文件保证目录结构一致。-bandwidth限制每个Map任务使用的带宽避免把线上业务带宽吃光。-m控制并发Map任务数。不要一味调大需要根据源端和目的端的CPU、磁盘能力综合评估。我的习惯是先做一次全量DistCp然后业务切换前再做一次增量DistCp窗口通常在15到30分钟内这样两次复制中间的业务数据增量能完整同步过去切换后的数据一致性才有保障。跑完DistCp之后再配合文件数和文件大小的对比基本可以确认数据是否完整。文件数对比我常用hadoop fs -count /data # 输出 目录数 文件数 字节数 路径新旧集群同样路径的count结果一致才算过校验关。4. 下电搬迁与恢复启动第一批最容易出事节奏要稳4.1 批次内节点的下电顺序和角色优先级第一批节点搬迁是整个项目风险最高的阶段因为团队对新的机房环境还不熟操作节奏也没形成肌肉记忆。我的建议是第一批选规模最小的一个边缘业务节点组宁可用它练手也不要把核心节点放第一批。单个批次内的下电顺序我严格执行下面的角色优先级排序先停业务依赖最少的服务比如Hue、Oozie这些Web类服务。再停计算类实例NodeManager、Spark HistoryServer。然后停存储类实例DataNode这一步要等Decommission彻底完成。接着停协调类服务Kafka Broker、HBase RegionServer。最后才允许关停机器上可能存在的ZooKeeper进程。为什么ZK要最后停因为ZooKeeper集群的Leader选举需要多数派在线。如果关停ZK节点导致集群成员少于半数整个ZK就不可用了所有依赖ZK的组件会连锁崩溃。所以同一批里如果恰好有多个ZK节点要保证至少剩余半数以上ZK节点在线。4.2 物理搬迁中的运输与标识规范搬运环节听起来没有技术含量实际上非常多项目在物理环节翻车。核心原因就一个标签不规范。谁搬的、搬到哪个机柜哪个U位、搬的时候机器里的磁盘有没有固定好、是不是先拔了网线再拔的电源这些细节全部要落实到纸面记录上。我给团队定过一套搬迁标签规则分享出来可以参考每台服务器贴双重标签机器本体一张含主机名、资产号、目标机柜U位机箱前方把手一张含搬迁批次号。断电操作顺序固定为先停服务进程再拔业务网线再拔存储网线最后拔电源线。所有线缆按颜色和端口号做标记统一收在对应机器附带的扎带包里。搬运装车时同一个批次的服务器尽量放在同一辆运输车、同一区域避免到达新机房后还要满场找机器。每台机器搬运到位后现场执行第一次通电前检查内存条有没有松动、硬盘有没有掉位、板卡有没有移位。服务器运输颠簸导致内存松动是出现频率最高的问题。4.3 到新机房后的启动顺序与初始化检查节点到新机房并不是通电就行启动过程中有几个动作必须按顺序执行先接网络、配置IP、确保能和新机房的网关通信再开机。开机后先检查hostname是否正确检查/etc/hosts是否已经更新到新IP映射。启动Cloudera Manager Agent观察Agent日志/var/log/cloudera-scm-agent/cloudera-scm-agent.log是否能正常连上Cloudera Manager Server。在CM界面逐个启动该节点上的服务角色注意观察角色启动日志有没有报错。新机房环境里最容易出现的一个隐蔽问题时钟偏移。很多新机房的物理服务器主板上有一块纽扣电池在运输期间可能被放电启动后系统时间和真实时间偏差很大。如果集群启用了Kerberos这种问题直接让服务进程无法启动。所以到新机房的第一个动作我建议所有节点先做一次强制NTP时间同步systemctl stop ntpd ntpdate -u ntp-server-ip systemctl start ntpd4.4 批次恢复完成后的即时验证项节点恢复启动之后不要急着宣布该批次完成。我每个批次启用一套最小验证清单确认Cloudera Manager界面上该批次所有角色状态是绿色并且运行时间不是刚重启的状态。检查HDFSUnder replicated blocks数量正常应接近0或者快速下降。检查YARNActive NodeManager数量确认新批次的NodeManager成功注册。挑选一台重启后的节点手动在HDFS上做一个写入和读取测试验证数据通路正常。检查ZooKeeper的ruok命令响应和Leader状态。echo ruok | nc zk-node-ip 2181 echo srvr | nc zk-node-ip 2181这套清单每批次都跑既能为整库迁移积累信心也能在问题发生初期就把范围限制在一个批次内。5. 全量迁移完成后的校验不是起来了而是跟原来一样稳5.1 HDFS数据完整性三级校验全部节点搬迁完成集群所有服务显示正常这只是第一步。接下来数据完整性校验是重中之重我做三层校验第一层文件系统和块级别校验hdfs fsck / -files -blocks -locations /tmp/fsck_report.txt 21 # 检查报告中的 CORRUPT 和 MISSING 信息 grep -E CORRUPT|MISSING /tmp/fsck_report.txt | head -20fsck会扫描所有文件的所有块报告损坏或缺失的副本情况。注意在滚动搬迁过程中如果某个节点的Decommission没等完成就被断电很可能出现MISSING块。所以搬迁后跑一次全量fsck是必须的。第二层抽样数据校验。从HDFS上随机挑选一批关键业务目录下的文件用hdfs dfs -checksum做新旧对比如果是数据复制模式或者从多个副本读取对比整机搬迁模式hdfs dfs -checksum /data/important/file01.parquet # 连续执行多次确认返回的CRC值一致第三层业务数据交叉验证。比如Hive表行数对比、Kafka topic的累计消息量对比、HBase表的行键范围抽样。这部分需要业务方配合但一定不能省。之前有次搬迁后fsck全过但某个业务方反馈数据少了三天最后查下来是Kafka数据目录在迁移时少拷贝了一个segment文件。从此以后Kafka的topic数据量对比被我列入了必做校验。5.2 服务角色和组件健康检查清单服务角色层面的校验我用一张自检表来逐项打勾避免遗漏表迁移后服务健康检查清单检查项检查方式通过标准CM Server与AgentCM主页Hosts列表所有主机心跳正常无异常告警HDFS NameNode HAhdfs haadmin -getAllServiceState一Active一Standby无Fencing异常ZooKeeper集群echo srvr | nc ip 2181集群中可用的ZK节点数超过半数YARN ResourceManageryarn rmadmin -getAllResourceStateActive/Standby状态正常HBase MasterHBase UI只有一个Active MasterKafka Brokerkafka-broker-api-versions.sh --bootstrap-server ip:9092所有Broker返回正常HiveServer2连接测试能通过beeline正常执行SQL每一台机器都开SSH登录手动执行jps或查看CM角色列表核对角色进程是否和迁移前完全一致。不一致的立刻定位不要等到业务方来投诉。5.3 业务写路径验证与性能基准对比迁移前每个正常运行的集群都有一定的性能基线。比如HDFS写吞吐大概是多少、跑一个典型离线作业耗时多久、Kafka消息端到端延迟多少。搬迁之后这些数据最好做一次简单的复测。推荐的验证方法用hdfs dfs -put上传一个5GB左右的测试文件统计写入耗时。从HDFS下载该文件统计读取耗时。在YARN上跑一条简单的Spark或者MapReduce作业观察心跳延迟和应用完成时间。检查NameNode的RPC平均延迟正常情况下应该在10ms以内如果超过50ms说明网络或GC配置在新环境出了问题。性能对比的目的是发现整体可用但实际降级的隐患。比如新机房交换机存在丢包、光纤模块不佳导致重传率升高这类问题不会让服务挂掉但会让集群整体跑得比以前慢。业务方不会感知细节只会说集群好像变卡了而我们运维方必须用数据提前暴露这个问题。5.4 机架感知、监控告警与CM配置的收尾更新这个步骤是最多人漏掉的迁移完成后机架感知脚本还停留在旧机房拓扑。如果不更新HDFS的三副本机制在逻辑上就失效了——NameNode认为这些节点分散在不同机架实际上它们可能都在新机房同一个机柜一旦机柜断电就是全量副本丢失。更新机架感知的步骤修改CM里配置的拓扑脚本路径通常是topology.py或topology.sh把脚本中的机架映射表换成新机柜结构。通过hdfs dfsadmin -printTopology确认各节点的新Rack信息已生效。对关键目录执行一次hdfs fsck / -rack验证副本的机架分布是否合理。监控告警的更新同样重要。机房搬迁意味着监控系统的告警策略也要跟着改IP变了、机柜变了、网络延迟阈值变了。如果迁移后监控系统还按旧IP或者旧的网络分区去配置那和裸奔没区别。我建议把Prometheus Alertmanager或者Zabbix里的主机分组、告警规则全部过一遍重点更新网络相关告警。Cloudera Manager自身的配置也要核对如果CM Server也搬迁了需要确认CM数据库通常是内嵌PostgreSQL或外部MySQL的连接正常以及cloudera-scm-server的日志无异常。所有hosts映射更新之后CM界面里如果出现旧主机名残留及时清理。6. 搬迁过程中的高频问题复盘这些坑不值得你再踩一遍6.1 节点身份信息变了agent UUID和DataNode注册失败的根源整机搬迁最容易遇到的一个问题是操作系统盘如果因为运输或者故障被更换CDH Agent的UUID变了Cloudera Manager会把这台机器当成一个全新的主机来识别导致旧主机名和角色信息残留新的主机注册后又出现端口冲突或角色重复。排查思路是如果CM界面发现同一台物理机的旧主机名已经失联但新主机名又自动出现先对比/etc/hosts和CM的Hosts列表再检查/var/lib/cloudera-scm-agent/uuid文件是否存在且与CM数据库记录一致。如果不一致最稳妥的办法是在CM中移除旧主机然后以新主机身份重新添加角色和数据目录。6.2 盘符漂移DataNode启动后报Data Directory Not FoundLinux环境下磁盘在重启后设备名可能发生变化。比如原来/dev/sdb挂载到/data1重新开机后变成了/dev/sdc。如果CM配置的DataNode数据目录是/data1/dfs/dn这个目录本身是通过/etc/fstab用设备名挂载的盘符漂移后挂载失败DataNode自然起不来。这个问题的解决办法在搬迁前就做把所有数据盘的挂载方式从设备名改成UUID。在搬迁前用blkid获取磁盘UUID然后修改/etc/fstab。这个方法在上百台节点上验证过能有效规避盘符漂移。blkid # /dev/sdb1: UUIDxxxx-xxxx TYPEext4 # 在 /etc/fstab 中写为 # UUIDxxxx-xxxx /data1 ext4 defaults 0 06.3 机架感知脚本未同步更新引发的副本分布雪崩前面校验环节提到过机架感知这里单独说一次事故复盘。有一次搬迁后HDFS界面持续报警Under Replicated Blocks排查了很久最后发现拓扑脚本里还写着旧机房的机架名NameNode认为所有新机房的节点都分布在旧机架的多个不同Rack上数据块被优先放置到了并不存在的旧机架中。结果所有节点都变成同一个逻辑Rack三副本全部落在一个真实机柜完全失去了跨机架容灾能力。修复办法很简单就是更新拓扑脚本并且刷新NameNode。教训是机架感知脚本这种低频修改的配置最容易在搬迁时被遗漏但后果却是最致命的。6.4 防火墙安全组目录漏配少数端口服务互相访问异常的隐形杀手新机房出于安全考虑通常会做更严格的防火墙策略。CDH组件间通信端口非常多漏掉几个就会出现时好时坏的诡异现象。最典型的是KafkaBroker之间通信端口漏放时跨节点副本拉取会间歇性失败topic扩容时会报错但现有消息读写可能正常极难排查。我的建议是搬迁前做一次全量端口扫描和连通性测试用简单的脚本把新旧节点之间的关键端口全部试探一遍nc -zv target-ip 2181 nc -zv target-ip 9092 nc -zv target-ip 8020搬迁开始之后一旦有端口不通的问题要在第一时间确认防火墙策略而不是在服务配置里绕来绕去。6.5 时间偏差过大导致Kerberos认证集体失效这个问题在开启Kerberos的CDH集群里出现过不止一次。新机房的服务器主板电池放电导致机器开机时间回到了出厂时间。全部启动后CM界面上所有角色开始报认证失败日志里全是Server not found in Kerberos database或者Clock skew too great。这类问题不要惊慌强制同步一遍NTP时间然后把Kerberos服务端和客户端的时间全部拉齐再重启相关服务就能恢复。但要注意如果时间差异过大Kerberos ticket cache可能已经失效还需要执行kinit重新获取票据。6.6 迁移后的实践经验总结每次搬迁结束我都会要求团队做一次复盘会输出一份搬迁遗留问题清单和下次搬迁改进项。很多东西只有在实际搬迁中踩过才会形成肌肉记忆。比如我上面整理的这些细节如果靠临时看文档遇到紧急情况时根本来不及反应。做CDH集群机房搬迁整体上是一个三分技术、七分流程的工程。技术层面的活HDFS、ZK、CM这些组件都是现成的真正考验人的是能不能把每个环节的操作顺序、校验项、责任人全部落实到位。流程细化到什么程度风险就能降低到什么程度。我个人的体会是搬迁方案写得越厚现场踩的坑就越少。别嫌那些表格和检查清单繁琐它们每一条都是之前项目里真金白银换回来的教训。把它固化成一整套标准作业流程无论是你自己再做一次还是团队新人接手都能少走很多弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价