Spark學習筆記

Spark簡介

Spark的歷史

Spark在2012開源,距今長達6年時間,hadoop已經有12年的歷史了。Spark使用Scala語言進行實現,它是一種面向對象、函數式編程語言,能夠像操作本地集合對象一樣輕鬆地操作分佈式數據集,在Spark官網上介紹,它具有運行速度快、易用性好、通用性強和隨處運行等特點。

spark特點

  • 運行速度快

spark在內存中對數據進行迭代計算如果數據由內存讀取是hadoop MapReduce的100倍。Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反覆操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小.

  • 易用性好

支持Scala編程java編程 Python等語言(Scala是一種高效可擴展語言,使用簡潔)

  • 一次編譯,隨意執行

spark運行在Hadoop,cloud上,能夠讀取HDFS,HBase Cassandra等數據源

  • 通用性強

spark生態圈(BDAS)包括spark Core、spark SQL Spark Streaming等組件,這些組件提供spark Core處理內存計算框架

spark開發者

加州大學伯克利分校的AMP實驗室開發的。

spark比MR快的原因

Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反覆操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小。

總結來說就是:spark是基於內存迭代的,而MR是基於磁盤迭代的。

Spark的四種運行模式

  • local
  • standalone
  • yarn
  • mesos

開發Spark的語言

  • Java
  • Scala
  • Python
  • R

1,首先Spark計算框架是由Scala來寫,所以Scala作爲Spark的開發語言,兼容性和效率上都是毫無疑問的。
2,Java和Scala都是基於JVM的編程語言,所以Java和Scala在開發Spark上兼容性和效率都是一樣的。
3,Python是解釋性語言,他要在解釋中運行,那麼他要開發Spark應用程序,就要運行在JVM上,也就是解釋器要和JVM之間要進行通信,所以它的效率要比Java和Scala差。
4,R語言,它的應用並不是很多,這裏不做詳細介紹。

RDD(彈性分佈式數據集)

RDD簡介

RDD(Resilient Distributed Dataset)叫做彈性分佈式數據集,是Spark中最基本的數據抽象,它代表一個不可變、可分區、裏面的元素可並行計算的集合。RDD具有數據流模型的特點:自動容錯、位置感知性調度和可伸縮性。RDD允許用戶在執行多個查詢時顯式地將工作集緩存在內存中,後續的查詢能夠重用工作集,這極大地提升了查詢速度。

RDD五大特性

在這裏插入圖片描述

RDD的三種算子

  • Transformation類算子
  • Action類算子
  • 控制類算子

Transformation類算子

  • map:一對一
  • flatMap:一對多
  • filter:一對N(0,1)
  • join:inner(內連接)
  • leftouter join
  • rightouter join
  • fullouter join
  • sortByKey
  • groupByKey
  • reduceByKey
  • sortBy
  • sample

Action類算子

1、 count
2、collect:將task的計算結果拉回到Driver端
3、foreach:不會回收所有task的計算結果,原理:將用戶傳入的函數傳遞到 各個節點上去執行,只能去各個節點找計算結果。

查看結果的方式:

  1. web UI
  2. 去各個節點的Worker工作目錄查看 SPARK_WORKER_DIR去各個節點的Worker工作目錄查看 SPARK_WORKER_DIR

4、saveAsTextFile(path) path:本地、HDFS路徑
5、reduce

控制類算子

  1. cache
  2. persist
    MEMORY_ONLY
    DISK_ONLY
    MEMORY_AND_DISK

注意點:

  1. 控制類算子後不能立即緊跟action類算子
  2. 緩存單元是Partition
  3. 懶執行,需要action類算子觸發執行
    如果你的Application中只要一個job,沒有必要使用控制類算子

RDD的大體流程

在這裏插入圖片描述

如圖即是wordCount小案例的大體流程,相比較於MR應用程序簡單了許多,並且執行效率上也更快。

Spark集羣搭建

請參考下一篇博客Spark集羣的搭建。

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