大數據最火的Spark你確定不來了解一下嗎?(1)

上一階段給大家分享的Scala,這一階段是Spark,學Spark的前提得先熟悉,並且熟練操作Scala,下面先給大家介紹一下Spark!!!!!!

在這裏插入圖片描述

Spark概述

1. Spark官方介紹

●Spark是什麼

Apache Spark是用於大規模數據處理的統一分析引擎
Spark基於內存計算,提高了在大數據環境下數據處理的實時性,
同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量硬件之上,形成集羣。

●官網

http://spark.apache.org
http://spark.apachecn.org

在這裏插入圖片描述

2. Spark特點

●快

與Hadoop的MapReduce相比,Spark基於內存的運算要快100倍以上,
基於硬盤的運算也要快10倍以上。Spark實現了高效的DAG執行引擎,
可以通過基於內存來高效處理數據流。

在這裏插入圖片描述

●易用(算法多)

MR只支持一種計算 算法,Spark支持多種算法。
Spark支持Java、Python、R和Scala的API,還支持超過80種高級算法,
使用戶可以快速構建不同的應用。而且Spark支持交互式的Python和Scala的shell,
可以非常方便地在這些shell中使用Spark集羣來驗證解決問題的方法。

在這裏插入圖片描述

●通用

Spark提供了統一的解決方案。Spark可以用於批處理、交互式查詢(Spark SQL)、
實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。
這些不同類型的處理都可以在同一個應用中無縫使用。Spark統一的解決方案非常具有吸引力,
畢竟任何公司都想用統一的平臺去處理遇到的問題,減少開發和維護的人力成本和部署平臺的物力成本。

在這裏插入圖片描述

●兼容性

Spark可以非常方便地與其他的開源產品進行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作爲它的資源管理和調度器,
並且可以處理所有Hadoop支持的數據,包括HDFS、HBase和Cassandra等。
這對於已經部署Hadoop集羣的用戶特別重要,因爲不需要做任何數據遷移就可以使用Spark的強大處理能力。
Spark也可以不依賴於第三方的資源管理和調度器,它實現了Standalone作爲其內置的資源管理和調度框架,
這樣進一步降低了Spark的使用門檻,使得所有人都可以非常容易地部署和使用Spark。
此外,Spark還提供了在EC2上部署Standalone的Spark集羣的工具。

在這裏插入圖片描述

3. 激動人心的Spark發展史

大數據、人工智能( Artificial Intelligence )像當年的石油、電力一樣, 正以前所未有的廣度和深度影響所有的行業, 現在及未來公司的核心壁壘是數據, 核心競爭力來自基於大數據的人工智能的競爭。

Spark是當今大數據領域最活躍、最熱門、最高效的大數據通用計算平臺
2009年誕生於美國加州大學伯克利分校AMP 實驗室
2010年通過BSD許可協議開源發佈,
2013年捐贈給Apache軟件基金會並切換開源協議到切換許可協議至 Apache2.0,
2014年2月,Spark 成爲 Apache 的頂級項目
2014年11月, Spark的母公司Databricks團隊使用Spark刷新數據排序世界記錄

Spark 成功構建起了一體化、多元化的大數據處理體系。在任何規模的數據計算中, Spark 在性能和擴展性上都更具優勢。

(1) Hadoop 之父Doug Cutting 指出:Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark (大數據項目的MapReduce 引擎的使用將下降,由Apache Spark 取代)
(2)Hadoop 商業發行版本的市場領導者Cloudera 、HortonWorks 、MapR 紛紛轉投Spark,並把Spark 作爲大數據解決方案的首選和核心計算引擎。

2014 年的如此Benchmark 測試中, Spark 秒殺Hadoop ,在使用十分之一計算資源的情況下,相同數據的排序上, Spark 比Map Reduce 快3 倍! 在沒有官方PB 排序對比的情況下,首次將S park 推到了IPB 數據(十萬億條記錄) 的排序,在使用190 個節點的情況下,工作負載在4 小時內完成, 同樣遠超雅虎之前使用3800 臺主機耗時16 個小時的記錄。

2015年6月, Spark 最大的集羣來自騰訊–8000 個節點, 單個Job 最大分別是阿里巴巴和Databricks–1PB ,震撼人心!同時,Spark的Contributor 比2014 年漲了3 倍,達到730 人:總代碼行數也比2014 年漲了2 倍多,達到40 萬行。

IBM 於2015 年6 月承諾大力推進Apache Spark 項目, 並稱該項目爲:以數據爲主導的,未來十年最重要的新的開源項目。這-承諾的核心是將Spark 嵌入IBM 業內領先的分析和商務平臺,並將Spark 作爲一項服務,在IBMB平臺上提供給客戶。IBM 還將投入超過3500 名研究和開發人員在全球10餘個實驗室開展與Spark 相關的項目,並將爲Spark 開源生態系統無償提供突破性的機器學習技術–IBM SystemML。同時,IBM 還將培養超過100 萬名Spark 數據科學家和數據工程師。

2016 年,在有“計算界奧運會”之稱的國際著名Sort Benchmark全球數據排序大賽中,由南京大學計算機科學與技術系PASA 大數據實驗室、阿里巴巴和Databricks 公司組成的參賽因隊NADSort,以144美元的成本完成lOOTB 標準數據集的排序處理,創下了每TB 數據排序1.44美元成本的最新世界紀錄,比2014 年奪得冠軍的加州大學聖地亞哥分校TritonSort團隊每TB 數據4.51美元的成本降低了近70%,而這次比賽依舊使用Apache Spark 大數據計算平臺,在大規模並行排序算法以及Spark 系統底層進行了大量的優化,以儘可能提高排序計算性能並降低存儲資源開銷,確保最終贏得比賽。

在FullStack 理想的指引下,Spark 中的Spark SQL 、SparkStreaming 、MLLib 、GraphX 、R 五大子框架和庫之間可以無縫地共享數據和操作, 這不僅打造了Spark 在當今大數據計算領域其他計算框架都無可匹敵的優勢, 而且使得Spark 正在加速成爲大數據處理中心首選通用計算平臺

4. Spark爲什麼會流行

● 4.1 原因1:優秀的數據模型和計算抽象

Spark 產生之前,已經有MapReduce這類非常成熟的計算系統存在了,並提供了高層次的API(map/reduce),把計算運行在集羣中並提供容錯能力,從而實現分佈式計算。

雖然MapReduce提供了對數據訪問和計算的抽象,但是對於數據的複用就是簡單的將中間數據寫到一個穩定的文件系統中(例如HDFS),所以會產生數據的複製備份,磁盤的I/O以及數據的序列化,所以在遇到需要在多個計算之間複用中間結果的操作時效率就會非常的低。而這類操作是非常常見的,例如迭代式計算,交互式數據挖掘,圖計算等。

認識到這個問題後,學術界的 AMPLab 提出了一個新的模型,叫做 RDD。RDD 是一個可以容錯且並行的數據結構(其實可以理解成分佈式的集合,操作起來和操作本地集合一樣簡單),它可以讓用戶顯式的將中間結果數據集保存在內存中,並且通過控制數據集的分區來達到數據存放處理最優化.同時 RDD也提供了豐富的 API (map、reduce、foreach、redeceByKey…)來操作數據集。後來 RDD被 AMPLab 在一個叫做 Spark 的框架中提供並開源.

簡而言之,Spark 借鑑了 MapReduce 思想發展而來,保留了其分佈式並行計算的優點並 改進了其明顯的缺陷。讓中間數據存儲在內存中提高了運行速度、並提供豐富的操作數據的API提高了開發速度。

在這裏插入圖片描述

在這裏插入圖片描述

● 4.2 原因2:完善的生態圈

在這裏插入圖片描述
目前,Spark已經發展成爲一個包含多個子項目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子項目

Spark Core:實現了 Spark 的基本功能,包含RDD、任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊。

Spark SQL:Spark 用來操作結構化數據 的程序包。通過 Spark SQL,我們可以使用 SQL操作數據。

Spark Streaming:Spark 提供的對實時數據進行流式計算的組件。提供了用來操作數據流的 API。

Spark MLlib:提供常見的機器學習(ML)功能的程序庫。包括分類、迴歸、聚類、協同過濾等,還提供了模型評估、數據導入等額外的支持功能。

GraphX(圖計算):Spark中用於圖計算的API,性能良好,擁有豐富的功能和運算符,能在海量數據上自如地運行復雜的圖算法。

集羣管理器:Spark 設計爲可以高效地在一個計算節點到數千個計算節點之間伸縮計算。

● 4.3 擴展閱讀:Spark VS Hadoop

在這裏插入圖片描述

★注意:
儘管Spark相對於Hadoop而言具有較大優勢,但Spark並不能完全替代Hadoop ,Spark主要用於替代Hadoop中的MapReduce計算模型。存儲依然可以使用HDFS,但是中間結果可以存放在內存中;調度可以使用Spark內置的,也可以使用更成熟的調度系統YARN

實際上,Spark已經很好地融入了Hadoop生態圈,併成爲其中的重要一員,它可以藉助於YARN實現資源調度管理,藉助於HDFS實現分佈式存儲。

此外,Hadoop可以使用廉價的、異構的機器來做分佈式存儲與計算,但是,Spark對硬件的要求稍高一些,對內存與CPU有一定的要求。

5. Spark運行模式

● Spark運行模式

1.local本地模式(單機)–開發測試使用
分爲local單線程和local-cluster多線程

2.standalone獨立集羣模式–開發測試使用
典型的Mater/slave模式

3.standalone-HA高可用模式–生產環境使用
基於standalone模式,使用zk搭建高可用,避免Master是有單點故障的

4.on yarn集羣模式–生產環境使用
運行在 yarn 集羣之上,由 yarn 負責資源管理,Spark 負責任務調度和計算,
好處:計算資源按需伸縮,集羣利用率高,共享底層存儲,避免數據跨集羣遷移。
FIFO
Fair
Capacity

5.on mesos集羣模式–國內使用較少
運行在 mesos 資源管理器框架之上,由 mesos 負責資源管理,Spark 負責任務調度和計算

6.on cloud集羣模式–中小公司未來會更多的使用雲服務
比如 AWS 的 EC2,使用這個模式能很方便的訪問 Amazon的 S3

介紹就到這裏,下一篇給大家分享怎樣去搭建Spark環境!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章