spark
Spark Core:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的
Spark SQL:提供透過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行互動的API。每個資料庫表被當做一個RDD,Spark SQL查詢被轉換為Spark操作。
Spark Streaming:對實時資料流進行處理和控制。Spark Streaming允許程式能夠像普通RDD一樣處理實時資料
Llib:一個常用機器學習演算法庫,演算法被實現為對RDD的Spark操作。這個庫包含可擴充套件的學習演算法,比如分類、迴歸等需要對大量資料集進行迭代的操作。
GraphX:控制圖、並行圖操作和計算的一組演算法和工具的集合。GraphX擴充套件了RDD API,包含控制圖、建立子圖、訪問路徑上所有頂點的操作
架構組成:
Spark架構的組成圖如下:
Cluster Manager:在standalone模式中即為Master主節點,控制整個叢集,監控worker。在YARN模式中為資源管理器
Worker節點:從節點,負責控制計算節點,啟動Executor或者Driver。
Driver: 執行Application 的main()函式
Executor:執行器,是為某個Application執行在worker node上的一個程式
Spark與hadoop:
Hadoop有兩個核心模組,分散式儲存模組HDFS和分散式計算模組Mapreduce
spark本身並沒有提供分散式檔案系統,因此spark的分析大多依賴於Hadoop的分散式檔案系統HDFS
Hadoop的Mapreduce與spark都可以進行資料計算,而相比於Mapreduce,spark的速度更快並且提供的功能更加豐富
構建Spark Application的執行環境,啟動SparkContext
SparkContext向資源管理器(可以是Standalone,Mesos,Yarn)申請執行Executor資源,並啟動StandaloneExecutorbackend,
SparkContext將應用程式分發給Executor
SparkContext構建成DAG圖,將DAG圖分解成Stage、將Taskset傳送給Task Scheduler,最後由Task Scheduler將Task傳送給Executor執行
Task在Executor上執行,執行完釋放所有資源
每個Application獲取專屬的executor程式,該程式在Application期間一直駐留,並以多執行緒方式執行Task。這種Application隔離機制是有優勢的,無論是從排程角度看(每個Driver排程他自己的任務),還是從執行角度看(來自不同Application的Task執行在不同JVM中),當然這樣意味著Spark Application不能跨應用程式共享資料,除非將資料寫入外部儲存系統
Spark與資源管理器無關,只要能夠獲取executor程式,並能保持相互通訊就可以了
提交SparkContext的Client應該靠近Worker節點(執行Executor的節點),最好是在同一個Rack裡,因為Spark Application執行過程中SparkContext和Executor之間有大量的資訊交換
Task採用了資料本地性和推測執行的最佳化機制
推薦閱讀:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2904221/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark之spark shellSpark
- Spark on Yarn 和Spark on MesosSparkYarn
- Spark系列 - (3) Spark SQLSparkSQL
- Spark學習進度-Spark環境搭建&Spark shellSpark
- 【Spark】Spark容錯機制Spark
- spark學習筆記--Spark SQLSpark筆記SQL
- spark學習筆記-- Spark StreamingSpark筆記
- Spark 系列(十四)—— Spark Streaming 基本操作Spark
- Spark 系列(十五)—— Spark Streaming 整合 FlumeSpark
- 【Spark篇】---Spark故障解決(troubleshooting)Spark
- Spark記錄(一):Spark全景概述Spark
- Spark SQL | Spark,從入門到精通SparkSQL
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- Hello Spark! | Spark,從入門到精通Spark
- Spark 系列(九)—— Spark SQL 之 Structured APISparkSQLStructAPI
- Spark文件閱讀之一:Spark OverviewSparkView
- Spark學習筆記(三)-Spark StreamingSpark筆記
- Spark —— Spark OOM Error問題排查定位SparkOOMError
- spark with hiveSparkHive
- spark MapPartitionsRDDSparkAPP
- Spark 加入Spark
- Spark StageSpark
- Spark & ZeppelinSpark
- Spark入門(四)--Spark的map、flatMap、mapToPairSparkAPTAI
- Spark in action on Kubernetes - Spark Operator的原理解析Spark
- Spark API 全集(1):Spark SQL Dataset & DataFrame APISparkAPISQL
- Spark SQL:4.對Spark SQL的理解SparkSQL
- Spark入門(五)--Spark的reduce和reduceByKeySpark
- Spark 系列(十一)—— Spark SQL 聚合函式 AggregationsSparkSQL函式
- Spark 以及 spark streaming 核心原理及實踐Spark
- 【Spark篇】---Spark中Shuffle檔案的定址Spark
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- spark與kafaka整合workcount示例 spark-stream-kafkaSparkKafka
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- spark學習筆記--叢集執行SparkSpark筆記
- Spark之HiveSupport連線(spark-shell和IDEA)SparkHiveIdea
- 1.Spark學習(Python版本):Spark安裝SparkPython
- Spark Streaming監聽HDFS檔案(Spark-shell)Spark