更新時間:2020-10-28 來源:黑馬程序員 瀏覽量:
Spark在2013年加入Apache孵化器項目,之后獲得迅猛的發(fā)展,并于2014年正式成為Apache軟件基金會的頂級項目。Spark從最初研發(fā)到最終成為Apache頂級項目,其發(fā)展的整個過程僅用了5年時間。
目前,Spark生態(tài)系統(tǒng)已經發(fā)展成為一個可應用于大規(guī)模數據處理的統(tǒng)一分析引擎,它是基于內存計算的大數據并行計算框架,適用于各種各樣的分布式平臺的系統(tǒng)。在Spark生態(tài)圈中包含了Spark SQL、Spark Streaming、GraphX、MLlib等組件,這些組件可以非常容易地把各種處理流程整合在一起,而這樣的整合,在實際的數據分析過程中是很有意義的。不僅如此,Spark的這種特性還大大減輕了原先需要對各種平臺分別管理的依賴負擔。下面,通過一張圖描述Spark的生態(tài)系統(tǒng),具體如圖1所示。
圖1 Spark生態(tài)系統(tǒng)
通過圖1可以看出,Spark生態(tài)系統(tǒng)主要包含Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX以及獨立調度器,下面針對上述組件進行一一介紹。
Spark Core:Spark核心組件,它實現了Spark的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統(tǒng)交互等模塊。Spark Core中還包含了對彈性分布式數據集(Resilient Distributed Datasets,簡稱RDD)的API 定義,RDD是只讀的分區(qū)記錄的集合,只能基于在穩(wěn)定物理存儲中的數據集和其他已有的RDD上執(zhí)行確定性操作來創(chuàng)建。
Spark SQL:用來操作結構化數據的核心組件,通過Spark SQL可以直接查詢Hive、HBase等多種外部數據源中的數據。Spark SQL的重要特點是能夠統(tǒng)一處理關系表和RDD。在處理結構化數據時,開發(fā)人員無需編寫MapReduce程序,直接使用SQL命令就能完成更加復雜的數據查詢操作。
Spark Streaming:Spark提供的流式計算框架,支持高吞吐量、可容錯處理的實時流式數據處理,其核心原理是將流數據分解成一系列短小的批處理作業(yè),每個短小的批處理作業(yè)都可以使用Spark Core進行快速處理。Spark Streaming支持多種數據源,例如Kafka、Flume以及TCP套接字等數據源。
MLlib:Spark提供的關于機器學習功能的算法程序庫,包括分類、回歸、聚類、協(xié)同過濾算法等,還提供了模型評估、數據導入等額外的功能,開發(fā)人員只需了解一定的機器學習算法知識就能進行機器學習方面的開發(fā),降低了學習成本。
GraphX:Spark提供的分布式圖處理框架,擁有對圖計算和圖挖掘算法的API接口以及豐富的功能和運算符,極大的方便了對分布式圖處理的需求,能在海量數據上運行復雜的圖算法。
獨立調度器、Yarn、Mesos:Spark框架可以高效地在一個到數千個節(jié)點之間伸縮計算,集群管理器則主要負責各個節(jié)點的資源管理工作,為了實現這樣的要求,同時獲得最大靈活性,Spark支持在各種集群管理器(Cluster Manager)上運行,Hadoop Yarn、Apache Mesos以及Spark自帶的獨立調度器都被稱為集群管理器。
Spark生態(tài)系統(tǒng)各個組件關系密切,并且可以相互調用,這樣設計具有以下顯著優(yōu)勢:
Spark生態(tài)系統(tǒng)包含的所有程序庫和高級組件都可以從Spark核心引擎的改進中獲益。
不需要運行多套獨立的軟件系統(tǒng),能夠大大減少運行整個系統(tǒng)的資源代價。
能夠無縫整合各個系統(tǒng),構建不同處理模型的應用。
綜上所述,Spark框架對大數據的支持從內存計算、實時處理到交互式查詢,進而發(fā)展到圖計算和機器學習模塊。Spark生態(tài)系統(tǒng)廣泛的技術面,一方面挑戰(zhàn)占據大數據市場份額最大的Hadoop,另一方面又隨時準備迎接后起之秀Flink、Kafka等計算框架的挑戰(zhàn),從而使Spark在大數據領域更好的發(fā)展。
Spark計算框架在處理數據時,所有的中間數據都保存在內存中。正是由于Spark充分利用內存對數據進行計算,從而減少磁盤讀寫操作,增大了框架計算效率。同時Spark還兼容HDFS、Hive,可以很好地與Hadoop系統(tǒng)融合,從而彌補MapReduce高延遲的性能缺點。所以說,Spark是一個更加快速、高效的大數據計算平臺。
Spark具有以下幾個顯著的特點:
1. 速度快
根據官方數據統(tǒng)計得出,與Hadoop相比,Spark基于內存的運算效率要快100倍以上,基于硬盤的運算效率也要快10倍以上。Spark實現了高效的DAG執(zhí)行引擎,能夠通過內存計算高效地處理數據流。
2. 易用性
Spark編程支持Java、Python、Scala或R語言,并且還擁有超過80種的高級算法,除此之前,Spark還支持交互式的Shell操作,開發(fā)人員可以方便的在Shell客戶端中使用Spark集群解決問題。
3. 通用性
Spark提供了統(tǒng)一的解決方案,適用于批處理、交互式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX),它們可以在同一個應用程序中無縫的結合使用,大大減少大數據開發(fā)和維護的人力成本和部署平臺的物力成本。
4. 兼容性
Spark可以運行在Hadoop模式、Mesos模式、Standalone獨立模式或Cloud中,并且還可以訪問各種數據源,包括本地文件系統(tǒng)、HDFS、Cassandra、HBase和Hive等。
猜你喜歡: