[SPARK] Spark基本介紹
寫了一些Spark的文章, 才發現自己還沒介紹過Spark,
於是, 就把之前自己整理的一些資料放上來, 當作Spark的介紹,
在介紹中, 我將著重在Stream和ML部分的比較,
這也是未來在研究Spark時會比較重視的部分,
Apache Spark是由UC Berkeley AMP 實驗室所開發的雲端運算框架,
用來構建大型的, 低延遲的資料分析系統.
比較起其他雲端運算架構, 像是IBM的InfoSphere, 或是Strom的流計算,
Spark繼承了MapReduce中根據資料位置移動計算的精神 (moves compute processes to the data),
並在此架構上, 引進了記憶體層 (in-memory) 計算的概念, 提供使用者對於暫存資料的控管,
減低在迭代時所需要的資料存取時間.
Spark沿用了HDFS的分散式資料儲存結構,
同時加入了以Tachyon為基礎的分散式內存系統, 提供資料在記憶體中的管理.
在Spark中, 所有的資料單元被表示為RDD (Resilient Distributed Dataset),
RDD 是分佈在一組叢集中的唯讀物件集合,
RDD將一份資料存放在多個分區上, 並在運算時, 對於每一個分區進行相同的動作.
藉由備份和血統 (Lineage) 的機制, RDD也提供雲端需要的容錯機制.
RDD可以指定成7種不同的儲存等級 (記憶體或是硬碟),
在Spark中, RDD擁有兩種建立模式:
當進行完運算後, 所產生的RDD也可以存回HDFS或是檔案.
在Spark中, 所有的資料單元被表示為RDD,
因此在進行流運算時, 處理的是DStream,
也就是一系列的RDD輸入, 而不是一筆筆連續的資料輸入,
考慮到源源不斷的資料輸入,
Spark Streaming會先把進入的資料按照時間切分成不同的區塊,
而每一格區塊則直接對應產生一個RDD資料集合, 並放入Spark中進行RDD的運算,
當然, 輸出的格式也是一連串RDD的形式,
使用者能夠根據需求, 將資料轉傳入HDFS, 檔案或是資料庫中
和其他雲端計算框架相較, Spark Streaming擁有相對簡單的計算架構,
雖然無法到達毫秒等級, 卻能夠平衡運算效率以及即時處理的需求,
和其他雲計算平台的比較如下表
負責提供機器學習 (Machine Learning) 演算法的函式庫.
在Mllib中, 已經實作了多種樣態的機器學習演算法,
包括分類法中的SVM (Support Vector Machine), K-means等
除了估計與分類演算法之外, MLlib也提供了一些分析的工具,
例如: 隨機訊號的產生, 假設檢定, SVD, PCA, 等.
這些工具都是建立於Spark所定義的RDD運算上,
使得Spark的管理節點能夠基於資料所在的位置,
將運算分散到叢集中的工作結點上.
於是, 就把之前自己整理的一些資料放上來, 當作Spark的介紹,
在介紹中, 我將著重在Stream和ML部分的比較,
這也是未來在研究Spark時會比較重視的部分,
Apache Spark是由UC Berkeley AMP 實驗室所開發的雲端運算框架,
用來構建大型的, 低延遲的資料分析系統.
比較起其他雲端運算架構, 像是IBM的InfoSphere, 或是Strom的流計算,
Spark繼承了MapReduce中根據資料位置移動計算的精神 (moves compute processes to the data),
並在此架構上, 引進了記憶體層 (in-memory) 計算的概念, 提供使用者對於暫存資料的控管,
減低在迭代時所需要的資料存取時間.
Spark沿用了HDFS的分散式資料儲存結構,
同時加入了以Tachyon為基礎的分散式內存系統, 提供資料在記憶體中的管理.
在Spark中, 所有的資料單元被表示為RDD (Resilient Distributed Dataset),
RDD 是分佈在一組叢集中的唯讀物件集合,
RDD將一份資料存放在多個分區上, 並在運算時, 對於每一個分區進行相同的動作.
藉由備份和血統 (Lineage) 的機制, RDD也提供雲端需要的容錯機制.
RDD可以指定成7種不同的儲存等級 (記憶體或是硬碟),
在Spark中, RDD擁有兩種建立模式:
- 可以從檔案中 (包括HDFS和HBase) 創建
- 或是從另一個RDD中產生
當進行完運算後, 所產生的RDD也可以存回HDFS或是檔案.
- Spark Streaming
在Spark中, 所有的資料單元被表示為RDD,
因此在進行流運算時, 處理的是DStream,
也就是一系列的RDD輸入, 而不是一筆筆連續的資料輸入,
考慮到源源不斷的資料輸入,
Spark Streaming會先把進入的資料按照時間切分成不同的區塊,
而每一格區塊則直接對應產生一個RDD資料集合, 並放入Spark中進行RDD的運算,
當然, 輸出的格式也是一連串RDD的形式,
使用者能夠根據需求, 將資料轉傳入HDFS, 檔案或是資料庫中
和其他雲端計算框架相較, Spark Streaming擁有相對簡單的計算架構,
雖然無法到達毫秒等級, 卻能夠平衡運算效率以及即時處理的需求,
和其他雲計算平台的比較如下表
Platforms
|
Spark
|
Storm
|
Hadoop MapReduce
|
Programming model
|
In-memory computing
RDD-based processing |
Graphical computing
Tuple-based processing |
MapReduce
HDFS-based processing |
Complexity
|
Medium
|
Most complex
|
Simplest
|
Data processing
|
RDD
|
Tuple
|
HDFS
|
Streaming
|
Yes (DStream)
|
Yes (Each Tuple)
|
No
|
Machine learning
|
Yes (MLlib)
|
Yes (Trident-ml)
|
Yes (Mahout)
|
Processing mode
|
Batch and stream
|
Only stream
|
Only batch
|
Latency
|
second
|
Sub-second
|
Long
|
400,000 Records/s/node
|
10,000 Records/s/node
|
-
|
- Mllib
負責提供機器學習 (Machine Learning) 演算法的函式庫.
在Mllib中, 已經實作了多種樣態的機器學習演算法,
包括分類法中的SVM (Support Vector Machine), K-means等
除了估計與分類演算法之外, MLlib也提供了一些分析的工具,
例如: 隨機訊號的產生, 假設檢定, SVD, PCA, 等.
這些工具都是建立於Spark所定義的RDD運算上,
使得Spark的管理節點能夠基於資料所在的位置,
將運算分散到叢集中的工作結點上.
留言
張貼留言