Hadoop伪分布下实现MapReduce单词计算
一、启动Hadoop
进入路径
cd /service/hadoop-3.1.2/sbin
./start-all.sh
二、单词计算
1.找到WordCount程序
进入路径
cd /service/hadoop-3.1.2/share/hadoop/mapreduce
可以看到下面Jar包
hadoop-mapreduce-examples-3.1.2.jar
2.创建HDFS数据目录,保存MapReduce的输入、输入文件
进入路径
cd /service/hadoop-3.1.2
以下命令全在cd /service/hadoop-3.1.2路径下执行
- 创建输入文件
./bin/hadoop fs -mkdir -p /data/wordcount
- 创建输出文件
./bin/hadoop fs -mkdir /output
- 查看刚才创建的文件
./bin/hadoop fs -ls /
在http://192.168.18.130:50070/dfshealth.html#tab-overview也能看到文件
2.创建单词文本并上传到DFS
- 创建一个单词文本
vi words
写入单词
hello zhangsan
hello lisi
hello wangwu
保存文件
- 上传这个文件到HDFS中
./bin/hadoop fs -put words /data/wordcount
- 看是否上传成功并列出文档内容
./bin/hadoop fs -ls /data/wordcount
./bin/hadoop fs -cat /data/wordcount/words
3.运行 WordCount 程序
./bin/hadoop jar /service/hadoop-3.1.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar wordcount /data/wordcount /output/wordcount
4.查看统计结果
查看存放结果的 output 文件下有哪些文件
./bin/hadoop fs -ls /output/wordcount/
查看结果
./bin/hadoop fs -cat /output/wordcount/part-r-00000
在http://192.168.18.130:50070/dfshealth.html#tab-overview路径下也能查看
三、遇到问题解决方案
1.解决运行 Hadoop MapReduce 任务时错误: 找不到或无法加载主类
在配置文件mapred-site.xml添加如下命令
<property>
<name>mapreduce.application.classpath</name>
<value>/service/hadoop-3.1.2/share/hadoop/mapreduce/*, /service/hadoop-3.1.2/share/hadoop/mapreduce/lib/*</value>
</property>
2.DFS中存有文件
删除文件 bin/hdfs dfs -rm output/*
删除文件夹 bin/hdfs dfs -rm -r output
3.java.net.ConnectException: Your endpoint configuration is wrong; For more details see: http://wiki…
重新启动dfs
./start-dfs.sh
4.Container [pid=8794,containerID=container_1552484587522_0002_01_000005] is running 431118848B beyond the ‘VIRTUAL’ memory limit. Current usage: 51.4 MB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used. Killing container. …
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
1.将yarn.nodemanager.vmem-check-enabled的值改为false,即不检查VM的值;
2.将yarn.scheduler.minimum-allocation-mb的值调高一些,默认是1024mb,或者修改yarn.nodemanager.vmem-pmem-ratio的值,默认为2.1,将该值改得更大。
我选择第一个,配置文件Yarn-site.xml 添加下面命令
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
参考文档
https://blog.csdn.net/weixin_43207025/article/details/100525447
https://blog.csdn.net/weixin_43207025/article/details/100527859
https://blog.csdn.net/u012365843/article/details/88562869