前言
我最近在学习大数据相关的知识,将遇到的一些问题记录如下。
实验环境
linux ubuntu
hadoop3.0
eclipse
(不全)
整体实验流程简介
- 启动hadoop
cd /apps/hadoop/sbin
./start-all.sh
- 在/data/yarn目录下用wget命令从网上下载用到的依赖包,命名为hadoop2lib 并解压到当前目录下
- 在eclipse下新建项目、包、类(Client与ApplicationMaster)
- 右键项目,新建一个文件夹(folder),命名为lib
- 将/data/yarn下hadoop2lib 里的所有jar包copy到本项目的lib下
- 选中lib下的所有jar包,选择Build path
- 编写Client 与ApplicationMaster 类中的内容
- 将整个项目打包
(export->JAR file->确定目标路径) - 在linux命令行
cd /data/yarn
- 使用命令执行distributedsehll
最后成功的结果:
我遇到的问题
第一次尝试的时候到最后一步出现了如下提示:
由果推因,发现早在将项目打包的时候就出了问题:
我目前对java的了解还很浅薄,没有办法判断是不是代码本身出了问题,但是参考代码的来源相对可靠,学长学姐们都是这样通过实验评测的,从理论上讲不会是代码本身的问题。
后来经过摸索,我找了两点可能的原因,最后成功了。
1 是导包操作不规范导致的。操作说明要求将/data/yarn下的hadoop2lib的.jar为后缀的文件导入eclipse相应项目的lib库下,我一开始在终端使用的是
cp -r /data/yarn/hadoop2lib /home/zhangyu/eclipse-workspace/YARN/lib
这个命令,-r操作使得整个hadoop2lib文件夹都被复制到lib中,这样不符合导包规范。
后来我删掉了包,先进入/data/yarn/hadoop2lib下,再重新导入,使用的是
cp ./*.jar /home/zhangyu/eclipse-workspace/YARN/lib
其中 .表示当前目录下,*表示全选, .jar规定只选中以jar为后缀的文件
可能是由于前面操作太多,实验虚拟机卡住了,在linux终端输入ls命令查看两处都能找到相应jar包,但是在eclipse软件lib下没有,刷新也没用。
于是我听从学长的建议重新建一个package(顺便解释一下为什么截图里面的路径用的都是YARN1)
2 这个实验在虚拟机上断断续续地完成,第一次因为导包问题失败后,我再一次登录虚拟机时忘记了执行前面的启动hadoop操作,导致了第二次连接失败。
之后输入hadoop的启动命令后,再连接就成功了。
以后会吸取经验教训。
也希望我的经验能帮到你!