恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
踩遍 Hadoop 经典 Bug!WordCount 词频统计实验完整流程
首页
资讯中心
/
踩遍 Hadoop 经典 Bug!WordCount 词频统计实验完整流程
踩遍 Hadoop 经典 Bug!WordCount 词频统计实验完整流程
发布时间:2026/10/14 19:44:27
Hadoop单机WordCount实验踩坑全记录Ubuntu虚拟机 MapReduce词频统计环境VirtualBox Ubuntu Hadoop2.x 实验目标对文本做单词计数输出词频结果复刻课堂PPT示例 输入文本I love Hadoop I love Spark Spark is fast Hadoop is good预期输出Hadoop 2 I 2 Spark 2 fast 1 good 1 is 2 love 2一、两种实现方案方案1手写WordCount.java踩坑超多不推荐新手编写Java WordCount代码编译、打包jar提交MapReduce任务。核心报错1cannot find symbol IntWritable / Text现象javac编译代码提示找不到Hadoop相关类。 原因编译命令没有正确加载Hadoop的jar类库。✅解决编译时指定Hadoop classpathjavac -cp hadoop classpath WordCount.java⚠️注意是左上角波浪键反引号不是单引号。核心报错2Connection refused: localhost:9000现象执行hdfs命令提示连接被拒绝。 原因HDFS的NameNode没有启动。✅解决启动Hadoop集群# 启动HDFS start-dfs.sh # 启动YARN start-yarn.sh # 查看进程确认NameNode、DataNode启动成功 jps补充虚拟机每次重启后都要重新执行start-dfs.shHadoop不会开机自启。 首次使用需要格式化HDFS只执行一次多次格式化会损坏数据hdfs namenode -format核心报错3Input path does not exist: hdfs://localhost:9000/input现象任务提交失败提示HDFS路径不存在。 原因HDFS中/input目录不存在或者没有上传输入文本。✅解决创建目录 上传本地文件到HDFS# 创建HDFS目录 hdfs dfs -mkdir -p /input # 把本地input.txt上传到HDFS hdfs dfs -put input.txt /input # 校验文件是否上传成功 hdfs dfs -ls /input核心报错4YARN任务失败 HADOOP_MAPRED_HOME占位符现象MapReduce任务提交后运行失败日志提示HADOOP_MAPRED_HOME${full path...}原因mapred-site.xml配置文件没有替换占位符YARN找不到Hadoop安装目录。✅解决修改mapred-site.xmlproperty nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property修改配置后重启YARNstop-yarn.sh start-yarn.sh方案2Hadoop自带WordCount示例推荐避坑首选不用写JavaHadoop内置WordCount的jar包不用写代码、不用编译Java一条命令直接跑实验完美适配课程演示。完整执行步骤本地创建输入文件nano input.txt粘贴文本I love Hadoop I love Spark Spark is fast Hadoop is goodCtrlO保存回车CtrlX退出编辑器。上传文件至HDFShdfs dfs -mkdir -p /input hdfs dfs -put input.txt /input删除旧输出目录必须执行输出目录不能预先存在hdfs dfs -rm -r /output执行自带WordCount任务hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples*.jar wordcount /input /output✨兜底命令绕过YARN本地执行不用修改mapred-site.xml强烈推荐hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples*.jar wordcount -Dmapreduce.framework.namelocal /input /output查看词频统计结果hdfs dfs -cat /output/part-r-00000二、实验总结避坑清单HDFS输出目录/output不能提前存在每次跑任务前必须删除否则任务报错。每次重启虚拟机需要手动start-dfs.sh启动HDFS否则9000端口连接拒绝。手写Java代码编译麻烦新手课程实验优先使用Hadoop自带examples快速拿到结果。YARN相关环境变量配置出错会导致MapReduce任务崩溃遇到YARN报错可以直接切换本地运行模式绕开。区分【本地Linux文件】和【HDFS里的文件】ls看本地hdfs dfs -ls看HDFS分布式文件。三、学习感悟这次Hadoop MapReduce词频实验踩了一连串经典坑集群未启动、HDFS文件不存在、Java类库缺失、YARN环境配置占位符错误。很多报错不是代码逻辑问题而是分布式环境配置、文件系统的区别。Hadoop的难点不在写业务代码而在环境的调试。自带示例jar包非常适合课程快速验证实验效果节省大量编译调试时间。[TOC] # Hadoop单机WordCount实验踩坑全记录Ubuntu虚拟机 MapReduce词频统计 环境VirtualBox Ubuntu Hadoop2.x 实验目标对文本做单词计数输出词频结果复刻课堂PPT示例 输入文本I love Hadoop I love Spark Spark is fast Hadoop is good预期输出Hadoop 2 I 2 Spark 2 fast 1 good 1 is 2 love 2## 一、两种实现方案 ### 方案1手写WordCount.java踩坑超多不推荐新手 编写Java WordCount代码编译、打包jar提交MapReduce任务。 #### 核心报错1cannot find symbol IntWritable / Text 现象javac编译代码提示找不到Hadoop相关类。 原因编译命令没有正确加载Hadoop的jar类库。 ✅解决编译时指定Hadoop classpath bash javac -cp hadoop classpath WordCount.java⚠️注意是左上角波浪键反引号不是单引号。核心报错2Connection refused: localhost:9000现象执行hdfs命令提示连接被拒绝。 原因HDFS的NameNode没有启动。✅解决启动Hadoop集群# 启动HDFS start-dfs.sh # 启动YARN start-yarn.sh # 查看进程确认NameNode、DataNode启动成功 jps补充虚拟机每次重启后都要重新执行start-dfs.shHadoop不会开机自启。 首次使用需要格式化HDFS只执行一次多次格式化会损坏数据hdfs namenode -format核心报错3Input path does not exist: hdfs://localhost:9000/input现象任务提交失败提示HDFS路径不存在。 原因HDFS中/input目录不存在或者没有上传输入文本。✅解决创建目录 上传本地文件到HDFS# 创建HDFS目录 hdfs dfs -mkdir -p /input # 把本地input.txt上传到HDFS hdfs dfs -put input.txt /input # 校验文件是否上传成功 hdfs dfs -ls /input核心报错4YARN任务失败 HADOOP_MAPRED_HOME占位符现象MapReduce任务提交后运行失败日志提示HADOOP_MAPRED_HOME${full path...}原因mapred-site.xml配置文件没有替换占位符YARN找不到Hadoop安装目录。✅解决修改mapred-site.xmlproperty nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME/usr/local/hadoop/value /property修改配置后重启YARNstop-yarn.sh start-yarn.sh方案2Hadoop自带WordCount示例推荐避坑首选不用写JavaHadoop内置WordCount的jar包不用写代码、不用编译Java一条命令直接跑实验完美适配课程演示。完整执行步骤本地创建输入文件nano input.txt粘贴文本I love Hadoop I love Spark Spark is fast Hadoop is goodCtrlO保存回车CtrlX退出编辑器。上传文件至HDFShdfs dfs -mkdir -p /input hdfs dfs -put input.txt /input删除旧输出目录必须执行输出目录不能预先存在hdfs dfs -rm -r /output执行自带WordCount任务hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples*.jar wordcount /input /output✨兜底命令绕过YARN本地执行不用修改mapred-site.xml强烈推荐hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples*.jar wordcount -Dmapreduce.framework.namelocal /input /output查看词频统计结果hdfs dfs -cat /output/part-r-00000