微分享:Spark基礎入門介紹
阿新 • • 發佈:2019-01-01
提到大資料技術,大多數開發者首先想到的技術莫過於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大資料學習班正在火熱招新中,掃描下方二維碼,備註:“大資料”即可入班學習。