日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark详解

發(fā)布時間:2024/7/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.Spark 簡介

  • Spark 和Scala
    1.1 Spark 是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架,可用于構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序;

    1.2 Spark 的特點

    1.3 Scala是一門現(xiàn)代的多范式編程語言,可擴(kuò)展式語言;

    1.4 Scala 特性

    1.5 Scala 是Spark的主要編程語言,但Spark 還支持Java 、Python ,R語言編程。提供了REPL(交互式解析器),提高程序開發(fā)效率。

  • Spark 和Hadoop 的比較
    2.1 Hadoop 是基于磁盤的大數(shù)據(jù)計算框架;Spark 性能比Hadoop 優(yōu)越;

    2.2 Spark 的優(yōu)點
    Spark的計算模式也屬于MapReduce ,但不局限與Map 和Reduce 操作,還提供了多種數(shù)據(jù)集操作類型,編程模型比Hadoop MapReduce 更靈活。
    Spark提供了內(nèi)存計算,可將中間結(jié)果發(fā)放到內(nèi)存中,對于迭代計算效率更高;
    Spark 基于DAG 的任務(wù)調(diào)度執(zhí)行機(jī)制,要優(yōu)于 Hadoop MapReduce 的迭代執(zhí)行機(jī)制;

  • 二.Spark 生態(tài)系統(tǒng)

  • 大數(shù)據(jù)處理主要的三個類型:
    復(fù)雜的批量數(shù)據(jù)處理;基于歷史數(shù)據(jù)的交互式查詢;基于實時數(shù)據(jù)流的數(shù)據(jù)處理;

  • 同時部署三種不同的軟件,以滿足三種不同的業(yè)務(wù)需求。
    MapReduce ; Cloudera Impala; Storm;

  • 框架

    3.1 Spark 可以部署在資源管理器YARN 之上,提供一站式的大數(shù)據(jù)解決方案;

    3.2 Spark 所提供的生態(tài)系統(tǒng)足以滿足上述三種場景即同時支持批處理、交互式查詢和流數(shù)據(jù)處理.

    3.3 Spark 生態(tài)系統(tǒng)已經(jīng)成為伯克利數(shù)據(jù)分析軟件棧BDAS的重要組成部分;

    3.4 BDAS架構(gòu)

    Spark Core 實現(xiàn)了 Spark 基于內(nèi)存的計算
    Spark Streaming 來實現(xiàn)流計算
    Saprk SQL和BlinkDB完成交互式的SQL 查詢;
    GraphX:完成圖計算;
    ML Base和MLlib:完成機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘;

    3.5 Spark 組件應(yīng)用場景

  • 三. Spar 運行架構(gòu)

  • 基本概念

  • 架構(gòu)設(shè)計

    2.1 與Hadoop MapReduce 計算框架相比,Spark 采用Excutor 的兩個有點;
    –>利用多線程來執(zhí)行具體的任務(wù),減少任務(wù)的啟動開銷;
    –>Excutor 中有一個BlockManager 存儲模塊,會將內(nèi)存和磁盤共同作為 存儲設(shè)備,有效減少IO 開銷.

  • Spark 運行基本流程

    3.1 為應(yīng)用程序構(gòu)建其基本的運行環(huán)境,即由Driver 創(chuàng)建一個SparkContex進(jìn)行資源的申請,任務(wù)的分配和監(jiān)控;

    3.2 資源管理器為Excutor 分配資源,并啟動Excutor 進(jìn)程;

    3.3 SparkContext根據(jù)RDD 的依賴關(guān)系構(gòu)建DAG圖,DAG 圖提交給DAG Schufule解析成Starge,然后把一個個TaseSet提交給底層調(diào)度器Task Schudule 處理.Excutor 向SparkContext 申請Task ,Task Schudule 將Task 發(fā)放給Excutor 運行并提供應(yīng)用程序代碼;

    3.4 Task 在Excutor 上運行把執(zhí)行結(jié)果反饋給Task Schudule ,然后反饋給DAG Schudule ,運算完畢后寫入數(shù)據(jù)并釋放所有資源.

    3.5 運行架構(gòu)特點

  • RDD 組件
    許多迭代式算法和交互式數(shù)據(jù)挖掘,不同計算階段之間會重用中間結(jié)果.MapReduce 都是把結(jié)果寫入磁盤,帶來大量數(shù)據(jù)復(fù)制,磁盤IO和序列化開銷大;

    4.1 RDD概念
    RDD就是為滿足這種需求而設(shè)計的,提供了一個抽象的數(shù)據(jù)結(jié)構(gòu);

    不必?fù)?dān)心底層數(shù)據(jù)的分布式特性,只需將具體的應(yīng)用邏輯表達(dá)為一系列轉(zhuǎn)換處理.

    不同RDD 之間的轉(zhuǎn)換操作形成依賴關(guān)系,可以實現(xiàn)管道化,避免中間數(shù)據(jù)存儲;

    一個RDD(彈性分布式數(shù)據(jù)集)就是一個分布式對象集合,本質(zhì)上是一個只讀的分區(qū)記錄集合,每個RDD可以分為多個分區(qū),每個分區(qū)就是一個數(shù)據(jù)集片段,并且一個RDD的不同分區(qū)可以被保存到集群中不同的節(jié)點上,從而可以在集群中的不同節(jié)點上進(jìn)行并行計算.

    4.2 RDD提供了一種高度受限的共享內(nèi)存模型,即RDD是只讀的記錄分區(qū)集合,不能直接修改,只能基于穩(wěn)定的物理存儲中的數(shù)據(jù)集創(chuàng)建RDD,或者通過其他RDD 上執(zhí)行確定的轉(zhuǎn)換操作(如map,jion,group by)而創(chuàng)建得到新的RDD.

    4.3 RDD的執(zhí)行過程

    上述圖示中的處理過程,即 DAG 拓?fù)渑判蚪Y(jié)果,反應(yīng)了不同RDD的相互依賴關(guān)系
    優(yōu)點:惰性調(diào)用,管道化.避免同步等待,不需要保存中間結(jié)果,每次操作變得簡單;

    4.4 RDD特性


    4.5 RDD 的依賴關(guān)系和運行過程

    RDD 之間的依賴關(guān)系(寬依賴,窄依賴)是劃分Stage的依據(jù).

    窄依賴:表現(xiàn)為一個父RDD的分區(qū)對應(yīng)一個自RDD 的分區(qū)或多個父RDD 的分區(qū)對應(yīng)與一個子RDD的分區(qū);

    寬依賴:表現(xiàn)為存在一個父RDD的分區(qū)對應(yīng)一個子RDD的多個分區(qū);

    4.6 Stage 的劃分

    Spark通過分析各個RDD 的依賴關(guān)系生成DAG 再通過分析各個RDD中分區(qū)之間的依賴關(guān)系來決定如何劃分Stage;

    如下劃分情況:

    4.7 Stage 類型

    –>ShuffleMapStage

    –>ResultStage

    4.8 RDD 運行過程

  • Spark SQL組件

    5.1 Spark SQL 架構(gòu)


    5.2 Spark SQL 與Hive關(guān)系

    5.3 Spark 的部署和應(yīng)用方式




    5.4 Spark 編程






  • 總結(jié)

    以上是生活随笔為你收集整理的Spark详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。