在Hadoop的环境里面我们测试一个文件,对西游记这个书籍里面的所有词语,进行统计排序。hadoop包括两个核心组成:HDFS:分布式文件系统,存储海量的数据MapReduce:并行处理框架,实现任务分解和调度。
hadoop运行机制
MapReduce工作原理
首先我们准备四个文件,在自己Windows里面已经写好的,或者是从其他地方copy过来的(涉及一些参数和路径的修改)
点击下载这四个参考文件
前面两文件是实现我们的文章词组的分割处理和排序处理(Python文件),后面的一个是执行文件,最后一个是西游记里面的文章,这个里面已经利用pycharm的jieba 库做好的文字的处理,只有词组和空格,没有标点符号和其他的东西。
准备:
首先打开虚拟机,启动Hadoop
这样就启动成功了,有的时候我们很容易忽略这个,我的这台机器配置了,开机自启动,所以打开虚拟机就会自己启动,但是如果没有的话我们就需要利用下面的代码
start-all.sh
之后等待启动OK,再去查看即可
实验过程
思路:
1.首先把文件上传到我们的虚拟机home目录,然后对其中三个文件权限进行修改。
2.修改run.sh 里面的参数,Hadoop文件路径,Python文件路径。
3.上传我们文件到hdfs本地
实验过程:
1.首先我们在home目录里面新建一个test1的文件夹,然后把这四个文件拖到我们新建的这个文件夹里面。然后我们去修改其中2个Python文件的内容,一个sh的文件路径即可
whw@whw-hadoop:~/test1$ chmod 777 mapper.py whw@whw-hadoop:~/test1$ chmod 777 reduce.py whw@whw-hadoop:~/test1$ ll 总用量 1420 drwxr-xr-x 2 whw whw 4096 9月 25 23:44 ./ drwxr-xr-x 21 whw whw 4096 9月 28 22:02 ../ -rwxrwxrwx 1 whw whw 546 9月 25 23:44 mapper.py* -rwxrwxrwx 1 whw whw 1038 9月 25 23:44 reduce.py* -rwxrw-rw- 1 whw whw 275 9月 25 23:42 run.sh* -rwxrw-rw- 1 whw whw 1431328 9月 24 21:45 xyj_stopwords.txt* whw@whw-hadoop:~/test1$
2.然后我们再去本地的hdfs里面创建一个test1的文件
whw@whw-hadoop:~$ hdfs dfs -mkdir /test1 mkdir: `/test1': File exists whw@whw-hadoop:~$
我这里的文件已经存在了,可以通过这个命令去验证一下
hdfs dfs -ls /test1
然后把我们已经处理好一部分的西游记文件上传到hdfs 本地文件
hdfs dfs -copyFromLocal /home/whw/test1/xyj_stopwords.txt /test1/
注意copyFromLocal的大小写,然后就是我们的这个文件路径,我们直接点击该文件的属性,复制路径和文件名即可,再去终端粘贴,最后一步就是把这个文件放在那里,我们放在本地的test1的文件夹下面,注意后面加了一个/,如果不加这个,就会给这个文件重命名了。
查看
hdfs dfs -ls /test1/
hdfs dfs -cat /test1/xyj_stopwords.txt
3.修改run.sh
首先找到Hadoop的文件路径
sudo find / -name hadoop-stream*
修改完毕
注意由于我之前测试过一次,所以输出文件已经重复了如果去执行文件的时候,发现以下页面,我们只需要把之前的那个run.sh 里面的那个输出的result改成results即可!!
现在我们执行,但是必须在test终端打开
./run.sh
我们可以在闲暇之余,我们可以看看执行的过程,我们在我们的浏览器里面输入,回车即可
127.0.0.1:0880
也可以查看我们Hadoop的配置以及其他参数
结果查看
hdfs dfs -ls /st1/results
hdfs dfs -cat /test1/results/文件名
这里的文件名是我们输入第一条命令的时候会出现一个part文件,把这个文件名名字复制粘贴过来即可
最后注意关闭我们的Hadoop机器
stop-all.sh