Spark擁有DAG執行引擎,支持在內存中對數據進行迭代計算
Spark不僅支持Scala編寫應用程序,而且支持Java和Python等語言進行編寫,特別是Scala是一種高效、可拓展的語言,能夠用簡潔的代碼處理較為復雜的處理工作。
Spark生態圈即BDAS===》
Spark具有很強的適應性,能夠讀取HDFS、Cassandra、HBase、S3和Techyon為持久層讀寫原生數據,能夠以Mesos、YARN和自身攜帶的Standalone作為資源管理器調度job,來完成Spark應用程序的計算。
spark跟hadoop的比較:
Spark是在借鑒了MapReduce之上發展而來的,繼承了其分布式並行計算的優點並改進了MapReduce明顯的缺陷,具體如下:
首先,Spark把中間數據放到內存中,迭代運算效率高。MapReduce中計算結果需要落地,保存到磁盤上,這樣勢必會影響整體速度,而Spark支持DAG圖的分布式並行計算的編程框架,減少了迭代過程中數據的落地,提高了處理效率。
其次,Spark容錯性高。Spark引進了彈性分布式數據集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一組節點中的只讀對象集合,這些集合是彈性的,如果數據集一部分丟失,則可以根據“血統”(即充許基於數據衍生過程)對它們進行重建。另外在RDD計算時可以通過CheckPoint來實現容錯,而CheckPoint有兩種方式:CheckPoint Data,和Logging The Updates,用戶可以控制采用哪種方式來實現容錯。
最后,Spark更加通用。不像Hadoop只提供了Map和Reduce兩種操作,Spark提供的數據集操作類型有很多種,大致分為:Transformations和Actions兩大類。Transformations包括Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort和PartionBy等多種操作類型,同時還提供Count, Actions包括Collect、Reduce、Lookup和Save等操作。另外各個處理節點之間的通信模型不再像Hadoop只有Shuffle一種模式,用戶可以命名、物化,控制中間結果的存儲、分區等。
Spark支持多種分布式存儲系統:HDFS和S3