做特殊单页的网站,外贸在哪个网站做,dw学校网站制作教程,php做的购物网站大数据学习
#x1f525;系列专栏#xff1a; #x1f451;哲学语录: 承认自己的无知#xff0c;乃是开启智慧的大门 #x1f496;如果觉得博主的文章还不错的话#xff0c;请点赞#x1f44d;收藏⭐️留言#x1f4dd;支持一下博主哦#x1f91…大数据学习
系列专栏 哲学语录: 承认自己的无知乃是开启智慧的大门 如果觉得博主的文章还不错的话请点赞收藏⭐️留言支持一下博主哦 mapreduce本身工作原理相对于spark来说简单很多计算过程大概包括map阶段和reduce阶段。
一、任务启动阶段
Client用户端发起请求 MapReduce作业的启动由Client端即用户或应用程序发起。Client端会提交作业请求包括作业的配置信息、输入数据的位置等。资源申请与分配 YarnRunner接受Client端的请求并向ResourceManager申请所需的资源。ResourceManager检索当前集群的资源情况为作业分配资源路径并通知YarnRunner。作业分片与MRAppMaster启动 YarnRunner根据输入数据的大小和集群的配置对输入数据进行分片split每个分片将作为一个Map任务的输入。YarnRunner申请启动MRAppMaster该组件负责监控和管理整个作业的执行过程。MapTask启动 ResourceManager根据分片和作业信息选择数据所在的节点启动MapTask。MapTask在数据所在的节点上运行以减少数据传输的开销。
二、Map阶段
数据读取与处理 每个MapTask读取自己节点上的分片数据并进行处理。处理过程包括数据的split、map函数的执行、数据的分区等。在map函数中输入数据被转换为键值对key-value pair的形式并经过自定义的map逻辑处理输出新的键值对。数据写入环形缓冲区 MapTask的输出结果首先写入一个内存环形缓冲区。当缓冲区中的数据量达到一定的阈值时如80%会触发一个溢写spill操作将数据写入磁盘。数据排序与合并 在溢写过程中MapReduce框架会对数据进行排序和合并操作。排序是基于key进行的以确保相同key的数据能够聚集在一起。合并操作是将多个溢写文件合并为一个有序的文件以减少后续处理的数据量。
三、Shuffle阶段
数据分发 Shuffle阶段负责将MapTask的输出结果分发到相应的ReduceTask。分发过程是基于key的分区进行的确保相同key的数据被发送到同一个ReduceTask。数据排序与归并 在ReduceTask端接收到的数据会进行进一步的排序和归并操作以确保数据的正确性和有序性。
四、Reduce阶段
ReduceTask启动 当MapTask全部完成后MRAppMaster会申请启动ReduceTask。ReduceTask的数量由作业的配置决定通常与Reduce的输出结果数量相关。数据处理与输出 ReduceTask对接收到的数据进行处理包括合并相同key的value列表、执行自定义的reduce逻辑等。处理完成后ReduceTask将结果写入到HDFS或其他存储系统中。
五、任务结束阶段
监控与汇报 MRAppMaster持续监控每个Reduce节点的执行情况并在所有任务完成后向上汇报。资源释放与任务结束 ResourceManager注销MRAppMaster并释放其占用的资源。YarnRunner接收任务执行完成的信息并返回给Client端。Client端接受信息后表示作业执行完成。
MapReduce的工作流程是一个复杂而有序的过程涉及多个组件和阶段的协同工作。通过合理的配置和优化MapReduce可以高效地处理大规模数据满足各种数据处理和分析的需求。