美文网首页我爱编程
Hadoop仿真器的演进

Hadoop仿真器的演进

作者: 0过把火0 | 来源:发表于2018-01-27 21:08 被阅读60次

    转载注明出处 [过把火]:https://www.jianshu.com/p/b9ba99a4daad

    可能全网搜到Hadoop最多的就是安装配置教程或是使用方法(当然我也写过类似博文),今天主要围绕Hadoop的仿真器进行一次全面的总结。[参考高性能计算发展与应用]

    Simulator?

    Hadoop仿真器是干什么用的?
    回归到 “仿真器” 一词的本质:

    百度百科:仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟系统(Computer Simulation)的区别在于,仿真器致力于模仿系统的外在表现、行为,而不是模拟系统的抽象模型。

    维基百科:模拟器(Emulator),也有译作仿真器,是指主要通过硬件或软件使得一台计算机系统(称作主host)在行为上类似于另一台计算机系统(称作客户guest)。模拟器一般允许在主系统上运行给客户系统设计的软件或者外设。模拟**(emulation)是指在一台电子设备或一个计算机程序能够模拟(emulateor imitate)另外一台设备或程序。例如:很多制造商生产的打印机模拟惠普LaserJet打印机,使得大量设计给惠普打印机的软件也能在这些品牌打印机上使用;在PC上运行虚拟机执行其他操作系统或者电视游戏;虚拟光驱;一些基于FPGA的硬件模拟器。

    显然维基百科是解释的要清楚些,那么以Hadoop仿真为例,其含义就是利用某种数学或是统计方法来对整个Hadoop-MapReduce的流程进行模拟,并且能够以输出某种指标为目的来走完整个模拟流程。例如当下最广泛的就是以仿真时间,或者用个diaodiao的词,那就是预测

    仿真难点

    对于MapReduce流程的仿真理论上不算困难,因为MR的执行原理很固定,并且每一阶段最关键的数据流的改变方式也是固定的,无非加上一些Hadoop的参数影响,但是总归是有章可循。
    真正的难点在于,需要考虑真实场景下的资源竞争或是其他资源因素导致的Task延时。我们都知道并行计算的总时间由最后一个Task的执行时间来决定,因此,实际场景下的Task并行并不会跟理想情况下一模一样。那么仿真器如何去完成这些延时的仿真呢?目前大多是基于统计规律的仿真,这样的统计规律一定程上依赖于你获取样本的集群配置,没有哪家公司愿意投入成千上万的集群去做这样的事情,所以,目前的研究成果并不能完全适用于大规模集群。

    Hadoop1仿真器

    1 Mumak

    Mumak是Apache官方原生的Hadoop时间模拟器。它为Hadoop MapReduce 调度器高负载运行的情况下,建立一个连续的事件模拟环境,Mumak由下面这些组件组成:客户端模拟器、Job Tracker模拟器,Task Tracker模拟器和模拟器引擎。模拟器引擎在实际运行中维持一个事件队列,管理所有的事件和内部组件。当系统程序运行
    事件发生后,会触发执行相应的处理程序。HeartBeat Event是多种多样的(心跳事件是指Task Tracker发送给Job Tracker的一种特殊事件),TaskCompletion Event(任务完成事件表征了发送给Task Tracker的Map 任务或者Reduce任务的成功或失败),JobSubmission Event(作业提交事件是指Job Client向Job Tracker提交了一份作业)。Job Tracker模拟器接收所有的Task Tracker发送来的心跳信息,它跟踪当前作业进度,将调度器的调度信息进行合并,然后做出作业调度的决策。下图展示了Mumak的基本架构。



    目前,Mumak只能根据最近完成的任务日志信息来进行模拟。然而,在模拟过程中,一些系统设置,比如说,节点数量、每个节点的处理能力,这些是不能被改变的。它只能在当前设置下进行调试和模拟。所以,它可以模拟的环境非常有限。总而言之,Mumak不支持不同数量的节点,不能模拟网络负载,磁盘负载和shuffle阶段。

    2 MRPerf

    MRPerf在有些论文中也叫他MRPrf,反正pref就是代表performance的意思。
    MRPerf的目标是在MapReduce子阶段层提供一个细粒度的模拟。MRPerf有两个简单的假设:第一,一个节点的资源在同时进行的任务之间是公平共享的;第二,它不能模拟操作系统层指令的异步预取。
    MRPerf采用包级别的模拟,它的主要工作是给map和reduce任务建模,管理它们相关的输入、输出数据,做出调度决策,模拟磁盘和CPU负载。为了使用模拟器,使用者必须提供四个文件:节点说明文件、集群拓扑文件、数据分布文件和任务描述文件。得到的输出信息是各个层的执行跟踪信息,它提供了任务执行时间、传输数据量和任务每个阶段所用时间的一个排序等等。MRPerf的基本结构如下图所示。



    目前,MRPerf仅限于模拟每个节点只有单独的存储设备,并且输入数据只有一个副本的情况。它不能模拟推测执行,推测执行是目前执行效果很好一种优化方法。模拟器不支持一些高级异常,比如:一个节点工作得比其它节点慢或者是任务的部分失效等问题。

    3 SimMR

    SimMR,它可以为Job Tracker的决策和任务槽在多个并发任务间的分配进行建模。
    SimMR工作过程如下。首先,它通过存储在Job Tracker上每个作业的末尾的处理计数器和日志来产生作业跟踪信息,然后把他们存储在跟踪数据库中,跟踪信息可以反映出在特定集群中MapReduce任务的工作负载。然后模拟器引擎从数据库中读取作业跟踪信息,并在模拟周期中管理所有的具体事件,运行反馈事件处理器。SimMR是在任务一级来模拟作业,不像MRPerf那样模拟Task Tracker的细节。
    SimMR的重点是调度策略。它可以使用不同的调度和资源分配策略,但是, 就像
    Mumak,它的使用受限于已完成任务的日志信息。同样,给定一个任务,在不同的工作负载的情况下,SimMR的工作效果还是不足够好。此外,它不支持网络拓扑。

    4 MRSim

    MRS im是一个基于特定事件的模拟器, 它旨在Hadoop环境中模拟数据挖掘算法。它使用SimJava来精确的模拟在集群中不同实体间的交互。MRSim使用GridSim作为基础工具来模拟网络拓扑和网络负载,但是它只在本地机架上模拟数据分片的位置和各个数据分片的备份,这限制了它的使用。在开始模拟之前,MRSim需要两个文件:集群拓扑文件和作业说明文件。前者通过键值对记录了拓扑信息,后者记录了一些MapReduce任务的参数。例如:map任务槽数,reduce任务槽数等。所以,它可以让用户设计最好的配置来在具体的算法上获得最佳性能。

    5 SimMapReduce

    这个成果还是我的小老板留学期间的成果,做的也是非常好的。
    SimMapReduce被设计成为一个方便被其他包所使用的工具箱,它考虑了数据本地性以及map与reduce之间的一些依赖关系,例如Hash决定的shuffle阶段的数据copy路径。但是其唯一不足是忽略对网络性能的仿真。

    Hadoop2仿真器

    YARNSim

    Hadoop2的重大革命在于资源调度组建被YARN所取代,至此,Hadoop成为真正意义上的大数据存储与处理的利器。
    对于YARN的仿真,目前最为出名的就是YARNSim,这是伊利诺伊理工大学孙贤和老师团队的成果。孙贤和教授是IEEE的院士,孙教授一生致力于计算性能的提升及优化,博士论文提出的CPU三级缓存颠覆了计算机界,暑期有幸在清华跟着孙老师完成暑期学校的学习。
    YARN模式下的调度变得更为复杂,使得仿真难度加大。YARNSim是Task级别的仿真,其最大特点是能够灵活修改参数以匹配各个阶段,但是对于Shuffle阶段的网络传输部分,依旧存在缺陷。

    目前为止,成果发表在较为顶级的会议及期刊的模型也就上述几个,且对于Hadoop2的仿真寥寥无几,我个人猜测是Spark的出现让人们的目光出现转移。已有的成果中,基本都缺乏对网络传输的仿真,原因也很简单,实验所用的集群过小,即使存在交换机,但其负载并没有很显著,因此该部分得不到有效的观测。

    相关文章

      网友评论

        本文标题:Hadoop仿真器的演进

        本文链接:https://www.haomeiwen.com/subject/ncloaxtx.html