我听说Spark由于火花的内存计算而优于hadoop。然而,一个明显的问题是并非所有数据都可以放入一台计算机内存中。因此,Spark仅限于较小的数据集。与此同时,还有火花星团的概念。因此,我没有遵循火花优于hadoop MR的所谓优势。
由于
答案 0 :(得分:3)
Hadoop MapReduce长期以来一直是Hadoop批处理作业的中流砥柱。然而,出现了两种非常有前景的技术Apache Drill,它是一种用于自助数据探索的低密度SQL引擎和Apache Spark,它是一种允许您运行批处理的通用计算引擎群集上的交互式和流式传输作业使用相同的统一帧。让我们再深入了解Spark。
要了解Spark,您必须了解三大概念。
RDD提出的一件事是,当我们回到他们身上时,他们是弹性的,并且在主内存中,他们如何与分布式共享内存架构和我们过去熟悉的大部分内容进行比较?有一些差异。让我们以简短的方式与他们一起去。首先,RDD中的写入是Spark的核心。它们发生在RDD级别。分发器共享内存中的写入通常是细粒度的。读取和分配器共享内存也是细粒度的。用RDD写的可以是精细的或者是粗粒度的。
第二部分是恢复。如果系统中有一个部分会发生什么,我们如何恢复它?由于RDD会在出现问题时构建此谱系图,因此可以根据该图返回并重新计算并重新生成RDD。 Lineage在RDD中非常强烈地用于恢复。在分发者共享的记忆中,我们通常会回到间隔完成的检查指示或任何其他语义检查指向机制。 RDD中的一致性相对微不足道,因为它下面的数据被认为是不可变的。但是,如果数据发生变化,那么一致性将成为问题。分发器共享内存不会对可变性做出任何假设,因此会将一致性语义留给应用程序来处理。
最后让我们看一下Spark的好处:
此时出现了一个问题。如果Spark非常棒,那么Spark实际上会取代Hadoop吗?答案显然是否定的,因为Spark为您编写大数据应用程序提供了一个应用程序框架。但是,它仍然需要在存储系统或无SQL系统上运行。
答案 1 :(得分:2)
Spark
永远不会局限于较小的dataset
,而且并非总是in-memory
计算。 Spark
的数字更高APIS
。 Spark
也可以处理GB
。在我的实时经验中,我使用Spark来处理流应用程序,我们通常在GB/Hour
基本获取数据。我们在Spark
中使用了Telecommunication
来处理更大的dataset
。请检查RDD Persistence如何容纳更大的datasets
。
答案 2 :(得分:2)
在真实世界问题的情况下,我们无法通过一个具有Mapper类和reducer类的MapReduce程序来解决它们,我们主要需要构建一个管道。管道将由多个阶段组成,每个阶段都有MapReduce程序,并且一个阶段的输出将被馈送到后续阶段一次或多次。这是一个痛苦,因为它涉及的IO数量。
在MapReduce的情况下,存在这些Map和Reduce任务,在此之后存在同步障碍,并且需要将数据保存到光盘。 MapReduce框架的这一特性是为了在失败的情况下可以恢复作业而开发的,但缺点是,它不会最大限度地利用Hadoop集群的内存。当你的管道中有迭代算法时,这会变得更糟。每次迭代都会导致大量的磁盘IO。
因此,为了解决这个问题,Spark引入了一个名为 RDD 的新数据结构。 DS可以保存信息,例如如何从磁盘读取数据以及计算内容。 Spark还提供了简单的编程范例,通过转换RDD来创建管道( DAG )。你得到的是一系列知道如何获取数据和计算内容的RDD。
最后,当调用Action时,Spark框架在内部优化管道,将可以一起执行的部分(映射阶段)组合在一起,并从逻辑管道创建最终优化的执行计划。然后执行它。它还为用户提供了选择想要缓存的用户数据的灵活性。因此,与MapReduce相比,spark能够实现近10到100倍的批处理速度。
答案 3 :(得分:2)
Spark优于hadoop。
请按照此处详细了解http://bytepadding.com/big-data/spark/understanding-spark-through-map-reduce/