举一个非常简单的例子,通过mapreduce计算单词数量,下面为相关代码:
1)准备环境,创建一个java工程,导入相关hdfs jar包,这些so easy 不在复述。
2)首先我们都知道mapreduce框架,经过2个阶段,一个map阶段一个reduce阶段,所以我们首先要创建一个map来整理我们的单词和数量然后通过reduce来计算我们的单词相关总数。相关代码如下:
我们可以把上面工程打成jar包,然后在我们hadoop环境中执行,此时我们可以通过jps命令查看相关进程。执行过程如下图
由上图客户端执行mian函数启动,此时启动runjar进程,整理我们所要处理的文件信息,并将这些信息提交给resourceManager框架,resourceManager得知客户端请求,经过处理返回给客户端一个jobId,和提交job的hdfs的文件路径,客户端得知路径将hdfs相关文件提交给job,通过yarn进行资源调度,将返回的job信息加入到resourceManage的执行队列中,nodeManager执行检测resourceManage job情况,通过yarn调度分配nodeManager资源计算空间然后汇报resourceManger创建情况,然后resourceManager启动mrAppMaste进程,然后从resourceManager中获取资源信息,mapTask进行业务计算,然后启动reduceTask进程进行整理计算结果,然后将结果反馈给resourcemanager,将结果写入文件。在此过程中相关进程如果闲置将自动消亡。