恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Hadoop 3.3.6 伪分布式安装实战:从 tar.gz 到 HDFS+YARN 可用

  • 首页
  • 资讯中心
  • /
  • Hadoop 3.3.6 伪分布式安装实战:从 tar.gz 到 HDFS+YARN 可用

相关资讯

VSCode 基础配置全攻略:从安装汉化到C/C++与Python环境搭建 2026/10/6 13:38:01
OpenShell配置指南:让Windows开始菜单回归经典高效 2026/10/6 13:38:01
VSCode基础教程:从安装到配置Python与C++开发环境全攻略 2026/10/6 13:38:01

最新资讯

容量测试与容量规划实战:从JMeter摸底到扩容决策全链路解析
Vue 3 属性透传与自定义指令:原理、实战与避坑指南
基于LangGraph的增强版RAG知识库:语义分块与混合检索实战
基于SpringBoot+Vue的学生宿舍管理系统设计与实现
仿小米官网模板实战:结构、交互与前端性能优化全解析
音视频扩散模型的自适应奖励路由技术解析

今日推荐

2026 AI 开发全家桶落地指南:TaoToken 统一 Key 打通 IDE 插件、Agent 与自动化代码审查全链路配置实测
MR25H40CDF+STM32F031C6工业级高可靠数据存储方案
MRAM+STM32工业断电数据保全实战指南

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Hadoop 3.3.6 伪分布式安装实战:从 tar.gz 到 HDFS+YARN 可用

发布时间:2026/10/6 13:38:01
Hadoop 3.3.6 伪分布式安装实战:从 tar.gz 到 HDFS+YARN 可用 简介本资源为 Apache Hadoop 3.3.6 官方二进制发行版安装包hadoop-3.3.6.tar.gz面向大数据初学者、运维工程师及分布式系统实践者用于快速搭建本地或集群环境支撑HDFS存储、YARN资源调度与MapReduce计算等核心功能的学习与开发。压缩包解压即用无需编译配套包含大量Web UI静态资源如yarn-ui.css、bootstrap系列CSS/JS、可执行脚本sh/cmd、配置模板xml/properties/conf、核心JAR库及文档文件html/license/notice覆盖部署、监控、调试全流程所需资产。资源共2000个文件总大小696.28MB其中HTML文档超1.6万页提供完整API参考与用户指南JAR包504个支撑各类服务模块Shell脚本74个便于环境初始化与服务启停。目前已有1362人下载学习适合需要开箱即用、深入理解Hadoop目录结构与组件依赖关系的实践者。1. Hadoop 3.3.6 安装包不是“解压即用”而是伪分布式环境的起点你下载了hadoop-3.3.6.tar.gz双击解压后看到bin/etc/share/一堆目录心里一松“Hadoop装好了”——错。这只是一个未经配置、未初始化、未验证的二进制骨架。它不连本地文件系统不启 NameNode不跑 MapReduce甚至hadoop version都会报JAVA_HOME not set。真正卡住新手的从来不是“怎么下”而是“解压之后哪一步先动、改哪三行配置、为什么start-dfs.sh一执行就卡在localhost: ssh: connect to host localhost port 22: Connection refused”。本篇不讲 Hadoop 架构图或 RDD 概念只聚焦一个动作用hadoop-3.3.6.tar.gz在单机上跑通伪分布式模式Pseudo-Distributed Mode让hdfs dfs -ls /返回真实目录让yarn node -list显示 RUNNING 状态。适合正在头歌平台做实验、准备大数据课程设计、或需快速验证 Hive/Spark 底层依赖的同学——你不需要集群但必须让 Hadoop 的核心进程NameNode/DataNode/ResourceManager/NodeManager在本机独立进程里真正活起来。所有操作基于 Ubuntu 22.04 OpenJDK 17JDK 17 是 Hadoop 3.3.6 的硬性要求JDK 8 已彻底不兼容命令可逐行复制配置项带明确取值依据失败时看哪几行日志——这才是安装包该有的打开方式。2. 从 tar.gz 到可启动服务四步不可跳过的初始化流程Hadoop 3.3.6 的安装包本质是预编译二进制分发版它不包含 JDK、不生成 SSH 密钥、不创建 HDFS 数据目录、也不校验 XML 配置语法。所谓“安装”实为环境适配 → 目录初始化 → 配置注入 → 进程启动四步闭环。跳过任意一步后续start-dfs.sh要么静默退出要么日志里堆满java.lang.NoClassDefFoundError或Connection refused。下面每一步都对应一个具体动作、一个必须检查的输出、一个可复现的验证点。2.1 解压与环境变量固化为什么export HADOOP_HOME必须写进~/.bashrc而非临时生效# 1. 创建统一安装目录避免权限混乱 sudo mkdir -p /opt/hadoop sudo chown $USER:$USER /opt/hadoop # 2. 解压到目标路径注意不要解到 ~/Downloads 下 tar -zxvf hadoop-3.3.6.tar.gz -C /opt/hadoop/ # 解压后得到 /opt/hadoop/hadoop-3.3.6/ # 3. 设置环境变量关键必须 source 到当前 shell 且永久化 echo export HADOOP_HOME/opt/hadoop/hadoop-3.3.6 ~/.bashrc echo export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ~/.bashrc echo export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop ~/.bashrc source ~/.bashrc # 4. 验证基础命令可用不是看版本号而是看是否识别 HADOOP_HOME hadoop version 2/dev/null | head -n1 # 正确输出应为Hadoop 3.3.6逻辑说明HADOOP_HOME不仅用于定位bin/下的脚本更是etc/hadoop/配置文件的默认搜索根路径。若只在当前终端exportstart-dfs.sh内部调用的子脚本如hdfs --daemon start namenode会丢失该变量导致配置加载失败。HADOOP_CONF_DIR显式指定配置目录避免 Hadoop 去$HADOOP_HOME/etc/hadoop外的路径如/etc/hadoop找文件这是生产环境和伪分布式必须隔离的关键。2.2 JDK 17 强制绑定Hadoop 3.3.6 的 class 版本陷阱Hadoop 3.3.6 编译目标为 Java 11但官方文档明确要求JDK 17LTS。使用 JDK 17 以下版本如 JDK 11会导致org.apache.hadoop.util.VersionInfo类加载失败使用 JDK 21 则因--illegal-accesspermit参数被移除而启动报错。验证方式不是java -version而是检查 Hadoop 启动时实际加载的 JVM# 先确认已安装 JDK 17Ubuntu 下推荐 openjdk-17-jdk sudo apt update sudo apt install -y openjdk-17-jdk # 设置 JAVA_HOME必须指向 jdk-17 的 home而非 jre export JAVA_HOME$(readlink -f /usr/bin/java | sed s:/jre/bin/java::) echo $JAVA_HOME # 应输出 /usr/lib/jvm/java-17-openjdk-amd64 # 将 JAVA_HOME 写入 ~/.bashrc同 HADOOP_HOME 逻辑 echo export JAVA_HOME$JAVA_HOME ~/.bashrc source ~/.bashrc # 关键验证检查 Hadoop 启动脚本是否读取到正确 JDK $HADOOP_HOME/bin/hadoop classpath | grep java-17 # 若无输出说明 HADOOP_HOME 或 JAVA_HOME 未生效参数说明hadoop classpath输出的是 Hadoop 运行时实际加载的 JAR 包路径。其中java-17字符串必须出现证明 JVM 加载的是 JDK 17 的 rt.jar 和 tools.jar。若看到java-11或java-8说明JAVA_HOME指向错误或系统存在多版本 JDK 且update-alternatives未切换。2.3 SSH 免密登录伪分布式模式的底层通信基石Hadoop 伪分布式虽运行在单机但其进程间通信如 NameNode 启动 DataNode仍通过 SSH 执行远程命令ssh localhost。若未配置免密start-dfs.sh会卡在starting namenodes on [localhost]并无限等待密码输入。# 1. 安装并启动 SSH 服务Ubuntu 默认可能未启用 sudo apt install -y openssh-server sudo systemctl enable ssh sudo systemctl start ssh # 2. 生成 RSA 密钥对不设密码-N 是关键 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa # 3. 将公钥追加到 authorized_keys注意是追加不是覆盖 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 4. 测试免密登录必须返回 success且无密码提示 ssh -o StrictHostKeyCheckingno localhost echo success 2/dev/null # 正确输出success逻辑说明StrictHostKeyCheckingno参数绕过首次连接的 host key 确认避免脚本卡住。-o选项必须显式写出因为start-dfs.sh内部调用ssh时未传此参数。若测试失败90% 原因是~/.ssh/authorized_keys权限不对必须 600、sshd_config中PubkeyAuthentication yes未开启或~/.ssh目录权限过大不能是 777。2.4 HDFS 数据目录初始化格式化前必须手动创建的三个路径Hadoop 不会自动创建dfs.namenode.name.dir和dfs.datanode.data.dir对应的物理目录。若直接运行hdfs namenode -format它会在空目录下生成元数据但 DataNode 启动时因data目录不存在而拒绝注册导致jps看不到 DataNode 进程。# 1. 创建 HDFS 核心目录路径必须与后续 core-site.xml 中配置一致 mkdir -p $HADOOP_HOME/data/namenode mkdir -p $HADOOP_HOME/data/datanode mkdir -p $HADOOP_HOME/logs # 2. 设置目录权限Hadoop 进程需写入权限 chmod 755 $HADOOP_HOME/data chmod 755 $HADOOP_HOME/logs # 3. 格式化 NameNode仅首次执行重复执行会清空元数据 hdfs namenode -format -force # 4. 验证格式化结果检查 VERSION 文件是否存在 ls -l $HADOOP_HOME/data/namenode/current/VERSION # 正确输出-rw-r--r-- 1 user user 123 date VERSION参数说明-force参数强制覆盖已有格式化信息避免Directory is not empty错误。VERSION文件是 NameNode 初始化成功的标志其内容包含namespaceID和clusterID这两个 ID 必须与后续 DataNode 的VERSION文件一致否则 DataNode 拒绝加入集群。这也是为什么data目录必须手动创建——Hadoop 只在namenode目录下生成current/子目录但datanode目录下什么也不建。3. 四个核心配置文件每一行修改都有明确作用域与取值依据Hadoop 3.3.6 的伪分布式模式依赖core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml四个文件。网上教程常把配置项堆在一起却不说明为什么改这一行、不改那一行、改错会触发什么异常。这里按启动顺序拆解每项配置标注其影响范围NameNode / DataNode / ResourceManager / Client和典型错误现象。3.1core-site.xml定义 HDFS 访问入口与本地文件系统挂载点?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- HDFS 默认文件系统 URI客户端访问 HDFS 的根地址 -- property namefs.defaultFS/name valuehdfs://localhost:9000/value descriptionHDFS URI for client access/description /property !-- 本地文件系统缓存目录MapReduce 临时文件存放位置 -- property namehadoop.tmp.dir/name value/opt/hadoop/hadoop-3.3.6/data/tmp/value descriptionLocal temp dir for MapReduce staging/description /property /configuration逻辑说明fs.defaultFS是客户端如hdfs dfs -ls /连接 HDFS 的唯一入口。若写成hdfs://127.0.0.1:9000部分网络库会解析失败若端口不是9000NameNode 日志会报BindException: Address already in use。hadoop.tmp.dir必须是绝对路径且有写权限否则yarn启动时报Cannot create directory。该配置影响所有组件是整个 Hadoop 生态的“根域名”。3.2hdfs-site.xml控制 NameNode 与 DataNode 的存储行为?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- NameNode 元数据存储路径 -- property namedfs.namenode.name.dir/name valuefile:///opt/hadoop/hadoop-3.3.6/data/namenode/value descriptionPath on local filesystem where NameNode stores metadata/description /property !-- DataNode 数据块存储路径 -- property namedfs.datanode.data.dir/name valuefile:///opt/hadoop/hadoop-3.3.6/data/datanode/value descriptionPath on local filesystem where DataNode stores blocks/description /property !-- 块副本数伪分布式设为 1避免因单节点无法满足副本要求而拒绝写入 -- property namedfs.replication/name value1/value descriptionDefault block replication factor/description /property /configuration参数说明dfs.namenode.name.dir和dfs.datanode.data.dir必须是file://协议的绝对路径且与 2.4 节创建的目录完全一致。若漏掉file://前缀Hadoop 会尝试走 HDFS 协议导致NameNode启动失败。dfs.replication1是伪分布式模式的强制设置——HDFS 默认要求副本数 ≥3单节点无法满足设为 1 后hdfs dfs -put才能成功写入。3.3mapred-site.xml激活 MapReduce 框架并绑定 YARN 资源管理?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- MapReduce 运行框架必须设为 yarn否则作业提交到本地 JVM 而非 YARN -- property namemapreduce.framework.name/name valueyarn/value descriptionExecution framework for MapReduce jobs/description /property !-- MapReduce 历史服务器地址用于查看已完成作业 -- property namemapreduce.jobhistory.address/name valuelocalhost:10020/value descriptionJobHistory Server host:port/description /property /configuration逻辑说明mapreduce.framework.nameyarn是伪分布式与完全分布式的关键分水岭。若设为localMapReduce 作业在本地线程运行yarn进程不会参与调度yarn application -list永远为空。mapreduce.jobhistory.address启动历史服务器后可通过http://localhost:19888查看作业详情这是调试 MapReduce 的必备入口。3.4yarn-site.xml定义 ResourceManager 与 NodeManager 的通信契约?xml version1.0 encodingUTF-8? ?xml-stylesheet typetext/xsl hrefconfiguration.xsl? configuration !-- ResourceManager 主机名必须与 fs.defaultFS 中的主机名一致 -- property nameyarn.resourcemanager.hostname/name valuelocalhost/value descriptionHostname of ResourceManager/description /property !-- NodeManager 使用的本地资源目录类似 HDFS 的 data.dir -- property nameyarn.nodemanager.local-dirs/name value/opt/hadoop/hadoop-3.3.6/data/yarn/local/value descriptionLocal directories for NodeManager to store intermediate data/description /property !-- NodeManager 使用的日志聚合目录YARN 日志集中存储位置 -- property nameyarn.nodemanager.log-dirs/name value/opt/hadoop/hadoop-3.3.6/logs/yarn/value descriptionDirectories for NodeManager to store container logs/description /property /configuration参数说明yarn.resourcemanager.hostname必须与core-site.xml中fs.defaultFS的主机名localhost严格一致否则 NodeManager 注册失败jps看不到NodeManager。yarn.nodemanager.local-dirs和log-dirs必须是真实存在的可写目录否则start-yarn.sh启动后yarn node -list显示0 active nodes。4. 启动、验证与排错三类高频失败场景的精准定位法即使配置全部正确start-dfs.sh和start-yarn.sh仍可能静默失败或进程闪退。此时不能靠jps看进程名而要按日志层级逐级排查先看logs/下的hadoop-*-namenode-*.log再查yarn-*-resourcemanager-*.log最后盯stdout和stderr。以下是三个最常踩的坑每条都给出现象、根因、解决动作。4.1 现象start-dfs.sh执行后jps只显示Jps无NameNode/DataNode原因hadoop-3.3.6/etc/hadoop/下缺少workers文件或其内容为空。Hadoop 3.3.6 默认读取workers文件获取 DataNode 列表若文件不存在或为空start-dfs.sh不启动任何 DataNodeNameNode 因无 DataNode 注册而主动退出。解决echo localhost $HADOOP_HOME/etc/hadoop/workers # 注意文件名是 workersHadoop 3.0 替代 slaves内容只能是 hostname不能带端口或协议4.2 现象hdfs dfs -ls /报错Call From localhost to localhost:9000 failed on connection exception原因core-site.xml中fs.defaultFS的端口9000被其他进程占用如 Docker、PostgreSQL或hdfs-site.xml中dfs.namenode.name.dir路径权限不足NameNode 启动时因无法写入VERSION文件而崩溃。解决# 检查 9000 端口占用 ss -tuln | grep :9000 # 若被占用修改 core-site.xml 的端口为 9001并同步改 hdfs-site.xml 的 dfs.namenode.http-address见 4.3 # 检查 namenode 目录权限 ls -ld $HADOOP_HOME/data/namenode # 必须输出 drwxr-xr-x若为 drw-------执行 chmod 7554.3 现象yarn node -list返回0 active nodes但jps显示ResourceManager和NodeManager原因yarn-site.xml中yarn.resourcemanager.hostname与core-site.xml中fs.defaultFS的主机名不一致如一个是localhost另一个是127.0.0.1导致 NodeManager 注册时 DNS 解析失败ResourceManager 日志中出现Registration request from node localhost:45228 rejected。解决# 统一所有配置中的主机名为 localhost不要用 127.0.0.1 # 并确保 /etc/hosts 中有 echo 127.0.0.1 localhost | sudo tee -a /etc/hosts # 修改 yarn-site.xml 的 yarn.resourcemanager.hostname 为 localhost # 修改 core-site.xml 的 fs.defaultFS 为 hdfs://localhost:9000避坑总结所有配置修改后必须执行stop-dfs.sh stop-yarn.sh彻底关闭旧进程再start-dfs.sh start-yarn.sh。不要试图kill -9进程Hadoop 会残留锁文件如hadoop-3.3.6/data/namenode/in_use.lock导致下次启动报Another namenode is running。5. 验证服务健康度五个命令确认伪分布式真正跑通配置和启动只是第一步真正的“跑通”意味着 HDFS 可读写、YARN 可调度、MapReduce 可执行、日志可追溯、Web UI 可访问。以下五个命令覆盖全链路每个都带预期输出和失败时的速查点。5.1 HDFS 基础读写hdfs dfs -mkdirhdfs dfs -puthdfs dfs -ls# 1. 创建根目录下的 test 目录 hdfs dfs -mkdir /test # 2. 上传本地文件用 echo 生成测试文件避免依赖外部文件 echo hello hadoop 3.3.6 /tmp/test.txt hdfs dfs -put /tmp/test.txt /test/ # 3. 列出目录内容关键看文件大小是否 0 hdfs dfs -ls /test/ # 正确输出示例 # -rw-r--r-- 1 user supergroup 19 2024-06-15 10:00 /test/test.txt验证逻辑-ls输出中文件大小19证明数据块已成功写入 DataNode。若大小为0说明 DataNode 未注册成功若报No such file or directory说明 NameNode 未运行或fs.defaultFS配置错误。5.2 YARN 节点状态yarn node -list必须显示RUNNINGyarn node -list -all # 正确输出应包含 # Total Nodes:1 # Node-Id Node-State Node-Http-Address Number-of-Running-Containers # localhost:45228 RUNNING localhost:8042 0验证逻辑Node-State必须为RUNNINGNode-Http-Address必须可访问浏览器打开http://localhost:8042应显示 NodeManager Web UI。若状态为UNHEALTHY检查yarn.nodemanager.local-dirs目录磁盘空间是否充足。5.3 MapReduce 作业提交hadoop jar运行官方 WordCount 示例# 1. 准备输入文件两行文本 echo hello world /tmp/input.txt echo hello hadoop /tmp/input.txt hdfs dfs -mkdir /wordcount/input hdfs dfs -put /tmp/input.txt /wordcount/input/ # 2. 提交 MapReduce 作业使用 Hadoop 自带的 example jar hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \ wordcount /wordcount/input /wordcount/output # 3. 检查输出作业成功后/wordcount/output/part-r-00000 应存在 hdfs dfs -cat /wordcount/output/part-r-00000 # 正确输出 # hadoop 1 # hello 2 # world 1验证逻辑part-r-00000是 Reduce 阶段的最终输出文件。若该文件不存在说明 MapReduce 作业未完成若内容为空检查mapred-site.xml中mapreduce.framework.name是否为yarn。5.4 Web UI 可访问性四个端口必须全部响应 HTTP 200端口URL用途验证命令9870http://localhost:9870NameNode Web UIcurl -sI http://localhost:9870 | head -n1→HTTP/1.1 200 OK8088http://localhost:8088ResourceManager Web UIcurl -sI http://localhost:8088 | head -n18042http://localhost:8042NodeManager Web UIcurl -sI http://localhost:8042 | head -n119888http://localhost:19888JobHistory Servercurl -sI http://localhost:19888 | head -n1验证逻辑curl -sI只获取 HTTP 头不下载页面速度快。若任一端口返回HTTP/1.1 503 Service Unavailable说明对应服务未启动或配置端口冲突。5.5 日志溯源从logs/目录定位任意失败的根源Hadoop 所有组件日志默认输出到$HADOOP_HOME/logs/命名规则为component-user-hostname.log。例如NameNode 日志hadoop-user-namenode-localhost.localdomain.logDataNode 日志hadoop-user-datanode-localhost.localdomain.logResourceManager 日志yarn-user-resourcemanager-localhost.localdomain.log# 实时跟踪 NameNode 启动日志启动时最关键的 20 行 tail -n20 $HADOOP_HOME/logs/hadoop-*-namenode-*.log # 搜索 DataNode 注册失败关键词 grep -i registration.*failed\|refused $HADOOP_HOME/logs/hadoop-*-datanode-*.log # 查看最近 5 分钟 ResourceManager 的 ERROR 级别日志 grep -i error\|exception $HADOOP_HOME/logs/yarn-*-resourcemanager-*.log | \ awk -F {if($2$(date -d 5 minutes ago %H:%M)) print}技巧说明tail -n20比cat更高效因为 NameNode 启动成功日志总在末尾。grep -i忽略大小写registration.*failed正则匹配注册失败的各种变体如registration failed、registration refused。时间过滤用awk比sed更精准避免误删日志头。6. 进阶技巧让hadoop-3.3.6.tar.gz成为可复用的部署模板做到上一章的五个验证说明伪分布式已跑通。但真实项目中你不会每次重装都手敲配置、改workers、调端口。我习惯把hadoop-3.3.6.tar.gz解压后的目录做成可参数化的部署模板用 Bash 脚本一键生成适配不同环境的配置。这不是为了炫技而是解决三个现实问题① 多台机器部署时配置一致性② 头歌平台实验需频繁重置环境③ 面试官让你现场搭集群时节省 80% 时间。6.1 用sed批量替换配置把localhost替换为任意主机名假设你要在server01上部署只需运行# 定义目标主机名 TARGET_HOSTserver01 # 批量替换所有配置文件中的 localhost sed -i s/localhost/$TARGET_HOST/g $HADOOP_HOME/etc/hadoop/core-site.xml sed -i s/localhost/$TARGET_HOST/g $HADOOP_HOME/etc/hadoop/hdfs-site.xml sed -i s/localhost/$TARGET_HOST/g $HADOOP_HOME/etc/hadoop/yarn-site.xml sed -i s/localhost/$TARGET_HOST/g $HADOOP_HOME/etc/hadoop/workers # 同时更新 NameNode HTTP 地址9870 端口 sed -i s/9870/9870/g $HADOOP_HOME/etc/hadoop/hdfs-site.xml # 注意此处保留 9870仅替换主机名参数说明sed -i直接修改原文件s/localhost/server01/g中的g表示全局替换一行内多个localhost全部替换。hdfs-site.xml中dfs.namenode.http-address默认是localhost:9870替换后变为server01:9870Web UI 即可通过http://server01:9870访问。6.2 用cpmkdir构建标准化目录结构避免手建目录权限错误我写了一个init-hadoop-env.sh脚本放在$HADOOP_HOME/下#!/bin/bash # init-hadoop-env.sh一键初始化 Hadoop 运行目录 HADOOP_HOME${HADOOP_HOME:-/opt/hadoop/hadoop-3.3.6} # 创建标准目录树 mkdir -p $HADOOP_HOME/{data/{namenode,datanode,yarn/local},logs/{yarn,hdfs,mapred},tmp} # 设置统一权限755 对目录644 对文件 find $HADOOP_HOME/data -type d -exec chmod 755 {} \; find $HADOOP_HOME/logs -type d -exec chmod 755 {} \; chmod 644 $HADOOP_HOME/etc/hadoop/*.xml # 生成 workers 文件 echo localhost $HADOOP_HOME/etc/hadoop/workers执行方式chmod x init-hadoop-env.sh ./init-hadoop-env.sh。它比手动mkdir更可靠因为find ... -exec chmod确保所有子目录权限一致避免data/datanode权限正确但data/datanode/current权限错误导致 DataNode 启动失败。6.3 用jpsnetstat编写健康检查脚本把验证逻辑固化为check-hadoop.sh#!/bin/bash # check-hadoop.sh五维健康检查 echo HDFS Status hdfs dfs -ls / /dev/null 21 echo ✅ HDFS accessible || echo ❌ HDFS down echo YARN Nodes yarn node -list 2/dev/null | grep RUNNING /dev/null echo ✅ YARN nodes running || echo ❌ YARN nodes down echo Web UI Ports for port in 9870 8088 8042; do if nc -z localhost $port; then echo ✅ Port $port open else echo ❌ Port $port closed fi done echo Log Errors if grep -q ERROR\|Exception $HADOOP_HOME/logs/*.log; then echo ⚠️ Errors found in logs (check $HADOOP_HOME/logs/) else echo ✅ No errors in logs fi使用场景每次start-dfs.sh start-yarn.sh后直接运行./check-hadoop.sh5 秒内获知全链路状态。它比人工jpscurlgrep快 10 倍且结果可读性强。我坚持把hadoop-3.3.6.tar.gz当作一个需要“驯化”的工具而不是解压即用的黑匣子。每一次start-dfs.sh失败我都先看logs/hadoop-*-namenode-*.log的最后一行而不是百度错误码每一次配置修改我都用sed批量替换而不是 Vim 逐个文件打开。这些习惯省下的时间足够我把 Hadoop 搭建流程教给三个新人。希望帮到你。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号