鍍金池/ 教程/ 大數(shù)據(jù)/ Apache Spark RDD
Spark 安裝
Spark編程
Spark核心編程
Spark教程
Apache Spark RDD
Spark部署

Apache Spark RDD

彈性分布式數(shù)據(jù)集

彈性分布式數(shù)據(jù)集(RDD)是Spark的基本數(shù)據(jù)結(jié)構(gòu)。它是對象的不可變的分布式集合。在RDD中每個數(shù)據(jù)集被劃分成邏輯分區(qū),這可能是在群集中的不同節(jié)點上計算的。RDDS可以包含任何類型,如:Python,Java,或者Scala的對象,包括用戶定義的類。

形式上,一個RDD是只讀的,分割的記錄集。RDDs 可以數(shù)據(jù)創(chuàng)建通過確定運算在穩(wěn)定的存儲或其他RDDs 。RDD是可以并行進行操作元素的容錯集合。

有兩種方法來創(chuàng)建RDDs ? 并行現(xiàn)有集合中的驅(qū)動器程序,或在外部存儲系統(tǒng)引用的數(shù)據(jù)集,如共享文件系統(tǒng),HDFS,HBase,或任何數(shù)據(jù)源提供Hadoop的輸入格式。

Spark利用RDD概念,以實現(xiàn)更快,更高效的MapReduce作業(yè)。讓我們先討論MapReduce如何操作,為什么不那么有效。

數(shù)據(jù)共享是緩慢的MapReduce

MapReduce被廣泛用于處理和生成大型數(shù)據(jù)集并行,分布在集群上的算法。它允許用戶編寫并行計算,使用一組高層次的操作符,而不必擔心工作分配和容錯能力。

遺憾的是,目前大多數(shù)的框架,只有這樣,才能重新使用計算(前 - 兩個MapReduce工作之間)之間的數(shù)據(jù)是將其寫入到一個穩(wěn)定的外部存儲系統(tǒng)(前- HDFS)。雖然這個框架提供了大量的抽象訪問群集的計算資源,但用戶還是想要更多。

這兩個迭代和互動應用需要跨并行作業(yè)更快速的數(shù)據(jù)共享。數(shù)據(jù)共享MapReduce是緩慢的,因為復制,序列化和磁盤IO。在存儲系統(tǒng)中,大多數(shù)的 Hadoop 應用,它們花費的時間的90%以上是用于做HDFS讀 - 寫操作。

MapReduce的迭代操作

重復使用多個計算中間結(jié)果在多級的應用程序。下圖說明了如何在當前的框架工作,同時做迭代操作上的MapReduce。這會帶來大量的開銷,由于數(shù)據(jù)復制,磁盤I / O,和系列化,使系統(tǒng)變慢。

Iterative Operations on MapReduce

MapReduce的交互式操作

用戶運行即席查詢,數(shù)據(jù)的相同子集。每個查詢會做穩(wěn)定存儲,它可以主宰應用程序執(zhí)行的磁盤I/O時間。

下圖說明了如何在當前的框架工作同時做交互查詢在MapReduce上。

Interactive Operations on MapReduce

使用Spark RDD數(shù)據(jù)共享

數(shù)據(jù)共享MapReduce是緩慢的,因為復制,序列化和磁盤IO。大多數(shù)的Hadoop應用,他們花費的時間的90%以上是做HDFS讀 - 寫操作。

認識到這個問題,研究人員專門開發(fā)了一種稱為Apache Spark框架。spark的核心思想是彈性分布式數(shù)據(jù)集(RDD); 它支持在內(nèi)存中處理運算。這意味著,它存儲存儲器的狀態(tài)作為兩端作業(yè)的對象以及對象在那些作業(yè)之間是可共享的。在存儲器數(shù)據(jù)共享比網(wǎng)絡和磁盤快10到100倍。

現(xiàn)在讓我們理解迭代和交互式操作是如何發(fā)生在Spark RDD中。

Spark RDD迭代操作

下面給出的圖顯示Spark RDD迭代操作。它將存儲中間結(jié)果放在分布式存儲器,而不是穩(wěn)定的存儲(磁盤)和使系統(tǒng)更快。

注 ? 如果分布式存儲器(RAM)足以存儲中間結(jié)果(該作業(yè)狀態(tài)),那么它將存儲這些結(jié)果的磁盤上。

Iterative Operations on Spark RDD

Spark RDD交互式操作

該圖顯示Spark RDD的交互式操作。如果不同查詢在同一組數(shù)據(jù)的反復運行,該特定數(shù)據(jù)可被保存在內(nèi)存中以獲得更好的執(zhí)行時間。

Interactive Operations on Spark RDD

默認情況下,每個變換RDD可以在每次運行在其上的動作時間重新計算。但是,也可能會持續(xù)一個RDD在內(nèi)存中,在這種情況下,Spark將保持周圍群集上以獲得非??焖僭L問,在你查詢它的下一次用上。另外也用于在磁盤上持續(xù)RDDS支持,或在多個節(jié)點間復制。


上一篇:Spark教程下一篇:Spark 安裝