發布時間: 2022-03-09 16:08:53
Spark框架是一個快速且API豐富的內存計算框架。Spark采用Scala語言編寫,Scala是基于JVM的語言,性能開銷小。
在Spark,一切計算都是基于RDD句柄來進行操作的。RDD就像一個數據容器,可以有輸入口,可以有輸出口。在內存中,Spark使用Tachyon——一種類似于內存中的HDFS的內存分布式存儲框架,這樣使得讀寫速度有了極大的提高(官方說是100倍)。
Spark提供了大量的應用程序接口,如Python、Scala、Java以及SQL接口,還可以使用HDFS、Hive、Cassandra等作為數據源,它的外部接口非常豐富,而且自身支持了很多組件,主要組件如圖所示。
Spark的組件
1.Spark Core
Spark Core是指Spark的核心功能,包括任務調度、內存分配回收、RDD(彈性分布式數據集,Resilient Distributed Dataset)操作、API處理等,是Spark的核心組件。
2.Spark SQL
Spark SQL最早采用了Apache Hive的SQL版本,當時被稱作Shark,它可以讓用戶通過SQL來操作RDD,,而且能夠支持交互方式的數據訪問。但是因為效率不高,在1.0版本重新編寫了Spark SQL來取代HQL(Hive版本的SQL,也有的資料上會寫作HiveQL),使用SQL操作Spark RDD大大降低了Spark編程的難度。
3.Spark Streaming
Spark Streaming是流式計算組件。在Spark Streaming里,流處理實際用的是Micro-Batch的方式,即微批處理。什么是Micro-Batch?Batch是批處理的意思,就是一次性處理需要的事務,中間不需要和人進行交互。而Micro-Batch處理的對象是以毫秒為單位的微小的批處理。
可以在內存里把輸入的流數據“攢”夠1秒、2秒或者其他時間長度,然后把攢起來的數據當做一個RDD塊。一個RDD塊上能夠進行什么計算和操作,那么這個Micro-Batch上就能夠進行同樣的計算和操作。為了避免提交作業過于頻繁而導致開銷占比過大的問題,通常不推薦去做毫秒級別的Micro-Batch,請大家注意這點。
4.MLlib
MLlib是Spark的機器學習(ML)組件,提供了大量的可集群化的算法,包括聚類、分類、邏輯回歸、協同過濾等。
5.GraphX
GraphX是可以進行集群化的圖形計算和圖形挖掘組件。這種組件非常適合用于微信、微博等各種社交網絡產品的用戶關系或者產品關系計算,這比用笛卡兒積的方式去做還是輕量很多。
這些封裝好的組件都為使用Spark提供了很大的便利,再加上友好的API、比Hadoop更快的處理速度,使Spark逐漸搶占Hadoop的市場份額,在開源大數據計算中出現的頻率越來越高。接下來安裝Spark并用Spark來演示如何進行單詞統計(WordCount)。
上一篇: 怎么安裝Spark
下一篇: 如何安裝Hadoop