音乐推荐系统——第一周实验总结

一、完成的工作

1. 把老师给的代码成功运行

2. 把数据从 mysql 导入到 hdfs

二、遇到的问题及解决、思考

1. 运行老师的代码时遇到的问题

问题:

​ 在运行老师的代码时其实一开始就成功启动了,但在启动之后发现总是有一段自己不知道是什么的输出,就以为时程序有 bug,所以耗费了大量的时间来从网上搜索,但无果,最终还是老师告诉我那是 web 程序向 livy-server 发出的请求,因为服务器端没有安装 livy,所以会有那一段提示。

思考:

​ (1)阅读别人代码的时候要注意的事项:(这个思考可以推广到做任何事情,如读一本书、学习一个架构等)

​ Ⅰ. 首先要对这个代码有一个大概的了解,知道这个代码是干什么用的。

​ Ⅱ. 了解代码的组织结构,知道每一个模块的功能,及模块之间是如何写作的。

​ Ⅲ. 进入到一个具体的代码文件中,还是做第 Ⅰ,Ⅱ 步的工作。

​ Ⅳ. 最后研究代码的具体实现。

2. 安装 livy 时遇到的问题

问题:

​ 在安装 livy 后发现提交 spark 任务的时候,yarn 总是报错,提示资源不足,又是如同第一步,从网上海搜,搜出来的结果发现和自己的不匹配,但还是不死心,继续搜,最后浪费了大量的时间,也没有结果。最终是想到了当初免密登录没有配置成功,所以导致 yarn 无法正常工作,配完免密登录后可以提交 spark 请求,但 yarn 还是不正常工作。

思考:

​ (1)网上搜索的策略:google、百度来一遍,一遍过后如果还没有解决说明这不是常见问题,那么耗费大量的时间搜是不划算的,不如自己查查日志,猜测是哪里的问题,或者找到是什么地方报的错,找到这个文件,找到报错的位置,一般可以猜出来错误。

​ (2)当遇到问题的时候,一定要想办法解决,如果逃避的话,会在将来造成更大的错误,就像我如果第一次发现免密登录出现问题的时候,花费半个小时重新配置一下免密登录,那么将会省去长达 7、8 个小时的解决 yarn 错误的麻烦。

3. 安装 sqoop 时遇到的问题

问题:

​ 一开始安装的是 sqoop 1.4.7,这时网上最常用的版本,所以就装了,然后就学习用法,以及如何在 Java 中调用 API,在调 API 的时候,我搜到的是 1.99.7 的版本,就按照教程做了,结果做到一半发现有些东西在 1.4.7 中根本没有,这两个版本的功能相差非常大, 可以说用法根本就不一样了,而我又尝试搜索 1.4.7 的 API,发现官方并没有给出相应的 API,无奈只能重新安装了。

思考:

​ (1)还是如同第一点提到的,当要用一个东西的时候,一定要对这个东西有一个大体的把控,知道这个东西大概提供了哪些功能,是不是自己真正需要的东西,不能上去就一头扎进去,最终学到头也不知道到底学了什么东西。

​ (2)一些软件跨版本如跨山,所以在安装的时候一定要查明白自己需要的是哪个版本。

4. 运行 sqoop 时遇到的问题

问题:

​ 运行 sqoop 的时候总是在 yarn 中提示任务失败,这时我以为是 yarn 的错误的原因,就从网上大量搜索 yarn 的错误,发现根本搜不到,我就重启了 yarn,在重启过程中发现提示 namenode not found,这其实是在我安装 livy 的时候就遇到的提示了,但我当时没有管,以为不重要。但事实上,因为这个原因,yarn 根本就没有重启,在重启之后我发现 sqoop 的任务还是不能提交,这时我才意识到是 mapreduce 的错误,我通过日志发现是自己粗心上传到了没有权限的目录。

解决 namenode not found 的问题:

​ hadoop 把 namenode 的 pid 存放在了 /tmp 目录下,这个目录会定期清理,所以 namenode 的 pid 被清理之后就找不到了,我们只需要使用 kill -9 把该进程强制停止,然后再配置 hadoop/sbin 目录下的 hadoop-env.sh文件,修改 pid 存放的目录为自己指定的目录即可,再重新启动。

思考:

​ 因为 yarn 的问题一直都没有解决好,所以一遇到问题就想到可能是 yarn 出现了问题,然后花费大量的时间去找,最后又发现不是 yarn 的问题,白忙乎一场,所以在遇到问题的时候一定要把它全部解决,不然就因为这个小问题,可能会影响到整个项目的完成。

三、总结

​ 最主要就有两点收获:

1. 要有全局观,以全局视角看待一件事情
2. 遇到问题就要解决,不能拖着,否则将会又无穷的后患。

发布了42 篇原创文章 · 获赞 3 · 访问量 2079

猜你喜欢

转载自blog.csdn.net/stable_zl/article/details/104602240