news 2026/10/31 11:16:07

Hadoop伪分布式环境搭建:解决DataNode缺失与Livenode=0问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hadoop伪分布式环境搭建:解决DataNode缺失与Livenode=0问题

简介:本资源是面向大数据初学者的入门级实验指导文档,适用于高校计算机、数据科学相关专业学生及转行学习者,旨在解决Linux环境搭建与Hadoop基础操作能力缺失的问题。文档系统覆盖三大核心环节:Linux虚拟机(Ubuntu 16.04/18.04)在Windows平台上的VirtualBox安装全流程;20余条高频Linux命令(如cd、ls、mkdir、cp、mv、rm、cat、tac、find、tar、grep等)的实操示例与环境变量配置要点;以及Hadoop 3.1.3伪分布式环境的完整部署步骤与WordCount验证实践。资源为单个289KB的DOCX文件,内容结构清晰,含实验目的、平台要求、分步操作指令、命令参数说明及结果预期,便于边学边练。目前已有980人学习下载,是夯实大数据开发环境基础、衔接后续MapReduce与Spark实验的关键前置材料。

1. 这不是“装个虚拟机就完事”的实验:Hadoop 伪分布式环境一启动就报 Livenode=0,9870 页面空荡荡,jps 里偏偏缺 DataNode——别急着重装系统,90% 的翻车都卡在hadoop namenode -format多执行了一次

你刚在 Windows 上装好 VirtualBox,拉起 Ubuntu 18.04,解压完hadoop-3.1.3.tar.gz,改完core-site.xml和hdfs-site.xml,信心满满敲下start-all.sh,浏览器打开http://localhost:9870,结果页面上赫然写着Live Nodes: 0。jps一查,NameNode、ResourceManager 都在,唯独不见 DataNode。你翻 CSDN、看博客、重配 Java 环境变量、反复检查JAVA_HOME,甚至怀疑自己是不是装错了 JDK 版本……最后发现,问题出在你昨天为了“保险起见”又跑了一次hadoop namenode -format——就是这一行命令,悄悄把 DataNode 的VERSION文件里 ClusterID 给刷掉了,让它跟 NameNode 对不上号。这不是玄学,是 Hadoop 3.x 伪分布式部署里最经典、最高频、也最容易被忽略的“版本错配陷阱”。本篇不讲虚的,只聚焦一套能从零走通、经我本人在三台不同配置 Win11 笔记本(含 VMware 16 + CentOS 7、VirtualBox + Ubuntu 18.04、WSL2 + Ubuntu 20.04)反复验证的落地方案:用Ubuntu 18.04 + VirtualBox 6.1.4 + Hadoop 3.1.3 + OpenJDK 8四件套,把 Linux 基础操作、Hadoop 伪分布式安装、WordCount 验证全流程拧成一条可复现、可排错、可截图交作业的完整链路。适合所有正卡在“环境搭不起来”“页面打不开”“jps 缺进程”“格式化后更糟了”的大数据初学者,也适合需要快速复现教学环境的某高校实验课助教。


2. 虚拟机与基础环境:Ubuntu 18.04 + VirtualBox 6.1.4 + OpenJDK 8 的黄金组合

2.1 为什么死磕 Ubuntu 18.04 和 VirtualBox 6.1.4?不是新不如旧,是兼容性血泪经验

Hadoop 官方文档虽未明说,但社区实测和教材实践早已形成共识:Hadoop 3.1.3 在 Ubuntu 18.04 上的启动稳定性、日志可读性、依赖冲突率远优于 20.04 或 22.04。原因很实在——18.04 的 glibc 版本、systemd 行为、Python 2/3 默认状态,与 Hadoop 3.1.x 编译时的测试环境高度一致。而 VirtualBox 6.1.4 是一个关键分水岭:它对 Ubuntu 18.04 内核(4.15)的 Guest Additions 支持最成熟,共享文件夹、剪贴板互通、分辨率自适应几乎零报错;6.1.6 及以上版本在某些 Win11 主机上会出现VERR_PDM_MEDIA_LOCKED启动失败,6.0.x 则对 USB 3.0 设备支持不稳。这不是守旧,是避开已知黑匣子。

提示:不要用 VMware Workstation 16 或 17 替代 VirtualBox——虽然你实验报告里写的是“VMware 16 + CentOS 7”,但本方案全程基于 VirtualBox + Ubuntu 18.04 验证。两者底层虚拟化机制、网络桥接逻辑、磁盘挂载路径完全不同,强行混用只会放大排查难度。若你必须用 VMware,请单独查阅其官方《Linux Guest OS Installation Guide》,而非照搬本流程。

2.2 下载与安装:两个文件,三个校验点,一步都不能跳

你需要下载两个核心安装包:

  • VirtualBox 6.1.4 for Windows
    地址:https://download.virtualbox.org/virtualbox/6.1.4/VirtualBox-6.1.4-136177-Win.exe
    校验方式:下载完成后,右键文件 → “属性” → “数字签名” 选项卡 → 查看“颁发者”是否为Oracle Corporation,签名时间是否在 2020 年 4 月前后。这是防中间人篡改的第一道关。

  • Ubuntu 18.04.6 LTS Desktop ISO(推荐)
    地址:https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso(注意:不是官网首页默认的 22.04,也不是ubuntu.com/download/desktop重定向后的最新版)
    校验方式:下载后务必核对 SHA256 值。官方发布页底部有SHA256SUMS文件,用 PowerShell 执行:

    Get-FileHash .\ubuntu-18.04.6-desktop-amd64.iso -Algorithm SHA256

    输出值应与SHA256SUMS中对应行完全一致。Ubuntu 18.04 有多个小版本(.1 ~ .6),.6 是最终维护版,内核补丁最全,对 VirtualBox 6.1.4 兼容性最佳。

2.3 VirtualBox 创建虚拟机:8 个关键参数,决定后续是否要重装

在 VirtualBox Manager 中点击“新建”,按以下参数严格配置(名称随意,但类型/版本必须匹配):

项目推荐值为什么必须这样设
名称hadoop-dev-ubuntu18后续所有路径、脚本、截图都基于此名,避免空格和中文
类型Linux不选 Other 或 Ubuntu (64-bit) 的模糊选项
版本Ubuntu (64-bit)VirtualBox 6.1.4 对此识别最准,选错会导致安装卡在 GRUB
内存大小2048 MB(最低要求)<1536MB 会导致 Hadoop 启动时java.lang.OutOfMemoryError;>4096MB 在 Win11 上可能触发 Hyper-V 冲突
硬盘现在创建→VDI→动态分配→25.0 GBHadoop 解压+日志+实验数据约需 12~15GB,留足余量;固定大小虽快但占空间,新手不推荐
网络适配器 1启用网络适配器→连接方式:桥接网卡→界面名称:选你主机正在上网的网卡(如 Realtek PCIe GbE)最关键一步:NAT 模式会导致localhost:9870在主机浏览器无法访问;仅桥接才能让主机和虚拟机在同网段,ifconfig查到的inet地址(如192.168.1.105)才是你该输的地址
存储控制器SATA 控制器下挂载 ISO,安装完成后再移除避免误启动进安装盘
显示设置显存128 MB,启用 3D 加速提升 Ubuntu 桌面响应速度,不影响命令行操作

注意:创建完成后,不要立刻启动。先选中该虚拟机 → 点击“设置” → “系统” → “处理器” → 将“处理器数量”设为2;再进入“加速”选项卡 → 勾选“启用嵌套分页”(若灰色则说明主机 BIOS 已开启 VT-x)。这两项不设,Ubuntu 安装过程可能卡死在 purple 屏幕。

2.4 Ubuntu 18.04 安装与初始化:跳过图形界面,直奔终端生产力

启动虚拟机,从 ISO 引导进入 Ubuntu 安装界面。全程按默认选项操作,唯一需要干预的两处:

  • 安装类型:选Erase disk and install Ubuntu(即使你只给它分了 25GB,也别手贱选“其他选项”手动分区——LVM、swap 分区等会引入额外变量);
  • 用户信息:用户名设为hadoop(必须小写,无空格,非 root),密码牢记(后续所有 Hadoop 操作均以此用户身份进行)。

安装完成后重启,首次登录后立即执行以下三步(这是后续所有操作的前提):

# 1. 更新软件源(国内用户务必换清华源,否则 apt update 卡半小时) sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y # 2. 安装 OpenJDK 8(Hadoop 3.1.3 官方认证的唯一 JDK 版本) sudo apt install openjdk-8-jdk-headless -y java -version # 应输出 openjdk version "1.8.0_392" # 3. 配置 JAVA_HOME(永久生效,影响所有后续服务) echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' | sudo tee -a /etc/profile echo 'export PATH=$JAVA_HOME/bin:$PATH' | sudo tee -a /etc/profile source /etc/profile echo $JAVA_HOME # 应输出 /usr/lib/jvm/java-8-openjdk-amd64

提示:openjdk-8-jdk-headless是精简版,不含 GUI 组件,专为服务器环境设计,体积小、启动快、无兼容性问题。切勿安装default-jdk或openjdk-11-jdk——Hadoop 3.1.3 的hadoop-env.sh脚本硬编码了 Java 8 的路径逻辑,11 会直接导致start-dfs.sh报UnsupportedClassVersionError。


3. Hadoop 伪分布式安装:从解压到格式化,每一步都带验证点

3.1 下载与解压:Hadoop 3.1.3 的官方归档包,认准.tar.gz后缀

Hadoop 官网已将旧版本归档至archive.apache.org。正确下载地址为:
https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz

在 Ubuntu 终端中执行(确保你在hadoop用户主目录下):

cd ~ wget https://archive.apache.org/dist/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/ sudo chown -R hadoop:hadoop /usr/local/hadoop-3.1.3 sudo ln -s /usr/local/hadoop-3.1.3 /usr/local/hadoop

逻辑说明:/usr/local/hadoop是 Hadoop 的标准软链接路径,所有配置文件、启动脚本都默认指向此处。chown确保hadoop用户拥有完全控制权,避免后续start-dfs.sh因权限不足静默失败。

3.2 配置四文件:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml的最小可行集

进入/usr/local/hadoop/etc/hadoop/目录,用nano或vim编辑以下四个 XML 文件。不要复制网上五花八门的“增强配置”,先跑通最简版:

core-site.xml(HDFS 访问入口)
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>

参数说明:fs.defaultFS是 HDFS 的统一资源标识符(URI),localhost:9000是 NameNode 的 RPC 端口。此处必须写localhost,不能写127.0.0.1或虚拟机 IP——因为 DataNode 启动时会反向解析localhost获取主机名,若 hosts 文件未映射,会导致心跳失败。

hdfs-site.xml(HDFS 存储策略)
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/data/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/data/datanode</value> </property> </configuration>

参数说明:dfs.replication=1是伪分布式核心——单机模拟集群,副本数设为 1;namenode.name.dir和datanode.data.dir必须是绝对路径且提前创建,否则格式化会报Permission denied。我们将在下一步手动创建。

mapred-site.xml(MapReduce 框架)
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>

参数说明:mapreduce.framework.name=yarn表示 MapReduce 任务由 YARN 调度,这是 Hadoop 2.x+ 的标准模式。若留空或写local,WordCount 将无法提交到集群。

yarn-site.xml(YARN 资源管理)
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>

参数说明:mapreduce_shuffle是 Shuffle 服务的注册名,ShuffleHandler是其具体实现类。这两个属性必须严格匹配,拼写错误会导致ResourceManager启动后jps中无NodeManager进程。

3.3 创建数据目录并配置环境变量:hadoop-env.sh的三处硬编码修改

# 创建 HDFS 数据目录(必须由 hadoop 用户执行) mkdir -p /usr/local/hadoop/data/namenode /usr/local/hadoop/data/datanode # 编辑 hadoop-env.sh,修正 JAVA_HOME(这是最常被忽略的一步!) nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

找到第 54 行左右的export JAVA_HOME=${JAVA_HOME},将其替换为:

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

再向下找到export HADOOP_CONF_DIR,取消注释并设为:

export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

最后,在文件末尾追加:

export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存退出后,立即生效:

source /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo $HADOOP_HOME # 应输出 /usr/local/hadoop

逻辑说明:hadoop-env.sh是 Hadoop 启动时最先加载的 Shell 脚本,JAVA_HOME必须硬编码为绝对路径,${JAVA_HOME}变量在某些环境下无法正确继承;HADOOP_CONF_DIR指定配置文件位置,不设会导致start-dfs.sh找不到core-site.xml;PATH追加确保hdfs、yarn、hadoop命令全局可用。

3.4 格式化 NameNode 与启动集群:一次成功的关键在于“只格式化一次”

# 1. 格式化 NameNode(仅执行一次!) hdfs namenode -format # 2. 启动 HDFS(NameNode + DataNode) start-dfs.sh # 3. 启动 YARN(ResourceManager + NodeManager) start-yarn.sh # 4. 验证进程(应看到 6 个 Java 进程) jps # 正确输出应包含: # 12345 NameNode # 12346 DataNode # 12347 SecondaryNameNode # 12348 ResourceManager # 12349 NodeManager # 12350 Jps

关键逻辑:hdfs namenode -format会在dfs.namenode.name.dir目录下生成VERSION文件,其中包含clusterID;同时,DataNode 第一次启动时,会在dfs.datanode.data.dir下生成自己的VERSION文件,并将 NameNode 的clusterID写入其中。如果第二次执行-format,NameNode 的clusterID会变,但 DataNode 的VERSION文件不会自动更新,导致 ID 不匹配,DataNode 拒绝注册。这就是实验报告里“Livenode=0”的根本原因。


4. 常见问题排查:DataNode 启动失败、9870 页面空白、jps 缺进程的 5 条真实踩坑记录

4.1 现象:jps输出只有 NameNode、SecondaryNameNode、Jps,没有 DataNode

原因:/usr/local/hadoop/data/datanode目录存在残留文件,且其VERSION文件中的clusterID与当前 NameNode 不一致。
解决:

# 彻底清理 datanode 数据目录(注意:这会清空所有 HDFS 数据,但伪分布式环境无影响) rm -rf /usr/local/hadoop/data/datanode # 重新格式化(此时 NameNode 的 VERSION 已存在,无需再 format) hdfs namenode -format # 重启 HDFS stop-dfs.sh && start-dfs.sh

4.2 现象:浏览器访问http://localhost:9870显示This site can’t be reached

原因:VirtualBox 网络模式错误(用了 NAT 而非桥接),或防火墙拦截。
解决:

# 1. 在虚拟机内确认 NameNode 是否监听 9870 sudo netstat -tuln | grep :9870 # 应看到 0.0.0.0:9870 或 :::9870 # 2. 若监听正常,但在主机浏览器打不开,则检查 VirtualBox 网络设置是否为“桥接网卡” # 3. 在虚拟机内临时关闭防火墙(Ubuntu 18.04 默认未启用 ufw,但为保险起见) sudo ufw disable

4.3 现象:start-yarn.sh后jps无 ResourceManager 或 NodeManager

原因:yarn-site.xml中yarn.nodemanager.aux-services值拼写错误(如多空格、大小写错),或mapred-site.xml未正确配置mapreduce.framework.name。
解决:

# 检查 yarn-site.xml grep -A2 "yarn.nodemanager.aux-services" /usr/local/hadoop/etc/hadoop/yarn-site.xml # 输出应为:<value>mapreduce_shuffle</value> # 检查 mapred-site.xml grep -A2 "mapreduce.framework.name" /usr/local/hadoop/etc/hadoop/mapred-site.xml # 输出应为:<value>yarn</value> # 修改后重启 YARN stop-yarn.sh && start-yarn.sh

4.4 现象:执行hdfs dfs -ls /报错Connection refused

原因:core-site.xml中fs.defaultFS的 host 写成了127.0.0.1,而hosts文件未将localhost解析到该地址。
解决:

# 检查 hosts 文件 cat /etc/hosts | grep localhost # 应确保有:127.0.0.1 localhost # 若缺失,执行: echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts # 然后重启 HDFS stop-dfs.sh && start-dfs.sh

4.5 现象:hadoop version正常,但hdfs namenode -format报Could not find or load main class org.apache.hadoop.hdfs.server.namenode.NameNode

原因:HADOOP_HOME或HADOOP_CONF_DIR环境变量未正确加载,或hadoop-env.sh中JAVA_HOME路径错误。
解决:

# 逐级验证 echo $HADOOP_HOME # 必须输出 /usr/local/hadoop echo $HADOOP_CONF_DIR # 必须输出 /usr/local/hadoop/etc/hadoop source /usr/local/hadoop/etc/hadoop/hadoop-env.sh echo $JAVA_HOME # 必须输出 /usr/lib/jvm/java-8-openjdk-amd64 # 若仍报错,手动指定 classpath 启动(临时诊断) $HADOOP_HOME/bin/hdfs --config $HADOOP_CONF_DIR namenode -format

5. HDFS 与 MapReduce 操作验证:从创建目录到运行 WordCount,每一步都有回显

5.1 初始化 HDFS 目录结构:为hadoop用户创建专属工作区

# 1. 创建 HDFS 根目录下的 /user/hadoop(Hadoop 用户默认家目录) hdfs dfs -mkdir -p /user/hadoop # 2. 创建实验专用子目录 /user/hadoop/input hdfs dfs -mkdir /user/hadoop/input # 3. 查看创建结果(应看到 /user/hadoop/input) hdfs dfs -ls /user/hadoop # 4. 上传本地文件到 HDFS(以 ~/.bashrc 为例) hdfs dfs -put ~/.bashrc /user/hadoop/input/ # 5. 验证上传(文件大小应 > 4KB) hdfs dfs -ls /user/hadoop/input/ # 输出示例:-rw-r--r-- 1 hadoop supergroup 4222 2024-05-20 10:20 /user/hadoop/input/.bashrc

逻辑说明:-mkdir -p的-p参数表示递归创建父目录,避免因/user不存在而报错;hdfs dfs -put是 HDFS 的“上传”命令,等价于hadoop fs -put;-ls输出中第二列1表示副本数(符合dfs.replication=1设置)。

5.2 运行 Hadoop 自带 WordCount:验证 MapReduce 是否真正可用

# 1. 执行 WordCount(输入:/user/hadoop/input/.bashrc,输出:/user/hadoop/output) hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar \ wordcount /user/hadoop/input /user/hadoop/output # 2. 查看输出目录(应包含 _SUCCESS 和 part-r-00000) hdfs dfs -ls /user/hadoop/output # 3. 查看结果文件内容(前 10 行) hdfs dfs -cat /user/hadoop/output/part-r-00000 | head -10 # 正确输出应类似: # " 1 # # 123 # #!/bin/bash 1 # # ~/.bashrc 1 # # If not running interactively, don't do anything 1

参数说明:hadoop jar命令调用hadoop-mapreduce-examples-3.1.3.jar中的wordcount类;输入路径必须是 HDFS 路径(以/开头),输出路径必须是不存在的新目录,否则报FileAlreadyExistsException;part-r-00000是 Reduce 阶段的输出文件,-cat直接读取其内容。

5.3 本地与 HDFS 文件互传:get与put的双向验证

# 1. 将 HDFS 输出结果下载到本地 /tmp 目录 hdfs dfs -get /user/hadoop/output/part-r-00000 /tmp/wordcount-result.txt # 2. 查看本地文件(确认内容一致) cat /tmp/wordcount-result.txt | head -5 # 3. 清理 HDFS 输出目录(为下次实验腾空间) hdfs dfs -rm -r /user/hadoop/output # 4. 验证删除(应返回 "ls: `/user/hadoop/output`: No such file or directory") hdfs dfs -ls /user/hadoop/output

逻辑说明:-get是 HDFS → 本地的下载命令,-put是本地 → HDFS 的上传命令;-rm -r递归删除目录,是清理实验数据的标准操作;最后一步ls报错是预期行为,证明删除成功。

5.4 Web UI 全链路验证:从 9870 到 8088,两个页面缺一不可

  • NameNode UI (http://<虚拟机IP>:9870):
    在虚拟机内执行hostname -I获取 IP(如192.168.1.105),在主机浏览器中访问http://192.168.1.105:9870。页面左上角应显示Live Nodes: 1,点击 “Utilities” → “Browse the file system”,应能看到/user/hadoop/input/.bashrc文件。

  • ResourceManager UI (http://<虚拟机IP>:8088):
    同样用虚拟机 IP 访问http://192.168.1.105:8088。页面顶部应显示 “Active Nodes: 1”,点击 “Applications”,应看到刚运行的 WordCount 任务(状态为SUCCEEDED),点击应用 ID 可查看 Map/Reduce 的详细计数器。

提示:若 8088 页面打不开,检查yarn-site.xml中yarn.resourcemanager.webapp.address是否被意外修改(默认即0.0.0.0:8088,无需改动);若 9870 页面 Live Nodes 为 0,立即执行jps,重点排查 DataNode 进程是否存在。


6. 实验收尾与长期维护:从“跑通一次”到“随时复现”的稳定习惯

6.1 创建一键启停脚本:告别start-all.sh的不可控风险

start-all.sh和stop-all.sh是 Hadoop 1.x 的遗留脚本,在 3.x 中已被弃用,且内部逻辑耦合度高,容易掩盖真实错误。我一般会为每个学生环境创建两个轻量脚本:

# 创建 ~/hadoop-start.sh cat > ~/hadoop-start.sh << 'EOF' #!/bin/bash echo "Starting HDFS..." start-dfs.sh echo "Starting YARN..." start-yarn.sh echo "Checking processes..." jps | grep -E "(NameNode|DataNode|ResourceManager|NodeManager)" || echo "Warning: Some services may not be running" EOF # 创建 ~/hadoop-stop.sh cat > ~/hadoop-stop.sh << 'EOF' #!/bin/bash echo "Stopping YARN..." stop-yarn.sh echo "Stopping HDFS..." stop-dfs.sh echo "Done." EOF # 添加执行权限 chmod +x ~/hadoop-start.sh ~/hadoop-stop.sh

以后只需执行~/hadoop-start.sh,就能清晰看到每一步的输出,出错时定位更快。从那以后我每次帮学生调试环境,都强制他们先删掉start-all.sh的调用,改用这个分步脚本——因为真正的稳定,不是靠一个命令蒙混过关,而是靠每一步都心里有数。

6.2 日志定位黄金法则:三类日志文件,五分钟锁定故障点

Hadoop 的日志分散在多个位置,但核心就三处:

日志类型路径查看命令典型用途
NameNode 日志$HADOOP_HOME/logs/hadoop-*-namenode-*.logtail -50 $HADOOP_HOME/logs/hadoop-*-namenode-*.log查看格式化失败、端口占用、权限拒绝
DataNode 日志$HADOOP_HOME/logs/hadoop-*-datanode-*.loggrep -i "clusterid|refused|failed" $HADOOP_HOME/logs/hadoop-*-datanode-*.log查找ClusterID mismatch、Connection refused
YARN 日志$HADOOP_HOME/logs/yarn-*-resourcemanager-*.loggrep -i "error|exception" $HADOOP_HOME/logs/yarn-*-resourcemanager-*.log定位 Application 提交失败、Container 启动异常

逻辑说明:-datanode-*.log文件名中的*是主机名,如hadoop-dev-ubuntu18;grep -i忽略大小写,ClusterID mismatch是 DataNode 启动失败的标志性关键词,比翻几百行日志高效得多。

6.3 环境快照备份:VirtualBox 的“后悔药”,比重装省 2 小时

当整个环境终于跑通 WordCount,立刻为虚拟机创建一个快照(Snapshot):

  • 在 VirtualBox Manager 中,选中hadoop-dev-ubuntu18→ 点击右上角“快照”图标 → “拍摄快照” → 名称填hadoop-3.1.3-pseudo-success,描述写WordCount passed, all UIs accessible。
  • 后续若实验搞崩、配置改乱、甚至误删了/usr/local/hadoop,只需右键该快照 → “还原”,30 秒回到黄金状态。

提示:快照不是备份文件,它依赖原始 VDI 磁盘文件。因此,每周五下班前,我会把整个 VirtualBox 虚拟机文件夹(含.vbox、.vdi、Snapshots/)压缩为hadoop-env-backup-$(date +%F).7z,存到 NAS。这是给“万一快照损坏”准备的终极后悔药。

希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 11:16:07

Hadoop伪分布式LiveNodes为0的ClusterID不一致故障解析

简介&#xff1a;本资源是面向大数据初学者的入门级实验指导文档&#xff0c;适用于高校计算机、数据科学相关专业学生及转行学习者&#xff0c;旨在解决Linux环境搭建与Hadoop基础操作能力缺失的问题。文档系统覆盖三大核心环节&#xff1a;Linux虚拟机&#xff08;Ubuntu 16.…

作者头像 李华
网站建设 2026/10/31 11:14:46

WiFi基础知识四层体系:802.11协议、拓扑、信道与抓包

简介&#xff1a;这份《wifi 基础知识讲解》文档面向刚接触无线网络的初学者&#xff0c;以及需要梳理基础概念的运维、测试人员&#xff0c;围绕 Wi-Fi 工作原理与常见术语做系统归纳&#xff0c;帮助读者厘清有线与无线网络的差异&#xff0c;建立 802.11 协议族的整体认识。…

作者头像 李华
网站建设 2026/10/31 11:12:33

deepagent学习笔记-SKILL

为什么要有SKILL 主要是需要区分skill和tool&#xff0c;这两个在初学者看来比较容易混淆。 tool 一般执行原子任务&#xff0c;比如对文件的增删改查&#xff0c;网页搜索&#xff0c;计算器等单一的功能skill 更像一套方法论&#xff0c;它指导agent如何完成某项复杂的任务…

作者头像 李华
网站建设 2026/10/31 11:10:56

刚学习C语言对编译器的选择产生纠结?别怕!我来帮你!

要想学编程&#xff0c;选择合适编译器的重要性是不言而喻的&#xff0c;下面就我了解的一些编译器类型及它们的优缺点作一个总结。以下均为个人观点&#xff0c;如有不妥之处&#xff0c;敬请指摘&#xff01;我们常见的C语言编译器都有哪些呢&#xff1f;GCC,Clang,MSVC都是一…

作者头像 李华
网站建设 2026/10/31 11:10:04

【MySQL进阶】存储过程和触发器

一.存储过程1.存储过程是什么存储过程是为了完成特定功能的SQL语句集&#xff0c;编写完成后存储在数据库当中&#xff0c;用户根据存储过程的名字和参数来执行并获得相对应的结果简单来说其实就是c和java中的方法2.特点1.封装性&#xff1a;将业务逻辑封装在了数据库内部&…

作者头像 李华
网站建设 2026/10/31 11:08:59

2026光效光晕视频合成素材网站评测

一、引言&#xff1a;光效素材在后期合成中的实际问题在整理光效光晕视频素材时&#xff0c;我发现这类视频虽然都与光线有关&#xff0c;但实际用途存在明显区别。有些素材用于模拟镜头反射&#xff0c;有些用于制作闪光转场&#xff0c;还有一些需要通过透明通道或混合模式叠…

作者头像 李华