'Apache Spark:彈性分佈式數據集'

"

RDD代表瞭如何在Apache Spark中表示大型數據集的想法以及使用它的抽象。本節將介紹前者,以下部分將介紹後者。根據關於Spark的開創性論文,“RDD是不可變的,容錯的並行數據結構,它們允許用戶明確地將中間結果保存在內存中,控制它們的分區以優化數據放置,並使用豐富的操作符來操縱它們。” 讓我們剖析這個描述,真正理解RDD概念背後的思想。

"

RDD代表瞭如何在Apache Spark中表示大型數據集的想法以及使用它的抽象。本節將介紹前者,以下部分將介紹後者。根據關於Spark的開創性論文,“RDD是不可變的,容錯的並行數據結構,它們允許用戶明確地將中間結果保存在內存中,控制它們的分區以優化數據放置,並使用豐富的操作符來操縱它們。” 讓我們剖析這個描述,真正理解RDD概念背後的思想。

Apache Spark:彈性分佈式數據集

不可變

RDD設計為不可變的,這意味著您無法專門修改該RDD表示的數據集中的特定行。您可以調用其中一個可用的RDD操作來按照您的方式操作RDD中的行,但該操作將返回一個新的RDD。基本RDD將保持不變,新RDD將以您更改它的方式包含數據。不可變性要求RDD攜帶Spark利用的譜系信息,以有效地提供容錯能力。

"

RDD代表瞭如何在Apache Spark中表示大型數據集的想法以及使用它的抽象。本節將介紹前者,以下部分將介紹後者。根據關於Spark的開創性論文,“RDD是不可變的,容錯的並行數據結構,它們允許用戶明確地將中間結果保存在內存中,控制它們的分區以優化數據放置,並使用豐富的操作符來操縱它們。” 讓我們剖析這個描述,真正理解RDD概念背後的思想。

Apache Spark:彈性分佈式數據集

不可變

RDD設計為不可變的,這意味著您無法專門修改該RDD表示的數據集中的特定行。您可以調用其中一個可用的RDD操作來按照您的方式操作RDD中的行,但該操作將返回一個新的RDD。基本RDD將保持不變,新RDD將以您更改它的方式包含數據。不可變性要求RDD攜帶Spark利用的譜系信息,以有效地提供容錯能力。

Apache Spark:彈性分佈式數據集

容錯

並行處理多個數據集的能力通常需要一組機器來託管和執行計算邏輯。如果這些機器中的一臺或多臺因意外情況而死亡或變得非常慢,那麼這將如何影響這些數據集的整體數據處理?好消息是Spark通過使用沿襲信息重建故障部分,自動代表其用戶處理故障。

並行數據結構

想象一下這樣一個用例:有人給你一個大小為1TB的大型日誌文件,並要求你找出有多少日誌語句中包含單詞“exception”。緩慢的解決方案是從頭到尾迭代該日誌文件,並執行確定特定日誌語句是否包含單詞exception的邏輯。更快的解決方案是將該1TB文件分成幾個塊,並以並行方式在每個塊上執行上述邏輯,以加快整個處理時間。每個塊包含一組行。行集合本質上是包含一組行的數據結構,並提供迭代每行的能力。每個塊包含一組行,並且所有塊都是並行處理的。

內存計算

Google的MapReduce論文2引入了使用一組機器以並行方式加速計算駐留在磁盤上的大型數據集的想法。這個想法已經實現,並在Hadoop開源項目中提供。在堅實的基礎上,RDD通過引入分佈式內存計算的能力來推動速度邊界。

審視導致創新理念創造的故事總是令人著迷。在大數據處理領域,一旦您能夠使用一組基本技術以可靠的方式從大型數據集中提取洞察力,您就希望使用更復雜的技術來減少執行此操作所需的時間。這是分佈式內存計算的幫助。

我所指的複雜技術是使用機器學習來執行各種預測或從大型數據集中提取模式。機器學習算法本質上是迭代的,這意味著它們需要經歷多次迭代才能達到最佳狀態。這是分佈式內存計算可以幫助將完成時間從幾天縮短到幾小時的地方。可以從分佈式內存計算中獲益的另一個用例是交互式數據挖掘,其中對同一數據子集執行多個即席查詢。如果該數據子集保留在內存中,那麼這些查詢將花費幾秒而不是幾分鐘來完成。

"

相關推薦

推薦中...