优点 spark_spark(一)
Spark簡介:
Apache Spark是專為大規模數據處理而設計的快速通用的計算引擎,Spark擁有Hadoop MapReduce所具有的的所有優點,但不同于MapReduce得是job中間輸出結果可以保存在內存中,從而不需要去讀取HDFS,因此Spark能更好的適用于數據挖掘于機器學習等需要的迭代的MapReduce的算法,Spark是Scala編寫,方便快速編程
spark生態圖:
Spark和MapReduce的區別
Spark基于內存,MapReduce基于hdfs.Spark處理數據的能力一般是MapReduce的十倍以上,Spark中除了基于內存計算外,還有DAG有向無環圖來切分任務的執行先后順序
Spark常用運行模式:
Local --本地運行模式
Standalone --是Spark自帶的一個資源調度框架,支持完全分布式
Yarn --Hadoop生態圈的一個資源調度框架,Spark也可以基于其來進行計算
核心庫 --SparkCore
RDD
概念:
RDD(Resilient Distributed Dateset),彈性分布式數據集
RDD五大特性:
1.RDD是由一系列的partition組成的
2.函數是作用在每一個partition(split)上的
3.RDD之間有一系列的依賴關系
4.分區器是作用在K,V格式的RDD上的
5.RDD提供一系列最佳的計算位置
RDD圖解:
要點:
textFile方法底層封裝的是讀取MR讀取文件的方式,讀取文件之前先split,默認split大小是一個block塊大小
RDD實際上不存儲數據,這里為了方便理解,暫時理解為存儲數據
如果RDD里面存儲的數據都是二元組對象,那么這個RDD我們就叫做K,V格式的RDD
體現RDD的彈性(容錯)
--partition數量,大小沒有限制
--RDD之間的依賴關系,可以基于上一個RDD重新算出RDD
體現RDD的分布式:
--RDD由partition組成,partition分布在不同的節點上
RDD提供最佳的計算位置,體現了數據本地化,大數據中"計算以東部移動數據"的概念
Spark任務執行原理
以上圖中,Driver和Worker式啟動在節點上的進程,運行在jvm中的進程
Driver與集群節點之間有頻繁的通信
Driver負責任務(tasks)的分發和結果的回收,任務的調度
Worker和Master是Standalone資源調度框架里面資源管理的從節點,也是jvm進程
Transformations轉換算子
Transformations算子是延遲執行,也叫懶加載執行
filter:過濾符合條件的記錄數,true保留,false過濾
map:將一個RDD中的每一個數據項,通過map中的映射函數變為一個新的元素特點:輸入一條,輸出一條
flatMap:先map后flat,與map類似,每個輸入項可以映射為0-多個輸出項
sample:隨機抽樣算子,根據傳進去小數按比例進行又放回或者無放回的抽樣
reduceByKey:將相同的key根據相應的邏輯進行處理
sortByKey/sortBy:作用在K,V格式的RDD上,對key進行升降序排序
Action行動算子
Action類算子是觸發執行,一個application應用程序中有幾個Action類算子執行,就有幾個job運行
count:返回數據集中的元素數,會在結果計算完成會受到Driver端
take(n):返回一個包含數據及前n個元素的集合
first:返回數據集中的第一個元素
foreach:循環遍歷數據集,運行相應的邏輯
collect:將計算結果會收到Driver端
控制算子
控制算子有三種,cache,persist,checkpoint,以上算子都可以將RDD持久化,持久化單位為partition,cache和persist是懶執行的,必須有一個action類算子觸發執行,checkpoint算子不僅僅能將RDD持久化,還能切斷RDD之間的依賴關系
cache
默認將RDD的數據持久化到內存中,
persist
可以指定持久化的級別,最常用的是MEMORYONLY和MEMORY_AND_DISK
_2表示副本數持久化級別如下:
cache和persist注意事項;
1.cache和persist都是懶執行,必須要有一個action類算子來觸發執行
2.cache和persist算子的返回值可以賦值給一個變量,在其他job中直接使用這個變量就是使用持久化的數據了,持久化單位是partition
3.cache和persist算子后不能立即緊跟action類算子
checkpoint
checkpoint將RDD持久化到磁盤中,還可以切斷RDD之間的依賴關系
checkpoint的執行原理:
1.當RDD的job執行完畢之后,會從finalRDD從后往前回溯
2.當回溯到摸一個RDD調用了checkpoint方法,會對當前的RDD做一個標記
3.Spark框架會自動啟動一個新的job,重新計算這個RDD的數據,將數據持久化到HDFS中
優化:對RDD執行checkpoint方法之前,最好對這個RDD先執行cache,這樣新啟動的job只需將內存中的數據拷貝到HDFS上就可以了,省去了重新計算的這一步
總結
以上是生活随笔為你收集整理的优点 spark_spark(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vc获取n卡编号_电脑入门知识:通过显卡
- 下一篇: 3a算法 isp_Isp图像算法工程师