MapReduce简介

就叫阿坤吧 2019-05-13 08:10:00
文章概览: 1、MapReduce简介 2、MapReduce有哪些角色?各自的作用是什么? 3、MapReduce程序执行流程 4、MapReduce工作原理 5、MapReduce中Shuffle过程 6、MapReduce编程主要组件 7、针对MapReduce的缺点,YARN解决了什么? MapReduce是一种并行可扩展计算模型,并且有较好的容错性,主要解决海量离线数据的批处理。实现下面目标 易于编程 良好的扩展性 高容错性   MapReduce有哪些角色?各自的作用是什么? MapReduce由JobTracker和TaskTracker组成。JobTracker负责资源管理和作业控制,TaskTracker负责任务的运行。   MapReduce程序执行流程 程序执行流程图如下:   (1) 开发人员编写好MapReduce program,将程序打包运行。 (2) JobClient向JobTracker申请可用Job,JobTracker返回JobClient一个可用Job ID。 (3) JobClient得到Job ID后,将运行Job所需要的资源拷贝到共享文件系统HDFS中。 (4) 资源准备完备后,JobClient向JobTracker提交Job。 (5) JobTracker收到提交的Job后,初始化Job。 (6) 初始化完成后,JobTracker从HDFS中获取输入splits(作业可以该启动多少Mapper任务)。 (7) 与此同时,TaskTracker不断地向JobTracker汇报心跳信息,并且返回要执行的任务。 (8) TaskTracker得到JobTracker分配(尽量满足数据本地化)的任务后,向HDFS获取Job资源(若数据是本地的,不需拷贝数据)。 (9) 获取资源后,TaskTracker会开启JVM子进程运行任务。 注: (3)中资源具体指什么?主要包含:     程序jar包、作业配置文件xml     输入划分信息,决定作业该启动多少个map任务(splits是如何决定的?)     本地文件,包含依赖的第三方jar包(-libjars)、依赖的归档文件(-archives)和普通文件(-files),如果已经上传,则不需上传   MapReduce工作原理 工作原理图如下: map task 程序会根据InputFormat将输入文件分割成splits,每个split会作为一个map task的输入,每个map task会有一个内存缓冲区, 输入数据经过map阶段处理后的中间结果会写入内存缓冲区,并且决定数据写入到哪个partitioner,当写入的数据到达内存缓冲 区的的阀值(默认是0.8),会启动一个线程将内存中的数据溢写入磁盘,同时不影响map中间结果继续写入缓冲区。在溢写过程中, MapReduce框架会对key进行排序,如果中间结果比较大,会形成多个溢写文件,最后的缓冲区数据也会全部溢写入磁盘形成一个溢写 文件(最少有一个溢写文件),如果是多个溢写文件,则最后合并所有的溢写文件为一个文件。 reduce task 当所有的map task完成后,每个map task会形成一个最终文件,并且该文件按区划分。reduce任务启动之前,一个map task完成后, 就会启动线程来拉取map结果数据到相应的reduce task,不断地合并数据,为reduce的数据输入做准备,当所有的map tesk完成后, 数据也拉取合并完毕后,reduce task 启动,最终将输出输出结果存入HDFS上。   MapReduce中Shuffle过程 Shuffle的过程:描述数据从map task输出到reduce task输入的这段过程。 我们对Shuffle过程的期望是: 完整地从map task端拉取数据到reduce task端  跨界点拉取数据时,尽量减少对带宽的不必要消耗 减小磁盘IO对task执行的影响   先看map端: split被送入map task后,程序库决定数据结果数据属于哪个partitioner,写入到内存缓冲区,到达阀值,开启溢写过程,进行key排序, 如果有combiner步骤,则会对相同的key做归并处理,最终多个溢写文件合并为一个文件。   多个map task形成的最终文件的对应partitioner会被对应的reduce task拉取至内存缓冲区,对可能形成多个溢写文件合并,最终 作为resuce task的数据输入 。   MapReduce编程主要组件 InputFormat类:分割成多个splits和每行怎么解析。    Mapper类:对输入的每对<key,value>生成中间结果。 Combiner类:在map端,对相同的key进行合并。 Partitioner类:在shuffle过程中,将按照key值将中间结果分为R份,每一份都由一个reduce去完成。 Reducer类:对所有的map中间结果,进行合并。 OutputFormat类:负责输出结果格式。   针对MapReduce的缺点,YARN解决了什么? MapReduce由以下缺点: JobTracker挂掉,整个作业挂掉,存在单点故障 JobTracker既负责资源管理又负责作业控制,当作业增多时,JobTracker内存是扩展的瓶颈 map task全部完成后才能执行reduce task,造成资源空闲浪费 YARN设计考虑以上缺点,对MapReduce重新设计: 将JobTracker职责分离,ResouceManager全局资源管理,ApplicationMaster管理作业的调度 对ResouceManager做了HA设计 设计了更细粒度的抽象资源容器Container
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2019-05-13
  • 打赏
  • 举报
回复
感谢分享,建议结贴并把内容写到博客
内容概要:本文围绕“计及V2G主动支撑的光伏-储能-电动汽车输配协同日前优化调度”展开研究,提出了一种综合考虑光伏发电、储能系统与电动汽车(EV)在V2G(Vehicle-to-Grid)模式下协同参与电网调度的优化模型。通过Matlab代码实现,构建了日前优化调度框架,充分挖掘电动汽车作为移动储能单元的潜力,利用其双向充放电能力为主动配电网提供调峰、填谷和备用等主动支撑服务。研究综合考虑了可再生能源出力不确定性、负荷需求波动以及电动汽车出行行为特征,建立了多主体、多目标的协同优化机制,旨在降低系统运行成本、提高新能源消纳水平,并增强电网运行的稳定性与可靠性。该资源属于电力系统与综合能源系统领域的高水平科研复现资料,具备较强的理论深度与工程应用价值; 适合人群:具备电力系统分析、优化建模基础及Matlab编程能力的研究生、科研人员,以及从事智能电网、能源互联网、综合能源系统等相关领域技术研发的专业技术人员; 使用场景及目标:①用于学习和复现源-网-荷-储协同优化调度的核心建模方法与求解流程;②掌握V2G技术在电网调频调峰中的数学建模方法及其在优化调度中的集成应用;③支撑光伏、储能与电动汽车耦合系统的低碳经济调度、鲁棒优化或分布鲁棒优化等前沿课题的研究与仿真验证; 阅读建议:建议结合文中提供的Matlab代码与主流优化工具箱(如YALMIP、CPLEX、Gurobi等)进行实践操作,重点理解目标函数设计、约束条件构建及多变量耦合关系的处理策略,同时可进一步拓展至日内滚动优化、实时调度或多时间尺度协调优化方向开展深入研究。
内容概要:本文提出了一种基于改进自适应完备集合经验模态分解(Improved Adaptive Complete Ensemble Empirical Mode Decomposition, ICEEMDAN)的混合储能辅助火电机组调频协同控制策略,并提供了完整的Matlab代码实现。该策略利用ICEEMDAN对电网频率波动信号进行高精度自适应分解,提取不同时间尺度下的功率分量,进而合理分配火电机组与混合储能系统(如蓄电池、飞轮等)的调频任务,充分发挥各自响应速度快慢互补的优势。通过引入优化算法对功率分配系数进行动态整定,实现了调频过程中储能系统的高效协同运行,有效抑制了功率波动,提升了系统频率调节的快速性、稳定性和调节精度,同时延长了储能设备的使用寿命。文中详细阐述了算法原理、模型构建、控制逻辑设计及仿真验证过程,具有较强的可复现性与工程应用价值。; 适合人群:具备电力系统自动化、新能源并网控制或智能优化算法等相关专业知识背景,熟悉Matlab/Simulink仿真平台的技术人员,特别适用于从事电网调频、储能系统控制、信号处理在电力系统中应用等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入研究混合储能系统在提升传统火电机组调频性能中的作用机制;②掌握ICEEMDAN等先进非平稳信号处理方法在功率动态分解中的具体实现与参数调优;③构建火电机组-储能协同调频仿真模型,开展多工况对比分析以优化控制性能;④为相关学术论文复现、科研项目申报或实际工程方案设计提供可靠的技术参考与代码支持。; 阅读建议:建议结合Matlab代码逐模块阅读文档内容,重点关注ICEEMDAN的实现流程、IMF分量筛选规则、功率分配权重计算逻辑及整体控制架构的设计思路。读者可通过调整信号噪声水平、滤波参数、储能容量配置等变量进行仿真实验,对比不同策略下的调频效果,从而深化对协同控制机理的理解,并可进一步拓展至风光火储联合系统或多时间尺度协调控制的研究场景。

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧