http://www.cnblogs.com/BYRans/p/5292763.html#42html
http://www.cnblogs.com/shishanyuan/p/4699644.htmlnode
3、Spark入門實戰系列--1.Spark及其生態圈簡介編程
一、Spark是加州大學伯克利分校AMP實驗室(Algorithms, Machines, and People Lab)開發通用內存並行計算框架。Spark在2013年6月進入Apache成爲孵化項目,迅速成爲社區的熱門項目,圍繞着Spark推出了Spark SQL、Spark Streaming、MLLib和GraphX等組件,也就是BDAS(伯克利數據分析棧),這些組件逐漸造成大數據處理一站式解決平臺。框架
Spark使用Scala語言進行實現,它是一種面向對象、函數式編程語言,可以像操做本地集合對象同樣輕鬆地操做分佈式數據集(Scala 提供一個稱爲 Actor 的並行模型,其中Actor經過它的收件箱來發送和接收非同步信息而不是共享數據,該方式被稱爲:Shared Nothing 模型)。在Spark官網上介紹,它具備運行速度快、易用性好、通用性強和隨處運行等特色。機器學習
l運行速度快分佈式
Spark擁有DAG執行引擎,支持在內存中對數據進行迭代計算。官方提供的數據代表,若是數據由磁盤讀取,速度是Hadoop MapReduce的10倍以上,若是數據從內存中讀取,速度能夠高達100多倍。函數式編程
l易用性好函數
Spark不只支持Scala編寫應用程序,並且支持Java和Python等語言進行編寫,特別是Scala是一種高效、可拓展的語言,可以用簡潔的代碼處理較爲複雜的處理工做。oop
l通用性強學習
Spark生態圈即BDAS(伯克利數據分析棧)包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等組件,這些組件分別處理Spark Core提供內存計算框架、SparkStreaming的實時處理應用、Spark SQL的即席查詢、MLlib或MLbase的機器學習和GraphX的圖處理,它們都是由AMP實驗室提供,可以無縫的集成並提供一站式解決平臺。
l隨處運行
Spark具備很強的適應性,可以讀取HDFS、Cassandra、HBase、S3和Techyon爲持久層讀寫原生數據,可以以Mesos、YARN和自身攜帶的Standalone做爲資源管理器調度job,來完成Spark應用程序的計算。
術語 |
描述 |
Application |
Spark的應用程序,包含一個Driver program和若干Executor |
SparkContext |
Spark應用程序的入口,負責調度各個運算資源,協調各個Worker Node上的Executor |
Driver Program |
運行Application的main()函數而且建立SparkContext |
Executor |
是爲Application運行在Worker node上的一個進程,該進程負責運行Task,而且負責將數據存在內存或者磁盤上。 每一個Application都會申請各自的Executor來處理任務 |
Cluster Manager |
在集羣上獲取資源的外部服務 (例如:Standalone、Mesos、Yarn) |
Worker Node |
集羣中任何能夠運行Application代碼的節點,運行一個或多個Executor進程 |
Task |
運行在Executor上的工做單元 |
Job |
SparkContext提交的具體Action操做,常和Action對應 |
Stage |
每一個Job會被拆分不少組task,每組任務被稱爲Stage,也稱TaskSet |
RDD |
是Resilient distributed datasets的簡稱,中文爲彈性分佈式數據集;是Spark最核心的模塊和類 |
DAGScheduler |
根據Job構建基於Stage的DAG,並提交Stage給TaskScheduler |
TaskScheduler |
將Taskset提交給Worker node集羣運行並返回結果 |
Transformations |
是Spark API的一種類型,Transformation返回值仍是一個RDD, 全部的Transformation採用的都是懶策略,若是隻是將Transformation提交是不會執行計算的 |
Action |
是Spark API的一種類型,Action返回值不是一個RDD,而是一個scala集合;計算只有在Action被提交的時候計算才被觸發。 |