1. 程式人生 > >Spark基礎知識學習分享

Spark基礎知識學習分享

原文連結:http://blog.csdn.net/lantian0802/article/details/22507525

一、Spark基礎知識梳理

1.Spark是什麼? 
Spark是一個通用的平行計算框架,由UCBerkeley的AMP實驗室開發。Spark基於map reduce 演算法模式實現的分散式計算,擁有Hadoop MapReduce所具有的優點;但不同於Hadoop MapReduce的是Job中間輸出和結果可以儲存在記憶體中,從而不再需要讀寫HDFS,節省了磁碟IO耗時,號稱效能比Hadoop快100倍。 

2.Spark效能比Hadoop快原因分解: 
(1)傳統Hadoop資料抽取運算模型是: 

ps:資料的抽取運算基於磁碟,中間結果也是儲存在磁碟上。MR運算伴隨著大量的磁碟IO。 
(2)Spark 則使用記憶體代替了傳統HDFS儲存中間結果: 

簡述:第一代的Hadoop完全使用Hdfs儲存中間結果,第二帶的Hadoop加入了cache來儲存中間結果。而Spark則基於記憶體的中間資料集儲存。可以將Spark理解為Hadoop的升級版本,Spark相容了Hadoop的API,並且能夠讀取Hadoop的資料檔案格式,包括HDFS,Hbase等。 

3.Spark架構圖: 

    (1)Bagel(pregel on spark):Bagel是基於Spark的輕量級的Pregel(Pregel是Google鼎鼎有名的圖計算框架)的實現。 

(2)Shark(Hive on Spark):Shark基本上就是在Spark的框架基礎上提供和Hive一樣的HiveQL命令介面。可以理解為Shark On Spark,就是Hive On Hadoop,兩者地位是一樣的。ps:Shark可以通過UDF使用者自定義函式實現特定的資料分析學習演算法,使得SQL資料查詢和運算分析功能結合在一起(最大化RDD的重複使用)。

(3)Streaming(Spark):Spark Streaming是構建在Spark上的處理實時資料的框架。其基本原理是將Stream資料分成小的時間片段(幾秒),以類似batch批處理的方式來處理小部分資料。

(4)RDD(Resilient Distributed Dataset,彈性分散式資料集):RDD是Spark操縱資料的一個高度抽象,即Spark所操作的資料集都是包裝成RDD來進行操作的,例如Spark可以相容處理Hadoop的HDFS資料檔案,那麼這個HDFS資料檔案就是包裝成Spark認識的RDD來完成資料抽取和處理的。RDD的一個英文定義是:RDDs are fault-tolerant, parallel data structures that let users explicitly persist intermediate results in memory, control their partitioning to optimize data placement, and manipulate them using a rich set of operators. 用我薄弱的英語能力翻譯一下就是:RDD是一個能夠讓使用者可以準確的將中間結果資料持久化到記憶體中的一個可用錯的並行資料結構,可以控制(RDD資料集)分割槽,優化資料儲存,並且有一組豐富的操作集可以操作這份資料。ps:RDD是Spark的一個核心抽象,Spark的資料操作都是基於RDD來完成。 

(5)Map Reduce:MR 是Spark可以支撐的運算模式,比傳統的Hadoop MR的效能更好,並且操作集更加豐富。Spark的MR計算引擎的架構圖: 

ps:圖中的FP不知道是什麼,誰知道可以告訴我一下哈!

(6)Spark的執行模式:apache Mesos和YARN計算兩套資源管理框架,Spark最初設計就是跑在這兩個資源管理框架之上的,至於Spark的本地執行模式和獨立執行模式則是方便了除錯。(至於圖中的EC2,應該屬跑在亞馬遜雲端的資源管理引擎上的吧,我猜?)。YARN資源管理框架也是Hadoop2.0的產物,大大優化了傳統Hadoop通過JobTracker和TaskTracker來排程計算任務的方式,使叢集更加平臺化,可以部署多中計算引擎,比如傳統的Hadoop MR和Spark都可以跑在同一個叢集上,YARN這類資源管理框架出現之前是做不到的。 

(7)Spark資料的儲存:Spark支援多種資料底層儲存,這點比Hadoop支援的資料檔案格式廣泛的多。Spark可以相容HDFS,Hbase,Amazon S3等多種資料集,將這些資料集封裝成RDD進行操作。 

4.Spark照比傳統Hadoop MR的改進點: 
(1)迭代運算,一次建立資料集。多次使用,減少了IO的開銷;(2)允許多種計算模型(包含map-reduce);(3)支援非OO式演算法實現,對機器學習演算法,圖計算能力有很好的支援。 

5.Spark的適用場景: 
Spark立足於記憶體計算,從而不再需要頻繁的讀寫HDFS,這使得Spark能更好的適用於: 
(1) 迭代演算法,包括大部分機器學習演算法Machine Learning和比如PageRank的圖形演算法。 
(2) 互動式資料探勘,使用者大部分情況都會大量重複的使用匯入RAM的資料(R、Excel、python) 
(3) 需要持續長時間維護狀態聚合的流式計算。 

二、Hadoop YARN 基礎知識梳理

1.Yarn是什麼: 
Yarn (Hadoop MapReduceV2)是Hadoop 0.23.0版本後新的map-reduce框架或這更準確的說是框架容器。 
架構圖: 

名詞解釋: 
(1) ResourceManager:以下簡稱RM。YARN的中控模組,負責統一規劃資源的使用。 
ps:ResourceManager是YARN資源控制框架的中心模組,負責叢集中所有資源的統一管理和分配。它接收來自NM的彙報,建立AM,並將資源派送給AM。 
(2) NodeManager:以下簡稱NM。YARN中的資源結點模組,負責啟動管理container。 
(3) ApplicationMaster以下簡稱AM。YARN中每個應用都會啟動一個AM,負責向RM申請資源,請求NM啟動container,並告訴container做什麼事情。 
(4) Container:資源容器。YARN中所有的應用都是在container之上執行的。AM也是在container上執行的,不過AM也是在Container上執行的,不過AM的container是向RM申請的。 

簡述:新一代的YARN容器框架,是傳統的MR Hadoop容器框架的升級版本,之前的MR部署架構依賴於JobTracker和TaskTracker的互動模式,而新一代的YARN容器框架,則採用了ResourceManager和NodeManager的互動模式,更高層次的抽象和架構設計,是的YARN容器框架能夠支撐多種計算引擎執行,包括傳統的Hadoop MR和現在的比較新的SPARK。 

2.Hadoop YARN產生的背景: 
(1)直接源於MRv1(傳統的Hadoop MR)如下幾個缺陷: 
受限的擴充套件性;單點故障;難以支援MR之外的計算; (2)多計算框架各自為戰,資料共享困難。比如MR(離線計算框架),Storm實時計算框架,Spark記憶體計算框架很難部署在同一個叢集上,導致資料共享困難。 
簡述:Hadoop Yarn的出現則解決了上述問題。 

3.Hadoop 1.0到Hadoop 2.0(基於YARN)的演變: 

簡述:hadoop2.0在傳統的MapReduce計算框架和儲存框架HDFS之間加了一個YARN層,使得叢集框架可以支撐多中計算引擎,包括上文中的SPARK。 

4.以Yarn為核心的Hadoop2.0生態系統: 

簡述:圖片簡單明瞭,不多說了。 

5.執行在YARN上的計算框架: 
(1)離線計算框架:MapReduce 
(2)DAG計算框架:Tez 
(3)流式計算框架:Storm 
(4)記憶體計算框架:Spark 
(5)圖計算框架:Giraph,Graphlib 

6.Spark On Yarn的排程管理: 


7.傳統MapReduce 在YARN上的排程: 

ps:梳理了一下Spark和YARN的基礎概念,初步瞭解一下哈,細節部分有待深挖!

相關推薦

Spark基礎知識學習分享

原文連結:http://blog.csdn.net/lantian0802/article/details/22507525 一、Spark基礎知識梳理 1.Spark是什麼?  Spark是一個通用的平行計算框架,由UCBerkeley的AMP實驗室開發。Spark基於map reduce 演算

spark基礎知識學習第五天(適合新手學習

Shark Hive sql -> mrShark sql ->Spark coreSpark2.0之前的版本的Spark-SQL並不支援開窗函式和子查詢的1.Spark SQL1.6.x特點:(1).記憶體列儲存(不是按照物件儲存的),面向列的儲存方式(減少對記憶體的消耗)(2).位元組碼生成技

python之 前端HTML/CSS基礎知識學習筆記

引號 編寫 css基礎 通用 浮動 我們 公司地址 將不 多行 1. 文件結構: HTML文件的固定結構: <html> <head>...</head> <body>...&l

mongodb權威指南之mongodb基礎知識學習記錄

pre lec fin 基礎知識 pda log editor 批量 l數據庫 mongo show dbs查看所有的數據庫 使用use可以切換數據庫,如果沒有數據庫則創建一個新的 use local切換倒local數據庫 增加數據 db.test.insert({name

java基礎知識學習--------之枚舉類型(1)

blog 枚舉類型 csdn 相同 名稱 枚舉類 java string pac 枚舉類型的概念: 1 /** 2 * 目的:枚舉類型 3 * @author chenyanlong 4 * 日期:2017/10/22 5 * 網址:http://blo

MySQL數據庫基礎知識學習筆記(一)

mysql數據庫1、MySQL基礎與sql語句實戰 MySQL是一種關系型數據庫管理系統,在互聯網公司裏非常流行。Linux下用yum命令安裝 實操:連接數據庫172.16.41.89登錄mysql命令:Mysql -u root -p 回車,然後輸入密碼 查看數據庫:Show databases; 新建數

MySQL數據庫基礎知識學習筆記(二)

內連接 左連接 右連接 子連接 sql語句實戰--表連接 (多表查詢)標準SQL語句格式有以下4種:ü 表內連接Select col1,col2...from tab1,tab2 where tab1.col3=tab2.col3; Col1 列名 tab1表名 where tab1.co

MySQL數據庫基礎知識學習筆記(三)

select insert update delete count SQL語句實戰——DML語句(重點)選擇:select * from table1 where 範圍插入:insert into table1(filed1,filed2)values (filed1,filed2)解釋:

java 基礎知識學習 JVM虛擬機參數配置

permgen pac cat 學習 -xmx maxperm echo max java_opts 1) 設置-Xms、-Xmx相等; 2) 設置NewSize、MaxNewSize相等; 3) 設置Heap size, PermGen

java基礎知識學習

希望 java語言 code java基礎知識 如何 必須 原則 sun 成員變量 Java 內存分配策略 靜態存儲區(方法區):主要存放靜態數據、全局 static 數據和常量。這塊內存在程序編譯時就已經分配好,並且在程序整個運行期間都存在。 棧區 :

Android基礎知識學習

運行 系列 vid 以及 service ras binding comm font IPC (Inter-Process Communication) 意思是:  進程間的通信,是指兩個進程之間進行數據交換的過程。 Android中如何開啟多進程呢? 只需要給四大組

java基礎知識學習筆記

break 對比分析 簽名 java 發現 script char end 線程 本文知識點以js為參照。對比分析得出筆記。JavaScript之所以叫JavaScript是打算借助java推廣自己。雖然都是開發語言,但JavaScript一開始主要運行在 客戶端,而ja

maven基礎知識學習總結

https://github.com/laker1/maven-learning-notes  一、Maven下載:http://maven.apache.org/download.cgi二、外掛目錄結構:bin目錄:包含mvn的執行指令碼,在命令列中用mvn可呼叫boot目錄:包含一個類載入

linux 基礎知識學習-EOF

EOF基本知識學習: EOF是END Of File的縮寫,表示自定義終止符.既然自定義,那麼EOF就不是固定的,可以隨意設定別名,在linux按ctrl-d就代表EOF. EOF一般會配合cat能夠多行文字輸出. 其用法如下: <<EOF //開始 .... EOF //結束

區塊鏈開發基礎知識學習

隨著區塊鏈的火熱相信很多同學已經躍躍欲試想投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文就基於以太坊平臺,輕鬆帶大家入區塊鏈技術開發應用的大門。      以太坊是什麼   我們要開發一個區塊鏈應用,如果要從頭開發一個區塊鏈是不現實的,這時我們就需要以太坊這樣的平臺。 以太坊(Ethe

Python爬蟲實習筆記 | Week1 軟體安裝及基礎知識學習

2018/10/15 1.所思所想:今天劉鳳成學長跟我介紹了公司情況,以及我們小組的主要任務,即網路資料的爬取,決定學好學深,不辜負半年時光。下午的主要任務就是配置環境,所謂“工欲善其事,必先利其器”,但還是不能花太多時間,後面的具體工作才是根本。 2.工作: (1)ubuntu系統的安裝,因為之前

Log4net學習系列(一)——Log4net的基礎知識學習

  今天把Log4net日誌記錄做了封裝,作為一個公共的類庫。記錄一下應該注意的地方。先了解一下log4net的理論知識。   參考百度百科 一、log4net是什麼?     log4net庫是Apache log4j框架在Microsoft .NET平臺的實現,是一個幫助程式設計師將日誌資訊輸出

計算幾何基礎知識學習整理

今天終於開始接觸了一下計算幾何。。這裡很多基礎題都有板子。。先簡單介紹一下計算幾何基礎概念和知識: 向量加減法:設二維向量P = ( x1, y1 ),Q = ( x2 , y2 ),則向量加法定義為: P + Q = ( x1 + x2 , y1 + y2 ), 同樣的,向量減法定義為:

spark基礎知識(轉)

Apache Spark是一個圍繞速度、易用性和複雜分析構建的大資料處理框架,最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成為Apache的開源專案之一,與Hadoop和Storm等其他大資料和MapReduce技術相比,Spark有如下優勢: Spark提供了一

CSS基礎知識學習(一)

一、HTML、CSS、JavaScript    1、 HTML是網頁內容的載體。內容就是網頁製作者放在頁面上想要讓使用者瀏覽的資訊,可以包含文字、圖片、視訊等。    2、 CSS樣式是表現。就像網頁的外衣。比如,標題字型、顏色變化,或為標題加入