spark系列1 spark的前世今生

2021-10-22 05:40:11 字數 2002 閱讀 5601

目標

了解 spark 的歷史和產生原因, 從而淺顯的理解 spark 的作用

spark的歷史

spark是什麼

apache spark 是乙個快速的, 多用途的集群計算系統, 相對於 hadoop mapreduce 將中間結果儲存在磁碟中, spark 使用了記憶體儲存中間結果, 能在資料尚未寫入硬碟時在記憶體中進行運算.

spark 只是乙個計算框架, 不像 hadoop 一樣包含了分布式檔案系統和完備的排程系統, 如果要使用 spark, 需要搭載其它的檔案系統和更成熟的排程系統

為什麼會有spark

spark 產生之前, 已經有非常成熟的計算系統存在了, 例如 mapreduce, 這些計算系統提供了高層次的api, 把計算執行在集群中並提供容錯能力, 從而實現分布式計算.

雖然這些框架提供了大量的對訪問利用計算資源的抽象, 但是它們缺少了對利用分布式記憶體的抽象, 這些框架多個計算之間的資料復用就是將中間資料寫到乙個穩定的檔案系統中(例如hdfs), 所以會產生資料的複製備份, 磁碟的i/o以及資料的序列化, 所以這些框架在遇到需要在多個計算之間復用中間結果的操作時會非常的不高效.

而這類操作是非常常見的, 例如迭代式計算, 互動式資料探勘, 圖計算等.

認識到這個問題後, 學術界的 amplab 提出了乙個新的模型, 叫做rdds.

rdds是乙個可以容錯且並行的資料結構, 它可以讓使用者顯式的將中間結果資料集儲存在內中, 並且通過控制資料集的分割槽來達到資料存放處理最優化.

同時rdds也提供了豐富的 api 來運算元據集.

後來 rdds 被 amplab 在乙個叫做 spark 的框架中提供並開源.

總結spark 是apache的開源框架

spark 的母公司叫做 databricks

spark 是為了解決 mapreduce 等過去的計算系統無法在記憶體中儲存中間結果的問題

spark 的核心是 rdds, rdds 不僅是一種計算框架, 也是一種資料結構

目標理解 spark 的特點, 從而理解為什麼要使用 spark

速度快易用

df = spark.read.json("logs.json")

df.where("age > 21") \

.select("name.first") \

.show()

通用

相容總結

目標理解 spark 能做什麼

理解 spark 的學習路線

spark 最核心的功能是 rdds, rdds 存在於spark-core這個包內, 這個包也是 spark 最核心的包.

同時 spark 在spark-core的上層提供了很多任務具, 以便於適應不用型別的計算.

spark-core 和 彈性分布式資料集(rdds)

spark sql

spark streaming

mllib

graphx

graphx 是分布式圖計算框架, 提供了一組可以表達圖計算的 api, graphx 還對這種抽象化提供了優化執行

總結hadoop

spark

型別

基礎平台, 包含計算, 儲存, 排程

分布式計算工具

場景

大規模資料集上的批處理

迭代計算, 互動式計算, 流計算

延遲

易用性

api 較為底層, 演算法適應性差

api 較為頂層, 方便使用

**

對機器要求低, 便宜

對記憶體有要求, 相對較貴

Spark系列 二 Spark的資料讀入

真的是超級忙碌的一周,所幸的是我們迎來了新的家庭成員乙隻小貓咪 大王。取名為大王的原因竟然是因為之前作為流浪貓的日子總是被其他貓所欺負,所以希望他能做乙隻霸氣的霸王貓啦。言歸正傳,在周一見的悲傷中唯有寫一篇部落格才能緩解我的憂傷吧。spark讀取文字檔案 textfile def textfile ...

Spark系列 三 Spark的工作機制

什麼時候才能回歸到看 寫感想的日子呀 剛剛交完房租的我血槽已空。看了師妹關於spark報告的ppt,好懷念學生時代開組會的時光啊,雖然我已經離開學校不長不短兩個月,但我還是非常認真的翻閱了,並作為大自然的搬運工來搬運知識了。1 local,本地執行,通過多執行緒來實現平行計算。2 本地偽集群執行模式...

Spark入門系列

讀完spark官方文件後,在研究別人的原始碼以及spark的原始碼之前進行一番入門學習,這個系列不錯。spark系列 除此之外,databricks也是乙個非常不錯的 上面可以使用免費的spark集群進行 提交與測試,在youtube以及spark大會中都有其發布教程以及spark應用部署的相關細節...