如何在已安装Hadoop和Spark的Docker中运行Word Count Jar示例?
验证Docker中Hadoop与Spark安装的Word Count操作步骤
1. 进入容器并确认服务状态
- 先进入运行中的Hadoop/Spark容器:
docker exec -it <容器ID或名称> /bin/bash - 检查HDFS状态,确认集群正常:
能看到NameNode、DataNode的正常状态信息即可。hdfs dfsadmin -report - 验证Spark可用:
输出版本信息说明Spark环境没问题。spark-submit --version
2. 准备测试数据
- 在容器内创建测试文本:
echo "Hello Hadoop Hello Spark" > test.txt echo "Word Count Test" >> test.txt - 把文件上传到HDFS(用来同时验证HDFS功能):
# 创建HDFS输入目录 hdfs dfs -mkdir /input # 上传本地文件到HDFS hdfs dfs -put test.txt /input
3. 运行Word Count示例
Spark和Hadoop都自带现成的Word Count示例Jar,直接用就行:
用Spark运行
Spark示例Jar在$SPARK_HOME/examples/jars/目录下,替换成你实际的版本号(或者用通配符匹配):
spark-submit \ --class org.apache.spark.examples.WordCount \ $SPARK_HOME/examples/jars/spark-examples_*.jar \ hdfs:///input/test.txt \ hdfs:///output/spark-wordcount
- 注意:输出目录
/output/spark-wordcount不能提前存在,否则会报错。
用Hadoop运行
Hadoop示例Jar在$HADOOP_HOME/share/hadoop/mapreduce/目录下:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \ wordcount \ /input/test.txt \ /output/hadoop-wordcount
4. 查看结果
- Spark运行结果:
hdfs dfs -cat /output/spark-wordcount/part-00000 - Hadoop运行结果:
正常输出应该是每个单词的出现次数,比如:hdfs dfs -cat /output/hadoop-wordcount/part-r-00000Hello 2 Hadoop 1 Spark 1 Word 1 Count 1 Test 1
常见问题处理
- 输出目录已存在:执行
hdfs dfs -rm -r /output/xxx删除后重新运行 - HDFS报错:用
jps命令检查进程,确认NameNode、DataNode、ResourceManager、NodeManager都在运行 - Spark提交失败:如果是集群模式有问题,可先加
--master local[*]用本地模式测试,排查环境问题
内容的提问来源于stack exchange,提问作者ChackM
相关产品推荐
相关产品推荐

