Spark
Spark是什么
Spark是一個用來實現(xiàn)快速而通用的集群計算的平臺点额。
Spark軟件架構(gòu)
Spark Core
SparkCore實現(xiàn)了Spark的基本功能赚楚,包括任務(wù)調(diào)度指郁,內(nèi)存管理诀豁,錯誤恢復(fù)驮审,與存儲系統(tǒng)的交互
Spark Core包含了對RDD(resilient distributed dataset)的定義棕洋,表示分布在多個計算節(jié)點上可以并行操作的元素集合,這是Spark主要的編程對象
SparkSQL
是Spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包
Spark Streaming
是Spark提供對實時數(shù)據(jù)進行流式計算的組件
MLlib
Spark的機器學(xué)習(xí)的程序庫逗扒,提供算法與模型
GraphX
用來操作圖的程序庫古戴,可以進行并行的圖計算
集群管理器(cluster manager)
Spark可以在一個節(jié)點到上千個節(jié)點之間的伸縮計算,支持在各種集群管理器上運行矩肩,如Hadoop YARN现恼,Apache Mesos肃续,Spark自帶的獨立調(diào)度器
存儲
Spark可以訪問存儲在HDFS,Hbase叉袍,Cassandra始锚,Amazon S3,本地文件系統(tǒng)等等的數(shù)據(jù)喳逛,支持文本文件瞧捌,序列文件以及任何Hadoop的InputFormat
核心概念 RDD
Spark 中的 RDD 就是一個不可變的分布式對象集合。每個 RDD 都被分為多個分區(qū)润文,這些
分區(qū)運行在集群中的不同節(jié)點上姐呐。 RDD 可以包含 Python、 Java典蝌、 Scala 中任意類型的對象曙砂,
甚至可以包含用戶自定義的對象。
RDD 支持兩種操作: 轉(zhuǎn)化操作和行動操作骏掀。 RDD 的轉(zhuǎn)化操作是返回一
個新的 RDD 的操作鸠澈,比如 map() 和 filter(),而行動操作則是向驅(qū)動器程序返回結(jié)果或
把結(jié)果寫入外部系統(tǒng)的操作截驮, 會觸發(fā)實際的計算笑陈,比如 count() 和 first()。
Spark運行時架構(gòu)
在分布式環(huán)境下葵袭, Spark 集群采用的是主 / 從結(jié)構(gòu)涵妥。在一個 Spark 集群中,有一個節(jié)點負
責(zé)中央?yún)f(xié)調(diào)眶熬, 調(diào)度各個分布式工作節(jié)點妹笆。這個中央?yún)f(xié)調(diào)節(jié)點被稱為驅(qū)動器( Driver) 節(jié)點,
與之對應(yīng)的工作節(jié)點被稱為執(zhí)行器( executor) 節(jié)點娜氏。驅(qū)動器節(jié)點可以和大量的執(zhí)行器節(jié)
點進行通信拳缠, 它們也都作為獨立的 Java 進程運行。驅(qū)動器節(jié)點和所有的執(zhí)行器節(jié)點一起被
稱為一個 Spark 應(yīng)用( application)贸弥。