大数据学习笔记-------------------(2)

网友投稿 306 2022-11-17

大数据学习笔记-------------------(2)

第2章 Spark弹性分布数据集

2.1 弹性分布式数据集

弹性分布式数据集(Resilient Distributed Datasets(RDD))是spark的一种基本的数据结构。RDD是一个对象不可变的分布式集合。在RDD里的每个数据集被划分成逻辑分区,这写数据集可能在集群中的不同节点上进行计算。RDD可以包含Python、Scala、Java任意类型的对象,甚至用户定义的类。

形式上,一个RDD是一个只读分区记录的集合。RDD通过对表存储结构上的数据或其他的RDD确定操作被创建。 RDD是一个可以并行操作元素的容错集合。

有两种方法创建RDD:并行驱动程序中存在的集合;引用外部存储系统的一个数据集,例如系统共享文件、HDFS、HBase或者提供Hadoop输入格式的

任何数据源。

Spark利用RDD的概念去实现更快和高效的MapReduce操作。让我们先讨论怎么使MapReduce的操作发生?为什么它们不是那么高效?

2.2 MapReduce数据分享效率低

MapReduce被广泛用于处理和生成一个大数据集,该大数据集是通过在一个集群上进行并行的分布式计算产生的。它允许用户编写并行计算,使用一组高层次的operator,而不必担心工作分配和容错。

不幸的是,当前大多数框架,重用计算(例:二MapReduce任务之间)数据的唯一方法是将其写入外部稳定的存储系统(例如:HDFS)。虽然这个框架为访问集群的计算资源提供了大量的抽象,但用户仍然想要更多。

迭代和交互式应用需要通过并行job来满足更快速的数据共享。在MapReduce上进行数据共享是缓慢,由于replication,序列化和磁盘IO。关于存储系统,大部分的Hadoop应用,它们花费90%以上的时间做HDFS读 - 写操作。

2.3 MapReduce进行迭代操作

重用多级应用程序在多个计算的中间结果。下图说明了目前的框架是如何工作的,同时做MapReduce的迭代操作。由于数据复制,磁盘I/ O和系列化,使系统变慢。

2.4 MapReduce进行交互操作

用户对相同的数据子集执行ad-hoc(点对点)查询。每个查询会对表存储做磁盘I / O操作,它严重影响应用程序执行时间。下图说明了目前的框架,同时MapReduce做交互查询的工作方式。

2.5 Spark RDD数据分享

RDD支持在内存中处理数据。这意味着,它存储横跨的作业的对象的内存状态和对象那些作业之间共享。在内存中的数据共享是网络和磁盘的10到100倍。

在Spark RDD上进交互和迭代操作。

2.6 Spark RDD 迭代操作

下面给出的图显示SparkRDD迭代操作。它把中间结果存储在分布式内存中而不是Stable存储器中(磁盘),这样会使系统更快。

注意:如果分布式内存(RAM)足以存储中间结果(作业状态),那么它会在内存上存储这些结果。

2.7 Spark RDD交互操作

此图显示Spark RDD交互式操作。如果不同查询在同一组数据上反复运行,该特定数据可被保存在内存中为了更好的运行。

默认情况下,每个变换的RDD在每次运行其上的动作被重新计算。然而,也可能会持续一个RDD在内存中,在这种情况下,为了更快地访问,Spark将保持元素周围的群集上,在查询它的下一次。同时还支持在磁盘上保存RDD,或跨多个节点的复制。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot如何通过session实现单点登入详解
下一篇:LED驱动控制专用电路VK1650概述及功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~