本文将完整介绍一个Hadoop Streaming的程序wordcount的运行过程,Hadoop的工作原理等请自行查找资料。
为了能够运行一个简单的程序,需要这些文件。
这里以C++为例,mapper程序和reducer程序都用C++编写
当然cpp文件是不能直接在streaming中使用的,需要先进行编译,输入如下命令:
可以看到编译后出现两个可执行文件。
data.txt内时输入的数据:
为了方便调用hadoop-streaming.jar,还需要把hadoop-streaming.jar拷贝一份到程序目录下,如首图红色字样所示。
testc.sh文件内是要使用hadoop所用到的指令
这里强调一下,output文件夹一定不能存在,因此,不管有没有先在第一句指令里删掉它。
使用-put命令将输入数据data.txt上传到hadoop上,使用-file分发的是mapper.exe和reducer.exe而非mapper.cpp和reducer.cpp!
hadoop计算输出的结果在output文件夹中,以part*的格式。这里把它下载来下后改成output.txt,也即output.txt中是我们的结果。
其他人在编写.sh文件时,注意改变相关的文件路径。
需要注意的是用vi创建testc.sh文件后,testc.sh此时仅仅只是一个文本,如果要执行它的话还需要赋予可执行权限。
执行
>>./testc.sh
最后的输出结果
刚刚入门的新手赶快拿回去试试吧~~