实验要求如下:
实验步骤与遇到的问题
1.开机(使用VMvare)
这一步主要吃的就是配置,推荐分配8G内存,开机时间依配置决定。
2.登录&SSH
开机后默认界面:
按alt+F5切换登录:
帐号root,默认密码hadoop,之后会自动进行修改密码。
ssh连接如下:
ssh连接依照开机界面提示的IP,此处需要注意VMvare中此虚拟机网络设置为nat模式即可联网,不行的话再去尝试将当前联网的网络共享网络给该虚拟机的虚拟网卡(windows系统)
3.下载实验内容与解压
进行ssh连接后即可连通网络了,使用
wget http://clouduv.cn/hw/cloudMR.tar.gz 命令下载作业文件
之后使用 tar -zxvf cloudMR.tar.gz 命令解压
4.执行start.sh
首先进入解压目录 cd cloudMR
之后运行命令 ./start.sh
再输入学号
这里由于我已经完成了实验,可以看到文件已存在,实际上可以看到,上面已经报错了,是系统原本的权限问题,以后就需要在root与hdfs用户之间切换完成各种指令了。
使用 hadoop version 查看hadoop是否正常运行
5.环境变量
在进行下面的步骤前,需要先设置好变量,不然无法编译Java程序
输入命令 vi ~/.bashrc
打开文件后按I进入编辑模式,编辑如下:
也可以直接编辑 export hadoop_CLASSPATH=…..
此处涉及到vi的诸多操作,需要学习的地方很多。
而且此处注意文件夹名最后不要断行,以防出错。
修改完成后按Esc退出编辑模式,之后按 :进入尾行,输入wq保存退出:
为使修改生效需要重启,之后使用echo $hadoop_CLASSPATH查看是否生效:
如上即表示成功生效!
6.在HDFS建立文件夹以及文件put操作
上面的start.sh命令由于权限问题无法执行,查看调用之后发现是建立文件夹以及put操作,所以此处就手动建立完成。
首先使用命令 su hdfs 切换hdfs用户:
下面建立文件夹推荐在/user/root目录下建立,这样便于一会统一处理权限问题。
使用hadoop建立test目录,命令 hadoop fs –mkdir /user/root/test
使用命令 hadoop fs –ls /user/root 查看已建立成功
然后将需要用到的文件都转移到test目录下,此处我就用test代表原本的mp2目录了。
首先修改test目录的主人为root:
hadoop fs –chown –R root:root /user/root/test
使用hadoop fs –ls /user/root 查看是否修改成功
然后使用 su – 命令切换回root
之后新建目录及put命令如下,就不一一写了:
至此,准备工作基本完成。
7.Java文件编译及打包
首先新建一个out目录以保存编译文件
之后编译文件到该目录:
javac –classpath $hadoop_CLASSPATH –d out TitleCount.java
进入out目录有文件如下
打包成jar文件:
首先在out的上级目录里建立manifest.mf文件,内容:
Main-class:TitileCount.class
这一点非常重要!指定主类!
然后打包命令: jar cvfM TitleCount.jar manifest.mf –C out/ .
注意最后的点以及大小写,这个生成的jar才能用,仅仅cvf生成的会报错。
8.yarn&结果
在jar包所在目录执行如下命令
yarn jar TitleCount.jar TitleCount –D stopwords=/user/root/test/misc/stopwords.txt -D delimiters=/user/root/test/misc/delimiters.txt /user/root/test/titles result6
命令解析: 前面几个就不说了
TitleCount的setup函数需要的参数stopwords和delimiters, -D代表参数,后面 参数名=参数文件地址 ,文件地址就是put的文件地址,这里是test,可以根据自己的实际情况替换,两个参数都需要-D, 之后的目录是需要的输入titles的地址,最后是结果输出地址,默认在HDFS的/user/root目录下
注意,每执行一次yarn不过成功与否,所以下一次yarn不能用上一次的目录名,否则会报错,这也是为什么会出现6,,由于截图原因,所以结果上result名仅供参考。
这样上面没有保错基本就可以等着出结果了,要有耐心,,需要跑很长时间,,
结果大概如此。
查看输出文件:
输出目录根据自己的实际情况更改
Cat一下如下:
这样应该就是成功了,,