资讯详情

资讯详情

CentOS 7.9上Hadoop 3.3.6伪分布式部署实战

1. 为什么在CentOS上装Hadoop还得配图——这不是装软件是搭数据地基“CentOS中Hadoop安装详细过程含图文”这个标题看着平平无奇但背后藏着一个非常现实的痛点绝大多数人卡在第一步不是因为不会敲命令而是根本不知道每一步在系统里到底动了什么、改了什么、依赖谁、又影响谁。我带过不少刚接触大数据的开发者和运维同学他们手握《Hadoop权威指南》PDF对着官网文档复制粘贴结果跑完start-dfs.sh发现NameNode没起来jps一看连进程都没有日志里全是JAVA_HOME not set、Permission denied (publickey)、Unable to load native-hadoop library这类报错——问题不在Hadoop本身而在整个Linux环境与分布式框架之间的“握手协议”没对齐。CentOS作为长期稳定版企业级Linux发行版它的默认配置比如SELinux启用、firewalld默认拦截、OpenJDK版本偏旧、用户权限隔离严格和Hadoop对运行环境的隐性要求JDK 8u202、SSH免密闭环、统一时区、关闭swap、合理ulimit之间存在天然张力。你装的不是单个Java程序而是一套需要多节点协同、跨进程通信、本地文件系统与分布式存储双轨并行的基础设施。所谓“图文”图不是为了凑数而是为了定位比如/etc/hosts里一行错误的IP映射会导致hdfs namenode -format时反复报Connection refused比如core-site.xml里fs.defaultFS少写了个斜杠hadoop fs -ls /就直接返回空再比如hdfs-site.xml中dfs.namenode.name.dir路径权限没设成755且属主不是hadoop用户格式化后目录里压根不生成current/VERSION文件——这些细节光看文字描述极易忽略但截图一眼就能揪出问题。所以这篇内容面向三类人一是正在备考CDH或Cloudera认证的学员需要可复现、可验证的最小可行环境二是某高校课程设计要求本地部署Hadoop伪分布式集群的学生得在单台CentOS虚拟机里跑通WordCount全流程三是中小公司运维人员被临时安排快速搭个测试平台做ETL预研没时间啃源码只想要“抄作业能跑通”的确定性方案。它不讲MapReduce原理不展开YARN调度策略也不对比HDFS与Ceph优劣——就聚焦一件事在CentOS 7.9x86_64上用Apache Hadoop 3.3.6源生包零修改配置从零开始完成伪分布式Pseudo-Distributed模式部署并通过hadoop fs命令和Web UI双重验证。所有操作均基于真实终端录屏回溯截图标注关键路径、命令回显、文件内容及浏览器地址栏确保你照着做每一步都有迹可循、有图可证、有错可查。2. 整体设计思路为什么选伪分布式而非完全分布式为什么坚持手动部署2.1 伪分布式是唯一兼顾学习深度与实操效率的起点很多人一上来就想搞三节点集群一台NameNode两台DataNode。这看似“专业”实则埋雷无数。我试过给某实验室搭建教学集群学生在VMware里开三台CentOS虚拟机结果光是配置SSH免密登录就卡住两小时——A能免密登BB登不了AA登C成功C却连不上A更别说/etc/hosts同步、时间同步、防火墙规则批量下发这些琐碎环节。最后大家把时间耗在环境联调上真正学HDFS读写流程的时间不到30分钟。伪分布式Pseudo-Distributed Mode本质是用单机模拟分布式逻辑NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager全部跑在同一台机器的不同JVM进程中但彼此通过localhost:9870、localhost:9864等独立端口通信配置文件里也明确区分fs.defaultFS指向hdfs://localhost:9000yarn.resourcemanager.hostname设为localhost。这种模式下网络依赖极简无需多网卡、无需内网DNS、无需处理跨主机防火墙调试成本最低所有日志集中在$HADOOP_HOME/logs/下jps命令能清晰看到5个核心进程netstat -tuln | grep :9可验证端口占用概念映射最直白hdfs dfs -put上传文件时你能立刻在/usr/local/hadoop/data/hdfs/namenode/current/看到FSImage快照在/usr/local/hadoop/data/hdfs/datanode/current/看到Block数据块文件这种“所见即所得”对理解HDFS底层存储机制至关重要。提示伪分布式不是“阉割版”它完整实现了Hadoop 3.x的HA元数据管理、纠删码Erasure Coding、RBFRouter-based Federation等高级特性所需的协议栈只是物理节点数为1。后续扩展为完全分布式只需将workers文件里的localhost替换成其他节点IP并同步分发配置即可架构平滑演进。2.2 手动部署比一键脚本更能建立系统级认知现在网上充斥着各种“Hadoop一键安装脚本”甚至有Docker Compose YAML文件3分钟拉起集群。但这类方案对初学者是毒药——你根本不知道脚本里sed -i s/xxx/yyy/g改了哪行配置chown -R hadoop:hadoop /data究竟授权给了哪些目录systemctl enable hadoop-namenode背后注册了哪些systemd服务单元。一旦出错你连日志该看哪个文件都不知道。我们坚持纯手工部署核心逻辑是让每个操作都成为一次系统知识的锚点下载Hadoop二进制包 → 理解tar.gz解压原理与$HADOOP_HOME环境变量作用域配置JAVA_HOME→ 梳理LinuxPATH查找顺序、/usr/lib/jvm/目录结构、OpenJDK与Oracle JDK差异创建Hadoop专用用户 → 掌握useradd -m -s /bin/bash hadoop参数含义、/home/hadoop家目录权限模型编辑core-site.xml→ 明白XML配置的层级继承关系、configuration根节点必要性、属性名大小写敏感规则格式化NameNode → 深刻理解hdfs namenode -format本质是初始化FSImage和EditLog元数据不可重复执行。这种“慢就是快”的方式让你在CentOS系统层面建立起对用户、权限、进程、网络、文件系统的立体认知远比跑通一个黑盒脚本有价值得多。2.3 工具链选型为什么锁定CentOS 7.9 OpenJDK 8u292 Hadoop 3.3.6组件版本选择选择理由风险规避点操作系统CentOS 7.9 (2009)最后一个支持yum且长期维护的CentOS 7版本内核4.19兼容Hadoop 3.x所有native库systemd服务管理成熟稳定避免使用CentOS 8已EOL或Stream滚动更新不稳定防止glibc版本冲突导致libhadoop.so加载失败Java环境OpenJDK 8u292Hadoop 3.3.x官方文档明确推荐JDK 8非11或17u292是8系列最后一个安全更新版修复了java.security策略文件加载漏洞严禁使用JDK 11否则hadoop classpath会报UnsupportedClassVersionError禁用alternatives --config java切换必须硬编码JAVA_HOMEHadoop发行版Apache Hadoop 3.3.6 (Binary)官方最新稳定版内置hadoop-aws模块支持S3Ahadoop-kms支持KMS加密且3.3.x修复了3.2.x中dfs.client.use.datanode.hostname导致的DN连接异常Bug不下载Source Code包需Maven编译不选CDH/HDP等商业发行版配置路径、服务名、日志位置全不同教程失效这个组合经过我在12台不同配置的物理机和虚拟机上交叉验证Intel Xeon E5-2680v4 32GB RAM SSD硬盘环境下hadoop fs -put1GB文件平均耗时23秒hadoop jar hadoop-mapreduce-examples-3.3.6.jar wordcount处理10MB文本耗时48秒性能符合预期无内存溢出或GC频繁告警。3. 核心细节解析与实操要点从系统准备到配置落地3.1 系统级前置准备关掉那些“好心办坏事”的默认服务CentOS 7默认开启的几项服务对Hadoop是隐形杀手。必须在安装前逐项检查并禁用第一步关闭SELinux永久生效SELinux的强制访问控制会拦截Hadoop进程对/usr/local/hadoop/data/目录的写入。别信“设成permissive模式就行”必须彻底关闭# 查看当前状态 sestatus # 临时关闭重启失效 sudo setenforce 0 # 永久关闭编辑配置文件 sudo vi /etc/selinux/config # 将 SELINUXenforcing 改为 SELINUXdisabled # 保存后必须重启系统 sudo reboot注意setenforce 0只是临时切换不改/etc/selinux/config重启后SELinux自动恢复enforcing状态Hadoop启动必跪。这是新手踩坑率最高的点之一。第二步停用并禁用firewalldHadoop各组件监听端口NameNode 9870/9000、DataNode 9864/9866、YARN 8088/8032默认被firewalld拦截# 停止服务 sudo systemctl stop firewalld # 禁用开机自启 sudo systemctl disable firewalld # 验证状态应显示 inactive (dead) sudo systemctl status firewalld提示生产环境需开放特定端口而非直接关防火墙但学习阶段为简化排错关掉最稳妥。若必须保留执行sudo firewall-cmd --permanent --add-port9870/tcp sudo firewall-cmd --reload第三步关闭swap分区Hadoop要求关闭swap否则YARN容器会因内存回收策略异常被Kill# 临时关闭所有swap sudo swapoff -a # 永久关闭注释掉/etc/fstab中swap行 sudo sed -i /swap/s/^/#/ /etc/fstab # 验证输出应为空 free -h | grep Swap第四步配置NTP时间同步Hadoop节点间时间差超过10秒会导致RPC认证失败。CentOS 7默认用chronyd确保其运行sudo systemctl start chronyd sudo systemctl enable chronyd # 强制同步一次 sudo chronyc makestep # 查看同步状态应显示 200 OK 和 System clock synchronized sudo chronyc tracking3.2 Java环境部署为什么必须用/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64路径Hadoop对JAVA_HOME路径极其敏感。很多教程让你export JAVA_HOME/usr/java/jdk1.8.0_292但CentOS 7通过yum install java-1.8.0-openjdk-devel安装的JDK实际路径是/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64。这个长路径里藏着关键信息1.8.0.292JDK小版本号必须匹配b10build编号Hadoop 3.3.6编译时链接的正是此build的libjvm.soel7_9表示为CentOS 7.9定制编译glibc版本兼容。验证方法# 查看已安装JDK rpm -qa | grep java # 输出应包含 java-1.8.0-openjdk-devel-1.8.0.292.b10-1.el7_9.x86_64 # 查看JAVA_HOME真实路径 sudo update-alternatives --config java # 复制星号(*)标记的路径去掉末尾/bin/java得到JAVA_HOME # 例如/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64/jre/bin/java → JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64设置环境变量写入~/.bashrcecho export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64 ~/.bashrc echo export PATH$JAVA_HOME/bin:$PATH ~/.bashrc source ~/.bashrc # 验证 java -version # 应输出 openjdk version 1.8.0_292 echo $JAVA_HOME # 应输出完整路径实操心得千万别用which java找路径它返回的是/usr/bin/java这是alternatives创建的软链接$JAVA_HOME必须指向真实的JDK安装根目录否则Hadoop启动时hadoop-env.sh里export JAVA_HOME会失效。3.3 Hadoop用户与目录规划为什么/usr/local/hadoop是黄金路径Hadoop官方推荐将二进制包解压到/usr/local/下原因有三/usr/local/是Linux FHS文件系统层次结构标准定义的“本地安装软件”目录权限宽松root可写普通用户可读避免与/opt/第三方商业软件或/home/用户数据混淆语义清晰所有Hadoop脚本如start-dfs.sh默认从$HADOOP_HOME读取配置而$HADOOP_HOME通常设为/usr/local/hadoop路径短不易输错。创建专用用户安全最佳实践# 创建hadoop组和用户指定家目录为/home/hadoopshell为bash sudo groupadd hadoop sudo useradd -m -g hadoop -s /bin/bash hadoop # 设置密码学习环境可设简单密码如hadoop123 sudo passwd hadoop # 切换到hadoop用户 su - hadoop下载并解压Hadoop在/home/hadoop下操作# 进入家目录 cd ~ # 下载使用清华镜像加速 wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz # 解压到/usr/local/需sudo权限 sudo tar -zxf hadoop-3.3.6.tar.gz -C /usr/local/ # 修改属主关键 sudo chown -R hadoop:hadoop /usr/local/hadoop-3.3.6 # 创建软链接方便后续升级 sudo ln -s /usr/local/hadoop-3.3.6 /usr/local/hadoop # 验证 ls -l /usr/local/ | grep hadoop # 应显示 lrwxrwxrwx 1 root root ... hadoop - hadoop-3.3.6设置Hadoop环境变量~/.bashrc追加echo export HADOOP_HOME/usr/local/hadoop ~/.bashrc echo export PATH$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH ~/.bashrc echo export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop ~/.bashrc echo export HADOOP_MAPRED_HOME$HADOOP_HOME ~/.bashrc echo export YARN_HOME$HADOOP_HOME ~/.bashrc source ~/.bashrc # 验证 hadoop version # 应输出 Hadoop 3.3.63.4 SSH免密登录配置为什么必须是hadooplocalhost而非rootlocalhostHadoop启动脚本如start-dfs.sh内部通过ssh命令远程执行hdfs --daemon start namenode等指令。即使伪分布式模式它仍按“分布式逻辑”调用SSH因此必须配置hadoop用户对自己的免密登录。错误做法用root用户配置免密然后切到hadoop用户执行start-dfs.sh——脚本会以hadoop身份尝试ssh localhost但root生成的密钥对hadoop用户不可读必然失败。正确流程全程在hadoop用户下操作# 生成RSA密钥对一路回车不设密码 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa # 将公钥追加到authorized_keys注意是追加不是覆盖 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys # 设置权限SSH安全要求否则拒绝登录 chmod 0600 ~/.ssh/authorized_keys chmod 0700 ~/.ssh # 测试免密登录 ssh localhost # 成功后输入 exit 退出 exit验证是否生效# 执行此命令应直接登录无密码提示且whoami返回hadoop ssh -o StrictHostKeyCheckingno hadooplocalhost whoami # 输出应为hadoop常见问题ssh localhost提示Permission denied (publickey)。排查步骤1)ls -l ~/.ssh/确认id_rsa和authorized_keys权限正确2)cat ~/.ssh/authorized_keys确认公钥内容完整3)ssh -v localhost查看详细日志重点找Offering public key和Server accepts key字样。4. 实操过程与核心环节实现从XML配置到Web UI验证4.1 四大核心配置文件详解每一行代码背后的业务含义Hadoop伪分布式模式只需修改4个XML文件但每行配置都对应一个关键功能点。我们逐个拆解不列全量代码只讲必须改、不能错、改了有啥用的字段。core-site.xml定义HDFS的“入口地址”configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value descriptionDefault filesystem URI. NameNode RPC address./description /property /configurationfs.defaultFS这是Hadoop的“中枢神经”。所有hadoop fs命令如-ls,-put都以此URL为根。hdfs://协议标识HDFS文件系统localhost:9000是NameNode的RPC监听地址非Web UI端口。若写成file:///则退化为本地文件系统若IP写错如127.0.0.1可能因/etc/hosts解析差异导致连接失败。为什么是9000Hadoop 2.x默认用90003.x沿用。可改但需同步改hdfs-site.xml中dfs.namenode.rpc-address否则启动报错。hdfs-site.xml管控HDFS的“身体器官”configuration property namedfs.replication/name value1/value descriptionDefault block replication. Must be 1./description /property property namedfs.namenode.name.dir/name valuefile:/usr/local/hadoop/data/hdfs/namenode/value descriptionDetermines where on the local filesystem the DFS name node should store the name table./description /property property namedfs.datanode.data.dir/name valuefile:/usr/local/hadoop/data/hdfs/datanode/value descriptionDetermines where on the local filesystem a DFS data node should store its blocks./description /property /configurationdfs.replication伪分布式模式必须设为1。HDFS默认3副本但单机无法存3份设为1表示“只存一份”否则DataNode启动时检测到磁盘空间不足直接退出。dfs.namenode.name.dirdfs.datanode.data.dir这两个路径是HDFS的“心脏”和“肌肉”。name.dir存FSImage文件系统镜像和EditLog操作日志data.dir存实际数据块Block。路径必须是绝对路径且file:前缀不可省略区别于hdfs://。目录需提前创建并授权mkdir -p /usr/local/hadoop/data/hdfs/{namenode,datanode} chown -R hadoop:hadoop /usr/local/hadoop/datamapred-site.xmlMapReduce的“任务调度器”configuration property namemapreduce.framework.name/name valueyarn/value descriptionExecution framework setting. Use yarn for YARN./description /property /configurationmapreduce.framework.name告诉MapReduce作业你的计算资源由YARN统一调度而不是旧的local单机或classicJobTracker模式。这是Hadoop 2.x的核心架构变革必须设为yarn。yarn-site.xmlYARN的“资源总控台”configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value descriptionShuffle service for MapReduce./description /property property nameyarn.resourcemanager.hostname/name valuelocalhost/value descriptionResource manager hostname./description /property /configurationyarn.nodemanager.aux-services启用mapreduce_shuffle服务这是MapReduce TaskTracker时代ShuffleHandler的演进版负责Reducer从Mapper拉取中间数据。值必须是mapreduce_shuffle拼错如mapred-shuffle会导致MapReduce作业卡在ACCEPTED状态。yarn.resourcemanager.hostnameYARN ResourceManager的主机名。伪分布式下设为localhost与core-site.xml中fs.defaultFS的host保持一致避免RPC解析混乱。4.2 格式化NameNode与启动集群命令背后的系统行为执行hdfs namenode -format不是简单的“清空目录”而是一套完整的元数据初始化流程# 切换到hadoop用户 su - hadoop # 执行格式化 hdfs namenode -format这行命令实际做了什么检查dfs.namenode.name.dir路径是否存在若不存在则创建在/usr/local/hadoop/data/hdfs/namenode/current/下生成VERSION文件记录集群ID、布局版本、命名空间ID创建seen_txid文件记录最后应用的事务ID初始化fsimage_0000000000000000000镜像文件空文件系统快照启动NameNode进程前必须先执行此操作否则报错NameNode is not formatted。验证格式化结果ls -l /usr/local/hadoop/data/hdfs/namenode/current/ # 应看到VERSION seen_txid fsimage_0000000000000000000 cat /usr/local/hadoop/data/hdfs/namenode/current/VERSION # 输出示例namespaceID1234567890123456789 clusterIDCID-abcdef12-3456-7890-abcd-ef1234567890启动HDFS和YARN服务# 启动HDFSNameNode DataNode SecondaryNameNode start-dfs.sh # 启动YARNResourceManager NodeManager start-yarn.sh # 验证进程应看到5个Java进程 jps # 正常输出 # 12345 NameNode # 12346 DataNode # 12347 SecondaryNameNode # 12348 ResourceManager # 12349 NodeManager实操心得start-dfs.sh和start-yarn.sh本质是遍历$HADOOP_HOME/etc/hadoop/workers旧版叫slaves文件对每行主机名执行ssh启动对应服务。伪分布式下该文件只有一行localhost所以只在本机启动。若文件为空或路径错误jps将看不到任何进程。4.3 Web UI验证与基础命令测试用浏览器和终端双重确认Hadoop提供两个核心Web界面是判断集群健康度的“仪表盘”。NameNode Web UIHDFS监控访问http://localhost:9870Hadoop 3.x新端口2.x是50070左侧菜单栏点击Utilities → Browse the file system应能列出/根目录初始为空点击Overview查看Live Nodes数量应为1Configured Capacity显示磁盘可用空间若页面打不开检查1)jps是否有NameNode进程2)netstat -tuln | grep :9870确认端口监听3) 浏览器是否用了代理关掉。ResourceManager Web UIYARN监控访问http://localhost:8088首页显示Cluster MetricsActive Nodes应为1点击Applications应看到空列表尚未提交作业若报Connection refused检查jps是否有ResourceManager进程或yarn-site.xml中yarn.resourcemanager.hostname是否为localhost。执行基础HDFS命令验证读写# 创建HDFS根目录下的input目录 hadoop fs -mkdir -p /input # 上传本地文件用系统自带的LICENSE.txt测试 hadoop fs -put /usr/local/hadoop/LICENSE.txt /input/ # 列出HDFS文件 hadoop fs -ls /input # 输出应类似-rw-r--r-- 1 hadoop supergroup 12345 2023-01-01 10:00 /input/LICENSE.txt # 从HDFS下载回本地 hadoop fs -get /input/LICENSE.txt ~/downloaded.txt # 对比文件一致性 md5sum /usr/local/hadoop/LICENSE.txt ~/downloaded.txt # 两行MD5值应完全相同4.4 运行WordCount示例端到端验证MapReduce流程这是检验Hadoop是否真正可用的“终极考题”。我们用Hadoop自带的hadoop-mapreduce-examples-3.3.6.jar运行经典词频统计。步骤1准备输入数据# 创建本地测试文件 echo hello world hello hadoop ~/input.txt echo hadoop is great world ~/input.txt # 上传到HDFS hadoop fs -put ~/input.txt /input/步骤2提交MapReduce作业# 执行WordCount注意jar包路径在$HADOOP_HOME/share/hadoop/mapreduce/下 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output/inputHDFS输入目录含input.txt/outputHDFS输出目录必须不存在程序会自动创建命令执行后终端会实时打印Map/Reduce进度如map 100% reduce 100%。步骤3查看输出结果# 列出/output目录应有两个文件_SUCCESS和part-r-00000 hadoop fs -ls /output # 查看结果文件内容 hadoop fs -cat /output/part-r-00000 # 输出应类似 # hadoop 2 # hello 2 # is 1 # great 1 # world 2步骤4Web UI追踪作业回到http://localhost:8088→Applications→ 点击刚提交的作业ID如application_1234567890123_0001→ApplicationMaster→Logs可查看详细的Container日志确认Mapper和Reducer的执行轨迹。注意事项若作业卡在ACCEPTED状态大概率是yarn-site.xml中yarn.nodemanager.aux-services未设为mapreduce_shuffle若报ClassNotFoundException: org.apache.hadoop.mapreduce.lib.input.FileInputFormat说明HADOOP_CLASSPATH未包含MapReduce JAR包需在hadoop-env.sh中添加export HADOOP_CLASSPATH$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*5. 常见问题与排查技巧实录那些文档里不会写的“血泪教训”5.1 典型问题速查表问题现象可能原因排查命令解决方案start-dfs.sh后jps看不到NameNodeJAVA_HOME未正确设置或hadoop-env.sh中被覆盖echo $JAVA_HOMEgrep JAVA_HOME $HADOOP_HOME/etc/hadoop/hadoop-env.sh在hadoop-env.sh顶部显式添加export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64hadoop fs -ls /报Connection refusedcore-site.xml中fs.defaultFS的host或port错误cat $HADOOP_HOME/etc/hadoop/core-site.xml | grep value确认valuehdfs://localhost:9000/value且/etc/hosts中127.0.0.1 localhost存在hdfs namenode -format报Permission denieddfs.namenode.name.dir目录属主不是hadoop用户ls -ld /usr/local/hadoop/data/hdfs/namenodesudo chown -R hadoop:hadoop /usr/local/hadoop/data/hdfs/namenodeWeb UIhttp://localhost:9870打不开NameNode进程未启动或端口被占用jps | grep NameNodesudo netstat -tuln | grep :9870若端口被占改hdfs-site.xml中dfs.namenode.http-address为localhost:9871重启NameNodeWordCount作业map 0%卡住不动yarn-site.xml中yarn.nodemanager.aux-services值错误cat $HADOOP_HOME/etc/hadoop/yarn-site.xml | grep aux-services确保值为mapreduce_shuffle且$HADOOP_HOME/share/hadoop/yarn/lib/下存在hadoop-yarn-server-nodemanager-3.3.6.jar5.2 独家避坑技巧来自12次重装的实战经验技巧1日志文件不是“大海捞针”而是“按图索骥”Hadoop日志分散在$HADOOP_HOME/logs/下但关键线索有规律hadoop-hadoop-namenode-*.logNameNode启动失败优先看最后一行ERRORhadoop-hadoop-datanode-*.logDataNode无法注册搜索Failed to connect to namenodeyarn-hadoop-resourcemanager-*.logYARN调度异常搜索Invalid resource requesthadoop-hadoop-secondarynamenode-*.log检查Checkpoint failed通常是dfs.namenode.checkpoint.dir路径权限问题。我的习惯是出错后立即执行 tail -n 50 $HADOOP_HOME/logs/hadoop--.log | grep -E (ERROR|Exception|Failed)
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →