client客戶端:我們在本地編寫了spark程式,打成jar包,或python指令碼,通過spark submit命令提交到spark集群;
只有spark程式在spark集群上執行才能拿到spark資源,來讀取資料源的資料進入到記憶體裡;
客戶端就在spark分布式記憶體中並行迭代地處理資料,注意每個處理過程都是在記憶體中並行迭代完成;注意:每一批節點上的每一批資料,實際上就是乙個rdd!!!乙個rdd是分布式的,所以資料都散落在一批節點上了,每個節點都儲存了rdd的部分partition。
spark與mapreduce最大的不同在於,迭代式計算模型:mapreduce,分為兩個階段,map和reduce,兩個階段完了,就結束了,所以我們在乙個job裡能做的處理很有限; spark,計算模型,可以分為n個階段,因為它是記憶體迭代式的。我們在處理完乙個階段以後,可以繼續往下處理很多個階段,而不只是兩個階段。所以,spark相較於mapreduce來說,計算模型可以提供更強大的功能。
rdd是spark提供的核心抽象,全稱為resillient distributed dataset,即彈性分布式資料集;
rdd在抽象上來說是一種元素集合,包含了資料。它是被分割槽的,分為多個分割槽,每個分割槽分布在集群中的不同節點上,從而讓rdd中的資料可以被並行操作。(分布式資料集);
rdd通常通過hadoop上的檔案,即hdfs檔案或者hive表,來進行建立;有時也可以通過應用程式中的集合來建立;
rdd最重要的特性就是,提供了容錯性,可以自動從節點失敗中恢復過來。即如果某個節點上的rdd partition,因為節點故障,導致資料丟了,那麼rdd會自動通過自己的資料**重新計算該partition。這一切對使用者是透明的;
rdd的資料預設情況下存放在記憶體中的,但是在記憶體資源不足時,spark會自動將rdd資料寫入磁碟。(彈性)。
乙個rdd,在邏輯上,抽象地代表了乙個hdfs檔案;但是,它實際上是被分為多個分割槽;多個分割槽散落在spark集群中,不同的節點上。比如說,rdd有900萬資料。分為9個partition,9個分割槽。
rdd的每個partition,在spark節點上儲存時,預設都是放在記憶體中的。但是如果說記憶體放不下這麼多資料時,比如每個節點最多放50萬資料,結果你每個partition是100萬資料。那麼就會把partition中的部分資料寫入磁碟上,進行儲存。
而上述這一切,對於使用者來說,都是完全透明的。也就是說,你不用去管rdd的資料儲存在**,記憶體,還是磁碟。只要關注,你針對rdd來進行計算,和處理,等等操作即可。所以說,rdd的這種自動進行記憶體和磁碟之間權衡和切換的機制,就是rdd的彈性的特點所在。
現在,節點9出了些故障,導致partition9的資料丟失了。那麼此時spark會脆弱到直接報錯,直接掛掉嗎?不可能!!
rdd是有很強的容錯性的,當它發現自己的資料丟失了以後,會自動從自己**的資料進行重計算,重新獲取自己這份資料,這一切對使用者,都是完全透明的。
•核心開發
:離線批處理 / 延遲性的互動式資料處理
第一,定義初始的rdd,就是說,你要定義第乙個rdd是從**,讀取資料,hdfs、linux本地檔案、程式中的集合。
第二,定義對rdd的計算操作,這個在spark裡稱之為運算元,map、reduce、flatmap、groupbykey,比mapreduce提供的map和reduce強大的太多太多了。
第三,其實就是迴圈往復的過程,第乙個計算完了以後,資料可能就會到了新的一批節點上,也就是變成乙個新的rdd。然後再次反覆,針對新的rdd定義計算操作。。。。
第四,最後,就是獲得最終的資料,將資料儲存起來。
sql查詢
:底層都是rdd和計算操作
實時計算
:底層都是rdd和計算操作
spark學習總結
Spark基本原理
僅作 spark快速大資料分析 學習筆記 定義 spark是乙個用來實現 快速 而 通用 的集群計算平台 通用的大資料處理引擎 改進了原hadoop mapreduce處理模型,體現在三方面 a.速度 記憶體計算 b.不僅支援批處理,還支援互動式查詢 速度快的成果 流式計算 機器學習 圖計算等 迭代...
Spark基本原理與RDD
spark基本工作原理 1 分布式 2 主要基於記憶體 少數情況基於磁碟 3 迭代式計算 rdd以及其特點 1 rdd是spark提供的核心抽象,全稱為resillient distributed dataset,即彈性分布式資料集。2 rdd在抽象上來說是一種元素集合,包含了資料。它是被分割槽的,...
mysql的基本原理 Mysql 基本原理
mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...