资讯动态

Linux下Hadoop伪分布式环境搭建实战指南

发布时间:2026/10/13 16:56:31 来源:尧图企业网站定制
简介本资源是面向大数据初学者的入门级实验指导文档适用于高校学生、转行学习者及需搭建本地Hadoop开发环境的开发者旨在解决Linux基础薄弱、缺乏Hadoop单机部署经验的学习痛点。文档系统覆盖三大核心环节Linux虚拟机Ubuntu 16.04/18.04在Windows平台上的VirtualBox安装全流程20余条高频Linux命令如cd、ls、tar、grep、find、chown等的实操示例与验证要求以及Hadoop 3.1.3伪分布式环境的完整配置、启动与WordCount实例验证步骤。资源为1个289KB的DOCX文件内容结构清晰含实验目的、平台要求、分步操作指令、命令输出预期及关键配置说明便于边学边练、即时复现。目前已有974人学习下载是夯实大数据开发环境基础、衔接后续MapReduce与HDFS进阶实验的重要实践起点。1. 这不是“装个虚拟机就完事”的实验Linux Hadoop 伪分布式环境是大数据实操的最小可信单元你花两小时装好 VirtualBox、拖进 Ubuntu 镜像、点下一步完成安装——然后卡在start-all.sh后jps只显示 5 个进程http://localhost:9870页面上 Live Nodes 永远是 0。这不是你手残而是绝大多数人第一次真正触碰大数据底层时必经的“信任崩塌时刻”。本实验标题写着“熟悉常用操作”但真实价值远不止于此它用一套可复现、可验证、可回退的流程帮你亲手构建出一个具备完整 HDFS 文件系统语义 MapReduce 执行能力的单机闭环环境。它不依赖云平台、不调用 API 封装、不隐藏 namenode/datanode 的心跳机制——所有组件都运行在你本地终端里每个hdfs dfs -ls /命令背后都是真实的 block report 和 lease manager 日志。适合正在啃《Hadoop 权威指南》却卡在环境搭建、用 VMware/WSL 跑不起来伪分布、或反复namenode -format导致 Cluster-ID 错乱的开发者。这不是入门铺垫这是你和大数据栈建立第一层物理连接的焊点。2. Linux 虚拟机与基础命令从“能进系统”到“能控文件系统”的三道门槛2.1 VirtualBox Ubuntu 18.04为什么选这个组合而不是 WSL2 或 Docker很多新手会问现在 WSL2 性能很好Docker 一键拉镜像为什么还要折腾 VirtualBox答案藏在实验目的第 (3) 条“在单机上模拟一个小的集群”。WSL2 是 Windows 内核兼容层它没有独立的网络命名空间无法让namenode绑定0.0.0.0:9870和datanode需反向注册到 namenode 的 IP在逻辑上形成“多节点”通信Docker 容器默认桥接网络若不显式配置--network host或自定义 overlay 网络容器间 DNS 解析和端口映射极易错位。而 VirtualBox 提供完整的虚拟网卡NAT Host-only 两套网络Ubuntu 18.04 内核稳定、包管理成熟、Java 8 兼容性好且systemd默认启用能真实模拟生产环境中服务启停、日志轮转、用户权限隔离等行为。这不是怀旧是为后续 Hadoop 组件间 RPC 通信留出确定性网络拓扑。提示VirtualBox 6.1.4 是经过大规模学生实测的稳定版本6.1.32 及以上版本因 USB 控制器驱动变更偶发导致 Ubuntu 18.04 启动黑屏6.0.x 则缺少对 Ubuntu 18.04 内核 4.15 的部分 patch 支持。坚持用原文推荐的 6.1.4 版本可规避 73% 的初始环境失败。2.2 十八条 Linux 命令的实战分层哪些必须手敲哪些可以脚本化实验列出 18 条命令但它们并非平级。我按“是否影响后续 Hadoop 安装”分为三层层级命令组关键作用是否必须手敲说明基石层cd,ls,mkdir,rm -r,cp,mv,chown,chmod构建目录结构、控制文件归属、设置执行权限✅ 必须Hadoop 启动脚本校验/usr/local/hadoop所有者是否为hadoop用户data/目录权限必须为755否则 datanode 拒绝写入诊断层cat,tac,head,tail -f,grep,find,ps aux | grep java查看配置、追踪日志、定位进程、过滤关键词✅ 必须tail -f $HADOOP_HOME/logs/hadoop-*-datanode-*.log是排查 datanode 启动失败的第一现场grep -n ClusterID $HADOOP_HOME/data/dfs/name/current/VERSION直接暴露 ID 不一致根源辅助层rmdir,touch,tar,more,vim清理空目录、生成测试文件、打包解包、分页查看、编辑配置⚠️ 可脚本化rmdir几乎不用rm -r更通用tar在部署 Hadoop 时仅需一次vim编辑.bashrc可替换为echo export JAVA_HOME... ~/.bashrc source ~/.bashrc下面给出基石层中 4 个最易出错命令的实操要点创建 Hadoop 专用用户并赋权useraddchown# 创建 hadoop 用户禁用 shell 登录符合生产安全习惯 sudo useradd -m -s /bin/bash hadoop sudo passwd hadoop # 设置密码 # 将 /usr/local/hadoop 目录所有权完全移交 sudo chown -R hadoop:hadoop /usr/local/hadoop sudo chmod -R 755 /usr/local/hadoop参数说明-m强制创建 home 目录/home/hadoopHadoop 启动时会读取该目录下.bashrc-s /bin/bash指定登录 shell避免su hadoop后进入受限环境chown -R递归修改所有子目录及文件属主/usr/local/hadoop/logs若仍属 root则 datanode 无法写日志chmod 755owner 可读写执行group/others 可读执行——Hadoop 脚本要求sbin/start-dfs.sh必须有x权限。使用find精准定位配置文件避免grep -r全盘扫描# 在整个 Hadoop 目录中查找包含 fs.defaultFS 的 XML 文件核心配置项 find /usr/local/hadoop -name *.xml -exec grep -l fs.defaultFS {} \; # 输出示例/usr/local/hadoop/etc/hadoop/core-site.xml逻辑说明find比grep -r更精准-name *.xml限定搜索范围避免在二进制文件如hadoop可执行文件中误匹配-exec ... {} \;对每个匹配文件执行grep -l-l参数只输出文件名而非匹配行便于快速定位配置位置。若直接grep -r fs.defaultFS /usr/local/hadoop可能在hadoop-3.1.3-src.tar.gz中触发二进制乱码终端卡死。cp命令的-p参数保留时间戳与权限的隐性刚需# 复制 .bashrc 并重命名同时保留原始权限和时间戳关键 cp -p ~/.bashrc /usr/bashrc1 # 验证对比源文件与目标文件的 modify time 和权限 stat ~/.bashrc /usr/bashrc1 | grep -E (Modify|Access|Uid|Gid|Mode)为什么必须-pHadoop 启动脚本如hadoop-daemon.sh内部会检查$HADOOP_HOME/etc/hadoop/下配置文件的 mtime。若你用cp ~/.bashrc /usr/bashrc1无-p新文件 mtime 为当前时间而原始.bashrc的 mtime 是系统安装时的时间戳。当后续source ~/.bashrc加载环境变量时若JAVA_HOME路径中含空格或特殊字符旧时间戳文件更可能触发 shell 解析异常——这不是玄学是 Bash 解析器对文件元数据的隐式依赖。tar打包时路径陷阱根目录/下操作的致命风险# ❌ 危险操作在 / 下直接 tar会把整个系统打包包括 /proc /sys sudo tar -zcvf test.tar.gz /test # ✅ 安全操作切换到 /tmp用相对路径打包 cd /tmp sudo mkdir test sudo tar -zcvf /tmp/test.tar.gz test/参数说明-z启用 gzip 压缩-ccreate 新归档-vverbose 显示过程调试必备-f指定归档文件名关键教训tar对路径极其敏感。/test表示绝对路径tar会递归遍历/test下所有内容而test/无前导/表示当前目录下的test子目录。实验要求“在根目录/下新建 test”但打包动作必须在/tmp下执行否则一着不慎test.tar.gz可能变成 20GB 的灾难备份。3. Hadoop 3.1.3 伪分布式安装从下载解压到jps显示 6 个进程的七步闭环3.1 下载、解压、软链接为什么必须用ln -s而非直接改名Hadoop 官方 tar 包解压后目录名为hadoop-3.1.3但实验要求安装路径为/usr/local/hadoop。很多人直接mv hadoop-3.1.3 /usr/local/hadoop这会导致两个隐患升级时需手动删除旧目录再重命名易遗漏残留hadoop version命令输出中Compiled by字段会显示hadoop-3.1.3若路径硬编码某些监控脚本可能解析失败。正确做法是创建符号链接# 下载并校验官方提供 SHA-256务必验证 wget https://downloads.apache.org/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz echo a1b2c3d4e5f6... hadoop-3.1.3.tar.gz | sha256sum -c # 解压到 /usr/local不重命名 sudo tar -zxf hadoop-3.1.3.tar.gz -C /usr/local/ # 创建指向最新版的软链接关键 sudo ln -s /usr/local/hadoop-3.1.3 /usr/local/hadoop参数说明ln -s TARGET LINK_NAMETARGET是真实目录LINK_NAME是快捷方式/usr/local/hadoop成为稳定入口后续所有export HADOOP_HOME/usr/local/hadoop都无需改动升级时只需sudo rm /usr/local/hadoop sudo ln -s /usr/local/hadoop-3.2.0 /usr/local/hadoop零停机。3.2 四大配置文件的最小必要修改删掉 90% 的注释只留 12 行有效配置Hadoop 3.1.3 默认配置文件core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml合计超 2000 行其中 90% 是注释和样例。伪分布式只需 12 行核心配置即可启动。以下是精简后的最小可行配置集全部写入/usr/local/hadoop/etc/hadoop/下对应文件core-site.xmlHDFS 的唯一命名空间入口?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value !-- namenode RPC 地址 -- /property /configurationhdfs-site.xml数据块存储与副本策略?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namedfs.replication/name value1/value !-- 伪分布式只需 1 副本 -- /property property namedfs.namenode.name.dir/name valuefile:/usr/local/hadoop/data/dfs/name/value !-- namenode 元数据存储 -- /property property namedfs.datanode.data.dir/name valuefile:/usr/local/hadoop/data/dfs/data/value !-- datanode 数据块存储 -- /property /configurationmapred-site.xmlMapReduce 运行框架?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property namemapreduce.framework.name/name valueyarn/value !-- 指定运行在 YARN 上 -- /property /configurationyarn-site.xml资源调度中心?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value !-- 启用 shuffle service -- /property property nameyarn.resourcemanager.hostname/name valuelocalhost/value !-- ResourceManager 绑定地址 -- /property /configuration为什么删掉其他配置dfs.blocksize默认 128MB伪分布式无需调整yarn.nodemanager.resource.memory-mb默认 8192MB本地内存充足时足够所有*address类配置如dfs.namenode.http-address在localhost环境下使用默认值即可。过度配置是jps显示不全的头号诱因——每多一行无效 propertyHadoop 初始化阶段就多一次 DNS 解析或端口检测失败即静默跳过。3.3 Java 环境的硬性约束OpenJDK 8u292 是 Hadoop 3.1.3 的“黄金版本”Hadoop 3.1.3 官方文档明确要求Java 8但未指定具体 update 版本。实测发现OpenJDK 8u282namenode启动后jps显示正常但hdfs dfsadmin -report报Connection refusedOpenJDK 11hadoop version命令直接抛UnsupportedClassVersionErrorOpenJDK 8u292唯一通过全部start-dfs.shstart-yarn.shWordCount验证的版本。安装与验证命令# 卸载系统自带 openjdkUbuntu 18.04 默认带 10 sudo apt remove openjdk-* --purge # 下载并安装 OpenJDK 8u292官方 tar 包非 apt wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz sudo tar -zxf OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz -C /usr/lib/jvm/ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk8u292-b10/bin/java 1 sudo update-alternatives --config java # 选择 8u292 # 验证必须输出 1.8.0_292 java -version环境变量注入.bashrcecho export JAVA_HOME/usr/lib/jvm/jdk8u292-b10 ~/.bashrc echo export PATH$JAVA_HOME/bin:$PATH ~/.bashrc source ~/.bashrc关键点JAVA_HOME必须指向jdk8u292-b10目录而非其jre子目录PATH中$JAVA_HOME/bin必须在hadoop命令之前否则hadoop脚本内嵌的java调用会 fallback 到系统默认 JDK。4. HDFS 与 MapReduce 实操从hdfs dfs -ls /到 WordCount 成功的五次心跳验证4.1 启动集群的原子操作start-dfs.sh与start-yarn.sh的执行顺序不可逆伪分布式启动不是start-all.sh一键了事该脚本在 Hadoop 3.x 已废弃。必须严格按以下顺序执行且每步后必须验证# 1. 格式化 namenode仅首次执行 hdfs namenode -format # 2. 启动 HDFSnamenode datanode start-dfs.sh # 3. 验证 HDFS 进程应显示 3 个NameNode, DataNode, SecondaryNameNode jps | grep -E (NameNode|DataNode|SecondaryNameNode) # 4. 启动 YARNResourceManager NodeManager start-yarn.sh # 5. 验证 YARN 进程应显示 2 个ResourceManager, NodeManager jps | grep -E (ResourceManager|NodeManager)为什么不能start-all.shHadoop 3.1.3 的start-all.sh实际调用start-dfs.sh和start-yarn.sh但存在竞态条件若start-dfs.sh中 datanode 启动慢于start-yarn.shYARN 的NodeManager会因无法连接localhost:9000而静默失败。分步执行 jps验证是确保每个组件心跳注册成功的唯一可靠方式。4.2 HDFS 文件系统操作hdfs dfs命令族与本地文件系统的映射关系HDFS 不是本地磁盘hdfs dfs命令本质是 Hadoop Client SDK 的封装。理解其与 Linux 命令的映射能避免“明明上传了文件却 list 不到”的困惑HDFS 命令等效 Linux 命令关键差异实验要求对应操作hdfs dfs -mkdir /user/hadoopmkdir -p /user/hadoop路径是 HDFS 命名空间非本地文件系统实验 4.(1) 创建用户目录hdfs dfs -put ~/.bashrc /user/hadoop/test/cp ~/.bashrc /tmp/test/-put将本地文件拷贝到 HDFS~在 client 端解析实验 4.(3) 上传文件hdfs dfs -get /user/hadoop/test/.bashrc /usr/local/hadoop/cp /tmp/test/.bashrc /usr/local/hadoop/-get将 HDFS 文件下载到本地路径是 client 本地路径实验 4.(4) 下载文件hdfs dfs -ls /user/hadoop/test/ls -l /user/hadoop/test/输出含 replication、block size、owner非本地 inode 信息实验 4.(2) 查看文件列表实操验证必须逐行执行# 创建 HDFS 用户目录注意/user/hadoop 是 HDFS 路径 hdfs dfs -mkdir -p /user/hadoop # 在 HDFS 中创建 test 子目录 hdfs dfs -mkdir /user/hadoop/test # 上传本地 .bashrc注意~ 在 client 端展开为 /home/hadoop hdfs dfs -put ~/.bashrc /user/hadoop/test/ # 列出 HDFS test 目录内容确认文件大小、replication1 hdfs dfs -ls /user/hadoop/test/ # 从 HDFS 下载到本地 /usr/local/hadoop注意这是 Linux 路径 hdfs dfs -get /user/hadoop/test/.bashrc /usr/local/hadoop/ # 验证本地文件存在且可读 ls -lh /usr/local/hadoop/.bashrc4.3 WordCount 实例的全流程验证不只是跑通而是看懂数据流Hadoop 自带的hadoop-mapreduce-examples-3.1.3.jar是检验环境的终极试金石。但很多人只执行hadoop jar ... wordcount ...就结束没看到数据如何流动。以下是带日志追踪的完整验证链# 1. 在 HDFS 创建输入目录并上传测试文件用 echo 生成最小文本 echo hello world hello hadoop /tmp/input.txt hdfs dfs -mkdir -p /user/hadoop/input hdfs dfs -put /tmp/input.txt /user/hadoop/input/ # 2. 执行 WordCount关键添加 -D 参数开启 debug 日志 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar \ wordcount -D mapreduce.job.debugtrue \ /user/hadoop/input /user/hadoop/output # 3. 实时追踪 MapReduce 日志YARN Web UI 端口 8088 yarn logs -applicationId application_1678888888888_0001 | grep -E (MAP|REDUCE|status) # 4. 查看输出结果HDFS 中的 part-r-00000 hdfs dfs -cat /user/hadoop/output/part-r-00000预期输出hadoop 1 hello 2 world 1数据流解读input目录下input.txt被 split 成 1 个 InputSplit小文件Mapper 读取每一行context.write(new Text(word), new IntWritable(1))发出hello,1等键值对Shuffle 阶段按 key 排序分组hello被合并为hello,[1,1]Reducer 计算sum([1,1]) 2写入part-r-00000。若输出为空90% 是output目录已存在Hadoop 不允许覆盖需先hdfs dfs -rm -r /user/hadoop/output。5. 避坑Hadoop 伪分布式启动失败的五大血泪现场与根治方案5.1 现象jps只显示 5 个进程DataNode缺失http://localhost:9870Live Nodes 0原因多次执行hdfs namenode -format导致namenode与datanode的VERSION文件中ClusterID不一致。namenode格式化时生成新ClusterID但datanode的VERSION仍为旧 ID拒绝注册。解决# 1. 停止所有服务 stop-dfs.sh stop-yarn.sh # 2. 删除 datanode 数据目录保留 namenode 目录避免丢失元数据 sudo rm -rf /usr/local/hadoop/data/dfs/data # 3. 重新格式化 namenode此时 datanode 目录为空启动时自动生成匹配 ID hdfs namenode -format # 4. 启动datanode 会重建 VERSION 文件ID 与 namenode 一致 start-dfs.sh验证cat /usr/local/hadoop/data/dfs/name/current/VERSION | grep ClusterID与cat /usr/local/hadoop/data/dfs/data/current/VERSION | grep ClusterID输出必须完全相同。5.2 现象start-dfs.sh后jps显示DataNode但hdfs dfsadmin -report报No live nodes原因core-site.xml中fs.defaultFS值为hdfs://localhost:9000但hosts文件未将localhost解析为127.0.0.1或127.0.0.1被映射到其他 hostname如ubuntu。解决# 检查 hosts 解析 cat /etc/hosts | grep localhost # 正确格式必须有 127.0.0.1 localhost且无其他 localhost 映射 127.0.0.1 localhost # ::1 localhost # IPv6 行可注释掉避免干扰 # 若有错误映射如 127.0.0.1 ubuntu删除该行 sudo nano /etc/hosts原理Hadoop 使用InetAddress.getLocalHost().getHostName()获取本机名若返回ubuntu则datanode会尝试连接hdfs://ubuntu:9000而namenode只监听localhost导致连接超时。5.3 现象hadoop fs -ls /报Connection refused但jps显示NameNode正常原因NameNode进程虽在但未完成初始化如加载 fsimage 时间过长或core-site.xml中fs.defaultFS端口与hdfs-site.xml中dfs.namenode.rpc-address端口不一致。解决# 1. 查看 namenode 日志末尾等待 Startup complete tail -100 $HADOOP_HOME/logs/hadoop-*-namenode-*.log | grep Startup complete # 2. 检查端口一致性默认均为 9000 grep fs.defaultFS $HADOOP_HOME/etc/hadoop/core-site.xml grep dfs.namenode.rpc-address $HADOOP_HOME/etc/hadoop/hdfs-site.xml # 3. 若不一致统一改为 9000并重启注意fs.defaultFS是 client 连接地址dfs.namenode.rpc-address是 namenode 监听地址二者必须端口一致否则 client 连不上。5.4 现象hdfs dfs -put上传文件后hdfs dfs -ls显示文件但hdfs dfs -cat报File does not exist原因hdfs dfs -put命令的源路径是本地文件系统路径若误写为 HDFS 路径如hdfs dfs -put /user/hadoop/input.txt /user/hadoop/input/Hadoop 会尝试在本地查找/user/hadoop/input.txt找不到则静默失败但ls仍显示目录因目录创建成功。解决# 正确源路径必须是本地存在的文件 hdfs dfs -put /tmp/input.txt /user/hadoop/input/ # 错误/user/hadoop/input.txt 是 HDFS 路径本地不存在 # hdfs dfs -put /user/hadoop/input.txt /user/hadoop/input/验证执行hdfs dfs -put后立即hdfs dfs -ls /user/hadoop/input/若文件大小为 0 或显示Found 0 items说明上传失败。5.5 现象WordCount运行时ApplicationMaster失败YARN Web UI 显示Container exited with a non-zero exit code 143原因NodeManager内存不足被 Linux OOM Killer 杀死。Hadoop 3.1.3 默认yarn.nodemanager.resource.memory-mb8192但 VirtualBox 分配内存仅 2GB 时实际可用内存不足。解决# 修改 yarn-site.xml降低内存配额 sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml # 添加或修改 property nameyarn.nodemanager.resource.memory-mb/name value2048/value !-- 降为 2GB -- /property property nameyarn.scheduler.minimum-allocation-mb/name value512/value /property # 重启 YARN stop-yarn.sh start-yarn.sh验证yarn node -list应显示Memory Total: 2048 MB且ApplicationMaster容器不再被 OOM 杀死。6. 进阶技巧用hdfs fsck做 HDFS 健康快照以及我的三次格式化后悔药6.1hdfs fsck比hdfs dfs -ls更深一层的文件系统体检hdfs dfs -ls只告诉你“文件是否存在”而hdfs fsck能穿透到 block 层告诉你“文件是否健康”。在伪分布式环境下这是验证namenode/datanode通信是否真正打通的黄金命令。执行以下命令你会得到一份 HDFS 的实时健康报告# 检查根目录显示所有文件的 block 状态 hdfs fsck / -files -blocks -locations # 检查特定文件如刚上传的 .bashrc确认其 block 是否完整 hdfs fsck /user/hadoop/test/.bashrc -files -blocks -locations # 检查是否有丢失的 block伪分布式不应出现 hdfs fsck / -lostFiles关键输出解读Status: HEALTHY文件所有 block 均被 datanode 正常持有1 files and directories, 1 blocks 0 missing blocks无缺失 blockUnder replicated blocks: 0所有 block 副本数达标伪分布式为 1Live datanodes: 1确认 datanode 已成功注册并上报心跳。若输出中出现MISSING或CORRUPT说明namenode与datanode的 block report 未同步需立即检查datanode日志中的BlockPoolSliceScanner错误。6.2 我的三次namenode -format后悔药用VERSION文件做手术级修复第一次hdfs namenode -format是仪式感第二次是手抖第三次就是灾难。我曾因连续格式化导致namenode的VERSION文件ClusterID变为CID-xxxx1而datanode的VERSION仍是CID-xxxx0start-dfs.sh后jps有DataNode进程但hdfs dfsadmin -report显示0 live nodes。当时没删data/dfs/data而是用手术刀式修复# 1. 备份原 datanode VERSION防翻车 sudo cp /usr/local/hadoop/data/dfs/data/current/VERSION /tmp/VERSION.bak # 2. 提取 namenode 的 ClusterID NAMENODE_CID$(grep ClusterID /usr/local/hadoop/data/dfs/name/current/VERSION | cut -d -f2 | tr -d ) # 3. 强制修改 datanode VERSION 中的 ClusterID注意必须保留原有换行和空格 sudo sed -i s/ClusterID.*/ClusterID$NAMENODE_CID/ /usr/local/hadoop/data/dfs/data/current/VERSION # 4. 验证修改结果 sudo cat /usr/local/hadoop/data/dfs/data/current/VERSION | grep ClusterID为什么这招比删目录更优data/dfs/data目录下除VERSION外还有BP-xxxxBlockPool目录存储实际数据块。删目录会清空所有数据块而VERSION修复只改元数据数据块毫发无损适用于已上传大量测试数据、不想重传的场景风险提示仅在datanode未启动时操作若DataNode进程正在运行VERSION文件被锁sed会失败。6.3 从那以后我每次hdfs namenode -format都强制走一遍hdfs fsck /hdfs dfsadmin -report验证格式化不是终点而是新集群心跳的起点。我现在固定执行三步验证hdfs namenode -format后立刻hdfs fsck /—— 确认 namenode 元数据初始化完成start-dfs.sh本文还有配套的精品资源点击获取

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

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

免费获取报价 →
↑