hadoop运行wordcount时的两个bug:Invalid
搭建好hadoop环境后,我们想在hadoop下试运行一下wordcount程序,以验证hadoop的完整性。
1、首先在本地创建用于计算的输入文件input/test.txt,并在test.txt中写入相应的文本用于wordcount计算。
2、转到hadoop/share/hadoop/mapreduce下,有一个文件叫hadoop-mapreduce-examples-2.6.5.jar,之后我们需要在此文件夹下调用这个jar包,执行wordcount程序
cd /usr/local/hadoop/share/hadoop/mapreduce
注:/usr/local/hadoop为hadoop的安装目录
3、输入:
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount data/data/input/test.txt data/data/output/wc
其中:
data/data/input/test.txt为输入文件
data/data/output/wc为输出文件地址
此时会先后出现两个BUG
问题一
java.net.ConnectException: Call From ubuntu/127.0.1.1 to 192.168.37.128:9000
问题:连接错误,表示hadoop连接不上虚拟机服务器。
原因:在core-site.xml与yarn-site.xml中输入的IP地址192.168.37.128为windows的IP地址,不是虚拟机的IP地址。
解决办法
1、虚拟机设置桥接模式:固定本机IP地址
虚拟机设置桥接模式:将虚拟机的IP地址固定下来,以免IP地址每次都在变动,后面就每次都要设置core-site.xml与yarn-site.xml中的IP地址。
图片.png 图片.png 图片.png
2、在虚拟机中Ping主机windows的IP地址。输入命令:
ping 192.168.37.1
注:此处的192.168.37.1为windows的IP地址(在cmd下输入ifconfig查看)
3、查看本虚拟机的IP地址
ifconfig
图片.png
将本虚拟机的IP地址写入core-site.xml与yarn-site.xml文件(此处可参考《搭建hadoop环境》https://www.jianshu.com/p/800cf4b8f944)
问题二
发生错误:InvalidInputException: Input path does not exist
原因:输入文件不在HDFS文件中,只是在linux本地文件中
解决办法:
1、将本地文件传入HDFS文件系统中
hdfs dfs –put ~/person_file/hadoop/data
2、确认该文件已存在HDFS文件系统中,查看文件:
hdfs dfs -ls
此时再将input中的文件test.txt作为输入即可
3、执行命令:
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount data/data/input/test.txt data/data/output/wc
注意:此处输出的文件也是在HDFS文件系统上。因此需要将文件载入到本地才能查看。
hdfs dfs -get data/data ~/personal_file/hadoop/data
注:将文件由HDFS下的data/data下载至本地文件夹~/personal_file/hadoop/data下。
4、转到本地文件目录下
cd ~/personal_file/hadoop/data/data/output/wc
可以看到两个文件:
图片.png
注:part-r-0000为处理结果文件,_SUCCESS为状态文件(表示该文件执行成功了)
5、输入命令
more part-r-0000
即可查看最后的结果。
至此,Hadoop从安装,到配置环境,再到执行第一个脚本wordcount总算配置完毕。
作为一个本科学土木的,转行做这个,折腾了一星期才弄好。也是功德圆满吧。