1、什么是Spark?
Spark 是一個(gè)快速(基于內(nèi)存), 通用, 可擴(kuò)展的集群計(jì)算引擎
并且Spark 目前已經(jīng)成為 Apache 最活躍的開源項(xiàng)目, 有超過 1000 個(gè)活躍的貢獻(xiàn)者.
1.1 Spark發(fā)展歷史
2009年零抬,Spark 誕生于 UC Berkeley(加州大學(xué)伯克利分校, CAL) 的 AMP 實(shí)驗(yàn)室, 項(xiàng)目采用 Scala 編程語言編寫.
2010年, Spark 正式對外開源
2013年 6 月, 進(jìn)入 Apache 孵化器
2014年, 成為 Apache 的頂級項(xiàng)目.
目前最新的版本是2.4.0
參考: http://spark.apache.org/history.html
2、Spark特點(diǎn)
2.1 快速
與Hadoop的 MapReduce 相比, Spark 基于內(nèi)存的運(yùn)算是 MapReduce 的 100 倍.基于硬盤的運(yùn)算也要快 10 倍以上.
Spark實(shí)現(xiàn)了高效的 DAG 執(zhí)行引擎, 可以通過基于內(nèi)存來高效處理數(shù)據(jù)流
2.2 易用
Spark支持 Scala, Java, Python, R 和 SQL 腳本, 并提供了超過 80 種高性能的算法, 非常容易創(chuàng)建并行 App
而且Spark支持交互式的 Python 和 Scala 的 shell, 這意味著可以非常方便地在這些 shell 中使用 Spark 集群來驗(yàn)證解決問題的方法, 而不是像以前一樣 需要打包, 上傳集群, 驗(yàn)證等. 這對于原型開發(fā)非常重要.
2.3 通用
Spark 結(jié)合了SQL, Streaming和復(fù)雜分析.
Spark 提供了大量的類庫, 包括 SQL 和 DataFrames, 機(jī)器學(xué)習(xí)(MLlib), 圖計(jì)算(GraphicX), 實(shí)時(shí)流處理(Spark Streaming) .
可以把這些類庫無縫的柔和在一個(gè)App 中.
減少了開發(fā)和維護(hù)的人力成本以及部署平臺的物力成本.
2.4?可融合性
Spark 可以非常方便的與其他開源產(chǎn)品進(jìn)行融合.
比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作為它的資源管理和調(diào)度器, 并且可以處理所有 Hadoop 支持的數(shù)據(jù), 包括 HDFS, HBase等.
3蜻牢、內(nèi)置模塊介紹
3.1 集群管理器
Spark 設(shè)計(jì)為可以高效地在一個(gè)計(jì)算節(jié)點(diǎn)到數(shù)千個(gè)計(jì)算節(jié)點(diǎn)之間伸縮計(jì)算狭郑。
為了實(shí)現(xiàn)這樣的要求,同時(shí)獲得最大靈活性铸题,Spark 支持在各種集群管理器(Cluster Manager)上運(yùn)行铡恕,目前 Spark 支持 3 種集群管理器:
Hadoop YARN(在國內(nèi)使用最廣泛)
Apache Mesos(國內(nèi)使用較少, 國外使用較多)
Standalone(Spark自帶的資源調(diào)度器, 需要在集群中的每臺節(jié)點(diǎn)上配置 Spark)
3.2 SparkCore
實(shí)現(xiàn)了Spark的基本功能,包含任務(wù)調(diào)度丢间、內(nèi)存管理探熔、錯(cuò)誤恢復(fù)、與存儲系統(tǒng)交互等模塊烘挫。SparkCore中還包含了對彈性分布式數(shù)據(jù)集(Resilient Distributed DataSet 簡稱 RDD)的API定義诀艰。
3.3 Spark SQL
是Spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包。通過SparkSql饮六,我們可以使用SQL或者Apache Hive版本的SQL方言(HQL)來查詢數(shù)據(jù)其垄。Spark SQL支持多種數(shù)據(jù)源。比如Hive表卤橄,Parquet以及JSON等绿满。
3.4?Spark Streaming
是Spark 提供的對實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件。提供了用來操作數(shù)據(jù)流的API窟扑,并且與 Spark Core 中的 RDD API 高度對應(yīng)棒口。
3.5 Spark MLlib
提供常見的機(jī)器學(xué)習(xí)(ML) 功能的程序庫。包括分類辜膝、回歸无牵、聚類、協(xié)同過濾等厂抖,還提供了模型評估茎毁、數(shù)據(jù)導(dǎo)入等額外的支持功能。
Spark得到了眾多大數(shù)據(jù)公司的支持,這些公司包括 Hortonworks七蜘、IBM谭溉、Intel、Cloudera橡卤、MapR扮念、Pivotal、百度碧库、阿里柜与、騰訊、京東嵌灰、攜程弄匕、優(yōu)酷土豆。
當(dāng)前百度的Spark已應(yīng)用于大搜索沽瞭、直達(dá)號迁匠、百度大數(shù)據(jù)等業(yè)務(wù);
阿里利用GraphX構(gòu)建了大規(guī)模的圖計(jì)算和圖挖掘系統(tǒng)驹溃,實(shí)現(xiàn)了很多生產(chǎn)系統(tǒng)的推薦算法城丧;
騰訊Spark集群達(dá)到 8000 臺的規(guī)模,是當(dāng)前已知的世界上最大的 Spark 集群豌鹤。