1. 程式人生 > >子雨大資料之Spark入門教程

子雨大資料之Spark入門教程

大資料技術原理與應用

子雨大資料之Spark入門
掃一掃訪問本部落格
【版權宣告】部落格內容由廈門大學資料庫實驗室擁有版權,未經允許,請勿轉載!版權所有,侵權必究!

Spark最初誕生於美國加州大學伯克利分校(UC Berkeley)的AMP實驗室,是一個可應用於大規模資料處理的快速、通用引擎。2013年,Spark加入Apache孵化器專案後,開始獲得迅猛的發展,如今已成為Apache軟體基金會最重要的三大分散式計算系統開源專案之一(即Hadoop、Spark、Storm)。Spark最初的設計目標是使資料分析更快——不僅執行速度快,也要能快速、容易地編寫程式。為了使程式執行更快,Spark提供了記憶體計算,減少了迭代計算時的IO開銷;而為了使編寫程式更為容易,Spark使用簡練、優雅的Scala語言編寫,基於Scala提供了互動式的程式設計體驗。雖然,Hadoop已成為大資料的事實標準,但其MapReduce分散式計算模型仍存在諸多缺陷,而Spark不僅具備Hadoop MapReduce所具有的優點,且解決了Hadoop MapReduce的缺陷。Spark正以其結構一體化、功能多元化的優勢逐漸成為當今大資料領域最熱門的大資料計算平臺。

Spark支援使用Scala、Java、Python和R語言進行程式設計。由於Spark採用Scala語言進行開發,因此,建議採用Scala語言進行Spark應用程式的編寫。Scala是一門現代的多正規化程式語言,平滑地集成了面向物件和函式式語言的特性,旨在以簡練、優雅的方式來表達常用程式設計模式。Scala語言的名稱來自於“可伸展的語言”,從寫個小指令碼到建立個大系統的程式設計任務均可勝任。Scala運行於Java平臺(JVM,Java 虛擬機器)上,併兼容現有的Java程式。

但是,Scala程式語言的學習曲線相對比較陡峭,尤其是,目前很多高校教學大多采用Java等面嚮物件語言,而Scala則融入了許多函數語言程式設計思維,面向物件程式設計和函數語言程式設計,是兩種截然不同的程式設計風格,因此,給教師和學生學習Scala語言造成了很大的障礙。

筆者作為“中國高校大資料課程公共服務平臺”的建設者和負責人,一直致力於為全國高校教師和學生快速學習大資料知識提供輔助,降低大資料知識學習門檻,大幅節約大資料學習時間,加快推動全國高校大資料課程的大規模普及。“中國高校大資料課程公共服務平臺”(平臺主頁)目前已經成長為國內高校大資料教學知名品牌,年訪問量超過100萬次,為教師和學生提供了大資料教學資源一站式服務,包括課程教材、講義PPT、學習指南、備課指南、授課視訊、實驗指南、技術資料和師資培訓等。在2013年5月到2016年9月,平臺重點建設了與《大資料技術原理與應用》(

教材官網)入門級大資料教材配套的各種教學資源,為高校開設大資料導論課程奠定了較好的基礎。

但是,《大資料技術原理與應用》課程只能作為導論級課程,高校課程體系還應該包括更多高階課程,比如機器學習、Spark、NoSQL、R語言、Hadoop高階程式設計、流資料處理、大資料應用與案例等。因此,從2016年9月開始,筆者開始帶領廈門大學資料庫實驗室團隊,建設“Spark入門教程”教學資源,作為大資料學習探路先鋒,尋找出一條學習Spark技術的捷徑,降低學習難度,節省學習時間,輔助高校教師順利開設Spark課程。

本教程採用Scala語言編寫Spark應用程式,在知識安排上,首先學習Scala程式設計,然後再學習Spark應用程式開發。

廈門大學研究生課程《大資料處理技術Spark》

Spark課程綜合實驗案例

案例1:淘寶雙11資料分析與預測

Spark課程實驗案例:淘寶雙11資料分析與預測課程案例,由廈門大學資料庫實驗室團隊開發,旨在滿足全國高校大資料教學對實驗案例的迫切需求。本案例涉及資料預處理、儲存、查詢和視覺化分析等資料處理全流程所涉及的各種典型操作,涵蓋Linux、MySQL、Hadoop、Hive、Sqoop、Eclipse、ECharts、Spark等系統和軟體的安裝和使用方法。案例適合高校(高職)大資料教學,可以作為學生學習大資料課程後的綜合實踐案例。通過本案例,將有助於學生綜合運用大資料課程知識以及各種工具軟體,實現資料全流程操作。各個高校可以根據自己教學實際需求,對本案例進行補充完善。
點選這裡訪問案例主頁

案例2:Spark+Kafka構建實時分析Dashboard

大資料課程實驗案例:Spark+Kafka構建實時分析Dashboard案例,由廈門大學資料庫實驗室團隊開發,旨在滿足全國高校大資料教學對實驗案例的迫切需求。本案例涉及資料預處理、訊息佇列傳送和接收訊息、資料實時處理、資料實時推送和實時展示等資料處理全流程所涉及的各種典型操作,涵蓋Linux、Spark、Kafka、Flask、Flask-SocketIO、Highcharts.js、sockert.io.js、PyCharm等系統和軟體的安裝和使用方法。案例適合高校(高職)大資料教學,可以作為學生學習大資料課程後的綜合實踐案例。通過本案例,將有助於學生綜合運用大資料課程知識以及各種工具軟體,實現資料全流程操作。各個高校可以根據自己教學實際需求,對本案例進行補充完善。
點選這裡訪問案例主頁
2017暑假Spark師資培訓班

[教程目錄]

從2016年10月31日開始連載,歡迎關注。

第一部分:快學Scala

Spark有不同的版本,而且版本一直在升級,我們只要學習其中一個版本即可。截至2017年3月,Spark已經更新到2.0以上版本。
下面的第二部分是Spark速成(Spark2.1.0版本),第三部分是Spark速成(Spark1.6.2版本),讀者可以選擇其中一個版本學習,建議學習最新2.1.0版本。

第二部分:Spark速成(Spark2.1.0版本)

Spark速成(Spark2.1.0版本),未完,待續……

第三部分:Spark速成(Spark1.6.2版本)

(備註:前面我們都是在單機或偽分散式環境下操作,現在可以嘗試在真正的分散式叢集環境下執行Spark,由於Spark叢集下程式設計會導致複雜性大大增加,所以,下面內容可以自由選擇是否學習)
第十三章 Spark叢集
第13.1 Spark叢集環境搭建
第13.2 在叢集上執行Spark應用程式
(以上是Spark1.6.2教程所有內容,不再繼續更新,請學習第二部分的Spark2.1.0版本教程)