zoukankan      html  css  js  c++  java
  • 大数据引擎分代

    大致可以将大数据的计算引擎分成了 4 代。

    1. 第一代的计算引擎,无疑就是Hadoop承载的MapReduce。它将每个JobApp都被设计为两个阶段,分别为Map和Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个App的串联,才能完成一个完整的算法,例如迭代计算,不够灵活,中间计算结果涉及到磁盘shuffle,影响效率。

    Hadoop设计理念来自Google的三篇论文的启发催生了下列组件
    HDFS:分布式存储【在役】
    MapReduce:分布式结算【退役】
    Hbase:分布式查询【在役】

    1. 由于第一代的弊端,催生了支持 DAG 框架的产生,实现了DAG定义与算子的解耦。因此,支持用户在算子外部自定义 DAG 的框架被划分为第二代计算引擎。如 Tez 以及更上层的 Oozie。这里我们不去细究各种 DAG 实现之间的区别,不过对于当时的Tez和Oozie来说,大多还是批处理的任务。

    2. 接下来就是以Spark为代表的第三代的计算引擎。第三代计算引擎的特点主要是一个App内部支持多个Job,每个Job可以代表一套完整的数据处理流程(用Job完成一个完整流程的隔离),并实现了Job内嵌DAG,以及强调的实时计算。在这里,很多人也会认为第三代计算引擎也能够很好的运行批处理的 Job。

    Spark中几个概念的作用范围:App > Job > Stage > Operator > Task,从左至右都是1对多的关系。

    1. 随着第三代计算引擎的出现,促进了上层应用快速发展,例如各种迭代计算的性能以及对流计算和SQL等的支持。Flink的诞生就被归在了第四代。这应该主要表现在Flink对实时流计算的支持,以及更进一步的实时性上面。当然Flink也可以支持Batch的任务,以及DAG的运算。当然与Spark相比Flink还做了其他优化设计,比如更好的JVM内存管理(Flink并没有将全部内存交给App管理,避免了在Spark中较频发的OOM)。
  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/mtxcat/p/14021117.html
Copyright © 2011-2022 走看看