2015年12月31日 星期四

Apache Spark 簡介

Apache Spark是開放原始碼的叢集運算框架,由加州大學柏克萊分校的AMPLab開發。Spark是一個彈性的運算框架,適合做Spark Streaming資料流處理、Spark SQL互動分析、ML Lib機器學習等應用,因此Spark可成為一個用途廣泛的大數據運算平台。Spark允許用戶將資料載入至cluster叢集記憶體內儲存,並多次重覆運算,非常適合用於機器學習演算法。




1. Spark 與 Hadoop Map Reduce 比較


Hadoop Map Reduce的計算框架

如下圖,Hadoop mapreduce在執行運算時,需要將中間產生的數據,儲存在硬碟中。然而磁碟I/O往往是效能的瓶頸,因此會有讀寫資料延遲的問題。


Spark in-memory的計算框架

如下圖,Spark是基於記憶體內的計算框架。Spark在運算時,將中間產生的資料暫存在記憶體中,因此可以加快執行速度。尤其需要反覆操作的次數越多,所需讀取的資料量越大,則越能看出Spark的效能。Spark在記憶體內執行程式,運算速度能比Hadoop MapReduce的運算速度快上100倍,即便是執行程式於硬碟時Spark也能快上10倍速度。

2.Spark發展歷史 


  • 2009 Spark由Matei Zaharia由加州大學柏克萊分校的AMPLab開發 
  • 2010 透過BSD授權條款開放原始碼釋出 
  • 2013 該專案被捐贈給Apache軟體基金會 
  • 2014/2 Spark成為Apache的頂級專案 
  • 2014/11 Databricks團隊使用Spark刷新資料排序世界記錄 
  • 2015/3 Spark 1.3.1版釋出
  
3.Spark特色

特色
說明
運算速度快
Spark基於記憶體計算的開放原始碼叢集運算系統,比原先的Hadoop MapReduce100倍。
易開發程式
目前Spark支援多種語言:ScalaPythonJava,也就是說開發者可以視應用的環境,來決定使用那種語言來開發Spark程式,能更彈性的符合開發時的需求。
Hadoop相容
Spark提供Hadoop Storage API,使它支援了HadoopHDFS儲存系統。並且支援Hadoop YARN,可共享儲存資源與運算,而且也幾乎與Hive完全相容。
可在各平台執行
  • 可以在本地端的機器上執行Spark程式,這只需要import Spark的程式庫就即可。
  • 在自有的群集上執行Spark程式,例如MesosHadoop YARN等自行建立的群集。
  • 針對更大規模的計算工作,我們可以選擇將Spark程式送至AWSEC2平臺上執行,依照您使用的計算資源計費。


4. Spark主要功能

功能
說明
Spark SQL
Spark SQL可以使用熟知的SQL查詢語法,執行數據分析。
Spark Streaming
Spark Streaming可達成即時資料串流的處理,具有高資料量、可容錯性、可擴充性等特點。
GraphX
GraphXSpark上的分散式圖形處理架構,可用圖表計算。
MLlib

MLlib是一個可擴充的Spark機器學習庫,可使用許多常見的機器學習演算法,簡化大規模機器學習時間。演算法包括:分類與回歸、支持向量機、回歸、線性回歸、決策樹、單純貝式、分群、協同過濾等。


以上內容節錄自這本書。很適合入門初學者:
  Python+Spark 2.0+Hadoop機器學習與大數據分析實戰 http://pythonsparkhadoop.blogspot.tw/2016/10/pythonspark-20hadoop.html

《購買本書 限時特價專區》
博客來:http://www.books.com.tw/products/0010730134?loc=P_007_090  

天瓏:https://www.tenlong.com.tw/items/9864341537?item_id=1023658
露天拍賣:http://goods.ruten.com.tw/item/show?21640846068139
蝦皮拍賣:https://goo.gl/IEx13P 



1 則留言:

  1. 我真的覺得這本書以step-by-step的方式,真得非常不錯
    請問一下,可以提供LDA-spark的相關實作說明嗎?

    回覆刪除