一、问题详情:
22/03/18 11:34:00 DEBUG ipc.Client: IPC Client (1783083399) connection to master/192.168.73.130:8088 from root: stopped, remaining connections 0
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.; Host Details : local host is: "pearl/192.168.43.142"; destination host is: "master":8088;
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:776)
运行后报错具体内容截图如下所示:
二、原因分析:
代码错误来源处源代码截图查看:
从这两个截图我们就可以很清楚的看出错误点了,在此次调用HDFS工具类中的createFileBySysTime()方法中,该方法需要的三个参数为:hadoop地址,文件名和数据内容,用于实现将每一页的数据以文件的形式存储到HDFS上。那么,Hadoop的地址,是需要跟自己虚拟机中配置的一样才可以的,如果不一样,那么将无法存储,从而报错,我正是忽略了这一点。
由上可以得出,只要在createFileBySysTime()方法中填写正确的hadoop地址(端口号)即可,我前面写的是 http://master:8088,但一直不对,明显是忘记了自己的Hadoop地址。
解决方案:
查看自己的Hadoop地址是什么(获取正确的端口号)
hdfs getconf -confKey fs.default.name
虚拟机内查看:
获取到的hdfs://master:8020就是我正确的hadoop地址(端口号)啦!
重新改正,再次运行就可以存储数据啦!正确显示页面,要确定全部都没有红色的报错信息才是正确的成功。