apachespark如何在hadoopmapreduce上实现100倍的加速?在什么情况下?

v9tzhpje  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(322)

ApacheSpark[http://spark.apache.org/]声称在内存方面比apache hadoop快100倍。它是如何实现这种惊人的加速的?这种加速是否只适用于迭代机器学习算法,或者也适用于像join和groupbys这样的etl(提取-转换-加载)任务?spark的RDD(弹性分布式数据集)和Dataframe都能提供这种加速吗?对于上面描述的一些场景,spark社区是否获得了任何基准测试结果?

xeufq47z

xeufq47z1#

apachespark处理内存中的数据,而hadoopmapreduce在执行map或reduce操作后会持久化回磁盘。但是spark需要很多记忆
spark将进程加载到内存中,并将其保留在内存中,直到有进一步的通知,以便缓存。
弹性分布式数据集(rdd),它允许您透明地将数据存储在内存中,并在需要时将其持久化到光盘上。
因为spark使用内存,所以没有同步障碍会让你慢下来。这是spark表现出色的主要原因。
spark不仅可以像mapreduce那样处理一批存储的数据,还可以使用spark流实时处理数据。
dataframesapi的灵感来自于r和python(pandas)中的Dataframe,但它是作为现有rddapi的扩展而设计的。
dataframe是一个分布式的数据集合,它被组织成命名的列,但是在引擎盖下有更丰富的优化,支持spark的速度。
使用rddsspark可以简化join和groupby等复杂操作,在后端,您可以处理零碎的数据。这种碎片化使得spark能够并行执行。
spark允许使用有向无环图(dag)模式开发复杂的多步骤数据管道。它支持跨DAG的内存数据共享,以便不同的作业可以使用相同的数据。DAG是Spark速度的主要组成部分。
spark代码库要小得多。

希望这有帮助。

fgw7neuy

fgw7neuy2#

由于内存处理,spark比hadoop快。但这些数字有一些扭曲的事实。
在某些用例中,spark仍然需要依赖hdfs。
请看一下这张幻灯片,特别是第6张幻灯片和这篇基准测试文章

请看完整的演示文稿。
由于内存处理,spark的实时分析速度更快。hadoop适合于批处理。如果您不担心作业的延迟,仍然可以使用hadoop。
但有一点是肯定的。spark和hadoop必须共存。他们两个都不能取代另一个。

6l7fqoea

6l7fqoea3#

spark在内存中进行数据处理。
不会像map reduce那样有中间文件,因此没有i/o或可忽略不计。
在所有场景中,它的运行速度并不是100倍,特别是当它涉及到连接和排序时。
由于它是内存密集型的,它可以很快饱和集群。在给定的时间点上,您可能能够以100倍的速度运行一个作业,但无法运行使用传统hadoop方法可以运行的那么多作业/应用程序。
RDD和Dataframe是便于处理数据的内部数据结构。RDD是数据的内存数据结构,Dataframe主要是这些RDD的元数据。它们更多的是spark中数据的表示。
这些声明中的大多数问题并没有根据真实的生产用例进行基准测试。可以表示实际业务应用程序的数据中可能有数量,但没有质量。spark可以非常方便地用于流式分析,在流式分析中,您希望近实时地了解数据。但对于真正的批处理,hadoop可以是更好的解决方案,尤其是在商品硬件上。

相关问题