1. 程式人生 > >微分享:Spark基礎入門介紹

微分享:Spark基礎入門介紹

提到大資料技術,大多數開發者首先想到的技術莫過於Hadoop和Spark。他們都是大資料框架,也是當前應用最廣泛的大資料框架。

4月11晚8點(本週二),CSDN大資料學習班將迎來咱們的第二期知識大咖分享活動,主要分享開源的Spark大資料技術。
分享嘉賓:葉帥

葉帥 畢業於東華大學,研究方向為資料科學,目前就職於小i機器人,主要負責Hadoop、Spark叢集搭建和維護,大資料分析和資料探勘,Hive資料倉庫和資料建模。Job和日誌資料管理等工作
以下為昨晚的分享總結:

本次分享主題是Spark入門,既然是入門,就涉及Spark的部署和基本概念的理解,這也是我們進一步深入理解Spark的基礎。
首先是部署環節:
1.先安裝,HDFS的namenode,secondaryNamenode, datanode
Spark的master和worker程序;
Master負責分配資源,在叢集啟動時,Driver向Master申請資源,Worker負責監控自己節點的記憶體和CPU等狀況,並向Master彙報。
圖片描述


2.Cluster模型:Spark Application的組成部分
一個Worker預設情況下分配一個Executor,配置時根據需要也可以配置多個Executor。一個節點,如果配置了多個Executor,那麼就會涉及到效能調優。
圖片描述
3.standalone的執行模式:
組成cluster的兩大元素即Master和Worker。slave worker可以有1到多個,這些worker都處於active狀態。
Driver Application可以執行在Cluster之內,也可以在cluster之外執行,先從簡單的講起即Driver Application獨立於Cluster。那麼這樣的整體框架如上圖所示,由driver,master和多個slave worker來共同組成整個的執行環境。
圖片描述

4.Spark Runtime
Driver程序啟動多個worker程序,worker從HDFS讀取Block,然後將RDD分片儲存在記憶體中能計算。
圖片描述
5.來一個wordcount程式:

object WordCount {
    def main(args: Array[String]) {
      val inputFile = args(0)
      val outputFile = args(1)
      val conf = new SparkConf().setAppName("wordCount")
      // Create a Scala Spark Context.
val sc = new SparkContext(conf) // Load our input data. val input = sc.textFile(inputFile) // Split up into words. val words = input.flatMap(line => line.split(" ")) // Transform into word and count. val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y} // Save the word count back out to a text file, causing evaluation. counts.saveAsTextFile(outputFile) } }

6.Job的內部執行機制
圖片描述
7.RDD寬依賴和窄依賴的例子

  • 窄依賴:父RDD的每個分片基本都被子RDD的一個分片所利用。
  • 寬依賴:父RDD的每個分片被多個子RDD分片依賴。

這裡每個藍色方框都是一個RDD,外邊的長方形是分片。
圖片描述
8.Job Stage
任務排程,黑色部分代表RDD在記憶體中。基於RDD的G是一個action操作,引起跨stage的寬依賴和一個stage中的窄依賴轉換(pipeline transformation)。Stage的虛線是寬依賴所需要的shuffle操作。只有有一個task計算失敗,只要還有父RDD,就在其他節點上重新計算。
圖片描述

CSDN大資料學習班正在火熱招新中,掃描下方二維碼,備註:“大資料”即可入班學習。
圖片描述