Hadoop之Spark基本簡介

2021-09-23 14:50:22 字數 1790 閱讀 7375

任務背景:完成最終的任務需要分為若干個有依賴關係的子任務連線成乙個dag(有向無環)圖。

hadoop:由於完成這個圖任務有多個map-reduce子任務,每個子任務都要把輸出的結果儲存起來(預設是三份)以供下乙個任務的讀取,而且每個子任務map-reduce的中間結果也會把資料儲存在本地。

ps:在ml任務下效率很不理想,大量的磁碟io和網路io拉低了程式的效率。 

ps:map-reduce的過程細分:map對映鍵值對,shuffle雜湊對映劃分區塊,reduce合併區塊的到結果。

spark:在map-reduce子任務的基礎上在進行任務的細分組成乙個新的dag圖,並且去掉了hdfs本地儲存的過程,使用記憶體來加快速度。

ps:對多工map-reduce通過細分map-reduce省去了磁碟的io,大大提高了效率。

ps:在任務只有一次map-reduce的情況下,效果是遠遠不如map-reduce的。

spark提出的起始就是因為在處理複雜問題的情況下效果很不好,所以就有了spark雛形,然後由於專案很好工業上吸引程度也很大,才一步一步發展了起來。spark在有了mllib計算框架,spark sql資料索引模組,streaming流式實時計算的情況下,由於資料結構不統一造成程式設計複雜,就在原始rdd的資料結構上進行了封裝出現了dataframe,再在此上封裝了一層dataset是程式設計複雜度大大降低,在之後就是基本框架上的優化了。

ps:資源排程一般是用yarn來進行;資料的互動一般也是利用了hdfs來執行;所以說spark只是在一定型別的問題上代替了map-reduce。

hive的提出:由於mapreduce的使用難度較大,facebook基於此提出了hive,它的出現解決了這個問題,它的原理是將hql語句經過一系列變換,最終轉換為了mapreduce程式去執行。

shark的提出:由於hive轉化為了mapreduce雖然降低了開發難度,但是效率很不如意,這才引出了shark,它的不但相容了hql而且還把mapreduce作業變為了spark,最終使得效能比hive有了10-100倍的提高。

spark sql的提出:由於shark需要相容hive所以在有些功能上面不太好為了處理這個問題,spark團隊把shark專案轉給了hive團隊使得hive有了多個引擎(mapreduce,tez,spark),而spark團隊研發出了不但可以很好的相容hive,而且還不受限於hive的spark sql就此誕生了。

ps:spark sql不斷的在原始rdd的資料結構基礎上進行優化,推出了dataframe(型別不安全)和dataset(型別安全)資料結構。

很經典的一段話:

ps:型別安全性就是嚴格區分資料的型別,不同的型別不同的處理,型別之間的轉換遵循嚴格的規範(例如:型別的轉換,型別是否匹配等等),保證不發生型別錯誤。

Hadoop守護程序 簡

守護程序,也就是通常說的daemon程序,是linux中的後台 服務程序。一般如果正常啟動hadoop,我們可以在master上通過jps命令看到以下5個daemons root master jps 19803secondarynamenode 19994tasktracker 31144 jps...

spark學習之sparkSql基本操作

第一周學習總結 總結了近期學到的爬蟲知識與echarts呼叫學習,每天的 時間在2倆小時以上。近期還會總結一下spark 得學習記錄。三 實驗內容和要求 1 spark sql 基本操作 將下列 json 格式資料複製到 linux 系統中,並儲存命名為 employee.json。為 employ...

Hadoop 和 Spark 的異同

談到大資料,相信大家對hadoop和apache spark這兩個名字並不陌生。但我們往往對它們的理解只是提留在字面上,並沒有對它們進行深入的思考,下面不妨跟我一塊看下它們究竟有什麼異同。首先,hadoop和apache spark兩者都是大資料框架,但是各自存在的目的不盡相同。hadoop實質上更...