Hadoop入门——MapReduce 缺乏、安全感 2021-09-27 05:04 450阅读 0赞 # # ### (1)简介 ### MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单。 这两个函数的形参是key、value对,表示函数的输入信息。 ### (2)原理 ### ![70][] ### (3)执行步骤 ### 1. map任务处理 1.1 读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。 1.2 写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。 2.reduce任务处理 2.1 在reduce之前,有一个shuffle的过程对多个map任务的输出进行合并、排序。 2.2写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。 2.3 把reduce的输出保存到文件中。 ### (4)MapReduce过程各个角色的作用 ### jobClient:提交作业; JobTracker:初始化作业,分配作业,TaskTracker与其进行通信,协调监控整个作业; TaskTracker:定期与JobTracker通信,执行Map和Reduce任务; HDFS:保存作业的数据、配置、jar包、结果; ### (5)任务分配 ### TaskTracker与JobTracker之间的通信和任务分配是通过心跳机制实现的 TaskTracker会主动定期向JobTracker发送心态信息,询问是否有任务要做,如果有,就会申请到任务。 ### (6)任务执行 ### 1.如果TaskTracker拿到任务,会将所有的信息拷贝到本地,包括代码、配置、分片信息等; 2.TaskTracker中的localizeJob()方法会被调用进行本地化,拷贝job.jar,jobconf,job.xml到本地; 3.TaskTracker调用launchTaskForJob()方法加载启动任务; 4.MapTaskRunner和ReduceTaskRunner分别启动java child进程来执行相应的任务; ### (7)状态更新 ### 1.Task会定期向TaskTraker汇报执行情况; 2.TaskTracker会定期收集所在集群上的所有Task的信息,并向JobTracker汇报; 3.JobTracker会根据所有TaskTracker汇报上来的信息进行汇总; ### (8)错误处理 ### JobTracker失败 存在单点故障,hadoop2.0解决了这个问题; TraskTracker失败 TraskTracker崩溃了会停止向JobTracker发送心跳信息; JobTracker会将TraskTracker从等待的任务池中移除,并将该任务转移到其他的地方执行; JobTracker将TaskTracker加入到黑名单中; Task失败 任务失败,会向TraskTracker抛出异常; 任务挂起; ### (9)JobTracker ### 负责接收用户提交的作业,负责启动、跟踪任务执行。 JobSubmissionProtocol是JobClient与JobTracker通信的接口。 InterTrackerProtocol是TaskTracker与JobTracker通信的接口。 ### (10)TaskTracker ### 负责执行任务 ### (11)JobClient ### 是用户作业与JobTracker交互的主要接口。 负责提交作业的,负责启动、跟踪任务执行、访问任务状态和日志等。 ![70 1][] [70]: /images/20210923/10664f7f52b748a2be37284b961769f0.png [70 1]: /images/20210923/c7768bb1d96e449d92cfd4219a83f471.png
还没有评论,来说两句吧...