在未来,当管理员搭建服务器的时候,他或者她很可能会给服务器堆栈、数据库、中间件软件装上MapReduce,根据国外认证报道显示MapReduce可以在服务器上直接被用来分析日志数据,并不需要是在各个集群上单独分析,也可以大幅缩短分析数据的时间,本文将是跟大家进行MapReduce工作原理讲解,有在学习的朋友们可以参考学习一下。
第一部分:首先我们来看看MapReduce工作原理是怎样的,掌握了解之后将会是对MapReduce更加理解。
MapReduce角色
•Client:作业提交发起者。
•JobTracker:初始化作业,分配作业,并且是与TaskTracker通信,最后是协调整个作业。
•TaskTracker:保持JobTracker通信,在分配的数据片段上执行MapReduce任务。
提交作业
•在作业提交之前,是需要对作业进行配置
•程序代码,主要是自己书写的MapReduce程序。
•输入输出路径
•其他配置,比如输出压缩等这些
•当配置完成后,可以是通过JobCliNET来进行最后的一个提交
作业的一个初始化
•当客户端提交完成后,JobTracker它就会将作业加入到队列里面,然后是进行调度,它的默认的调度方法是FIFO调试方式。
任务的分配
•需要知道TaskTracker和JobTracker它们之间的通信与任务的分配它是通过心跳机制完成的。
•有趣的是TaskTracker它是会主动向JobTracker询问是否是有作业是需要完成的,若自己是可以做的,则就会申请到作业任务,这个任务可以使Map也可能是Reduce任务。
任务的一个执行过程
•当申请到任务后,TaskTracker它就会做如下事情:
(1)需要是拷贝代码到本地
(2)拷贝任务的信息到本地
(3)启动JVM运行任务
状态与任务的更新
•任务在运行过程中,它是首先会将自己的状态汇报给TaskTracker,然后由TaskTracker汇总告之JobTracker。
•需要知道的是任务的一个进度是通过计数器来实现的。
最后是作业的完成
•JobTracker它是在接受到最后一个任务运行完成后,它才会将任务标志为成功。
•这个时候会做删除中间结果等善后处理工作。
总的来说,需要了解的是MapReduce是一种编程的模型,并且是用于大规模数据集(大于1TB)的并行运算。从基本的概念“Map(映射)”和“Reduce(化简)”和他们的主要思想,这些都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。可以方便编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
上一篇:云计算基础 | 什么是云计算?
下一篇:云计算的服务体现在哪几点?
¥199.00
¥199.00
¥10500.00
¥199.00