導航:首頁 > 編程語言 > spark編程模型

spark編程模型

發布時間:2022-07-31 02:45:39

⑴ Hadoop,MapRece,YARN和Spark的區別與聯系

(1) Hadoop 1.0

第一代Hadoop,由分布式存儲系統HDFS和分布式計算框架MapRece組成,其中,HDFS由一個NameNode和多個DataNode組成,MapRece由一個JobTracker和多個TaskTracker組成,對應Hadoop版本為Hadoop 1.x和0.21.X,0.22.x。

(2) Hadoop 2.0

第二代Hadoop,為克服Hadoop 1.0中HDFS和MapRece存在的各種問題而提出的。針對Hadoop 1.0中的單NameNode制約HDFS的擴展性問題,提出了HDFS Federation,它讓多個NameNode分管不同的目錄進而實現訪問隔離和橫向擴展;針對Hadoop 1.0中的MapRece在擴展性和多框架支持方面的不足,提出了全新的資源管理框架YARN(Yet Another Resource Negotiator),它將JobTracker中的資源管理和作業控制功能分開,分別由組件ResourceManager和ApplicationMaster實現,其中,ResourceManager負責所有應用程序的資源分配,而ApplicationMaster僅負責管理一個應用程序。對應Hadoop版本為Hadoop 0.23.x和2.x。

(3) MapRece 1.0或者MRv1(MapReceversion 1)

第一代MapRece計算框架,它由兩部分組成:編程模型(programming model)和運行時環境(runtime environment)。它的基本編程模型是將問題抽象成Map和Rece兩個階段,其中Map階段將輸入數據解析成key/value,迭代調用map()函數處理後,再以key/value的形式輸出到本地目錄,而Rece階段則將key相同的value進行規約處理,並將最終結果寫到HDFS上。它的運行時環境由兩類服務組成:JobTracker和TaskTracker,其中,JobTracker負責資源管理和所有作業的控制,而TaskTracker負責接收來自JobTracker的命令並執行它。

(4)MapRece 2.0或者MRv2(MapRece version 2)或者NextGen MapRec

MapRece 2.0或者MRv2具有與MRv1相同的編程模型,唯一不同的是運行時環境。MRv2是在MRv1基礎上經加工之後,運行於資源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker組成,而是變為一個作業控制進程ApplicationMaster,且ApplicationMaster僅負責一個作業的管理,至於資源的管理,則由YARN完成。

簡而言之,MRv1是一個獨立的離線計算框架,而MRv2則是運行於YARN之上的MRv1。

(5)Hadoop-MapRece(一個離線計算框架)

Hadoop是google分布式計算框架MapRece與分布式存儲系統GFS的開源實現,由分布式計算框架MapRece和分布式存儲系統HDFS(Hadoop Distributed File System)組成,具有高容錯性,高擴展性和編程介面簡單等特點,現已被大部分互聯網公司採用。

(6)Hadoop-YARN(Hadoop 2.0的一個分支,實際上是一個資源管理系統)

YARN是Hadoop的一個子項目(與MapRece並列),它實際上是一個資源統一管理系統,可以在上面運行各種計算框架(包括MapRece、Spark、Storm、MPI等)。當前Hadoop版本比較混亂,讓很多用戶不知所措。實際上,當前Hadoop只有兩個版本:Hadoop 1.0和Hadoop 2.0,其中,Hadoop 1.0由一個分布式文件系統HDFS和一個離線計算框架MapRece組成,而Hadoop 2.0則包含一個支持NameNode橫向擴展的HDFS,一個資源管理系統YARN和一個運行在YARN上的離線計算框架MapRece。相比於Hadoop 1.0,Hadoop 2.0功能更加強大,且具有更好的擴展性、性能,並支持多種計算框架。Borg/YARN/Mesos/Torca/Corona一類系統可以為公司構建一個內部的生態系統,所有應用程序和服務可以「和平而友好」地運行在該生態系統上。有了這類系統之後,你不必憂愁使用Hadoop的哪個版本,是Hadoop 0.20.2還是 Hadoop 1.0,你也不必為選擇何種計算模型而苦惱,因此各種軟體版本,各種計算模型可以一起運行在一台「超級計算機」上了。

從開源角度看,YARN的提出,從一定程度上弱化了多計算框架的優劣之爭。YARN是在Hadoop MapRece基礎上演化而來的,在MapRece時代,很多人批評MapRece不適合迭代計算和流失計算,於是出現了Spark和Storm等計算框架,而這些系統的開發者則在自己的網站上或者論文里與MapRece對比,鼓吹自己的系統多麼先進高效,而出現了YARN之後,則形勢變得明朗:MapRece只是運行在YARN之上的一類應用程序抽象,Spark和Storm本質上也是,他們只是針對不同類型的應用開發的,沒有優劣之別,各有所長,合並共處,而且,今後所有計算框架的開發,不出意外的話,也應是在YARN之上。這樣,一個以YARN為底層資源管理平台,多種計算框架運行於其上的生態系統誕生了。目前spark是一個非常流行的內存計算(或者迭代式計算,DAG計算)框架,在MapRece因效率低下而被廣為詬病的今天,spark的出現不禁讓大家眼前一亮。

從架構和應用角度上看,spark是一個僅包含計算邏輯的開發庫(盡管它提供個獨立運行的master/slave服務,但考慮到穩定後以及與其他類型作業的繼承性,通常不會被採用),而不包含任何資源管理和調度相關的實現,這使得spark可以靈活運行在目前比較主流的資源管理系統上,典型的代表是mesos和yarn,我們稱之為「spark on mesos」和「spark on yarn」。將spark運行在資源管理系統上將帶來非常多的收益,包括:與其他計算框架共享集群資源;資源按需分配,進而提高集群資源利用率等。

FrameWork On YARN

運行在YARN上的框架,包括MapRece-On-YARN, Spark-On-YARN, Storm-On-YARN和Tez-On-YARN。

(1)MapRece-On-YARN:YARN上的離線計算;

(2)Spark-On-YARN:YARN上的內存計算;

(3)Storm-On-YARN:YARN上的實時/流式計算;

(4)Tez-On-YARN:YARN上的DAG計算

⑵ 2分鍾讀懂大數據框架Hadoop和Spark的異同

1、 Spark VSHadoop哪些異同點

Hadoop:布式批處理計算強調批處理用於數據挖掘、析

Spark:基於內存計算源集群計算系統目讓數據析更加快速, Spark 種與 Hadoop 相似源集群計算環境兩者間存些同處些用同處使 Spark 某些工作負載面表現更加優越換句說Spark 啟用內存布數據集除能夠提供互動式查詢外優化迭代工作負載

Spark Scala 語言實現 Scala 用作其應用程序框架與 Hadoop 同Spark Scala 能夠緊密集其 Scala 像操作本集合象輕松操作布式數據集

盡管創建 Spark 支持布式數據集迭代作業實際 Hadoop 補充 Hadoop 文件系統並行運行通名Mesos第三集群框架支持行Spark 由加州伯克利校 AMP 實驗室 (Algorithms,Machines,and People Lab) 發用構建型、低延遲數據析應用程序

雖 Spark 與 Hadoop 相似處提供具用差異新集群計算框架首先Spark 集群計算特定類型工作負載設計即些並行操作間重用工作數據集(比機器習算)工作負載優化些類型工作負載Spark 引進內存集群計算概念內存集群計算數據集緩存內存縮短訪問延遲.

數據處理面相信家hadoop已經耳熟能詳基於GoogleMap/Rece實現Hadoop發者提供map、rece原語使並行批處理程序變非簡單優美Spark提供數據集操作類型種像Hadoop提供MapRece兩種操作比map,filter, flatMap,sample, groupByKey, receByKey, union,join, cogroup,mapValues, sort,partionBy等種操作類型些操作稱Transformations同提供Count,collect, rece, lookup, save等種actions些種數據集操作類型給層應用者提供便各處理節點間通信模型再像Hadoop唯Data Shuffle種模式用戶命名物化控制間結區等說編程模型比Hadoop更靈.

2、Spark容錯性面否比其工具更優越性

Spark論文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》沒看容錯性做倒提布式數據集計算做checkpoint兩種式checkpoint dataloggingthe updates貌似Spark採用者文提雖者看似節省存儲空間由於數據處理模型類似DAG操作程由於圖某節點錯由於lineage chains依賴復雜性能引起全部計算節點重新計算本低說存數據存更新志做checkpoint由用戶說算吧相於都沒說皮球踢給用戶所我看由用戶根據業務類型衡量存儲數據IO磁碟空間代價重新計算代價選擇代價較種策略取代給間結進行持久化或建立檢查點Spark記住產某些數據集操作序列節點現故障Spark根據存儲信息重新構造數據集認錯其節點幫助重建

3、Spark於數據處理能力效率哪些特色

Spark提供高性能數據處理能力使用戶快速反饋體驗更另類應用做數據挖掘Spark充利用內存進行緩存利用DAG消除必要步驟所比較合適做迭代式運算相部機器習算通迭代收斂算所適合用Spark實現我些用算並行化用Spark實現R語言便調用降低用戶進行數據挖掘習本

Spark配流數據處理模型與Twitter Storm框架相比Spark採用種趣且獨特辦Storm基本像放入獨立事務管道其事務布式處理相反Spark採用模型收集事務短間內(我假設5秒)批處理式處理事件所收集數據自RDD使用Spark應用程序用組進行處理作者聲稱種模式緩慢節點故障情況更加穩健且5秒間間隔通於數應用已經足夠快種統流式處理與非流式處理部

總結
幾看Hadoop權威指南、hbase權威指南、hive權威指南、規模布式存儲系統、zoopkeeper、數據互聯網規模數據挖掘與布式處理等書同補充能靜完整看完本書相錯

⑶ 為什麼Spark Streaming越來越流行

Spark Streaming不僅能夠非常好地解決數據流分析問題,同時它還統一了技術框架,使用了與Spark一致的編程模型和處理引擎。而在Spark Streaming出現之前,用戶需要藉助多種開源軟體才能構建出具有流處理、批處理和機器學習能力的系統。

⑷ Spark與Hadoop MapRece大比拼,誰實力更強

一提到大數據處理,相信很多人第一時間想到的是 Hadoop MapRece。沒錯,Hadoop MapRece 為大數據處理技術奠定了基礎。近年來,隨著 Spark 的發展,越來越多的聲音提到了 Spark。而Spark相比Hadoop MapRece有哪些優勢?
Spark與Hadoop MapRece在業界有兩種說法 :一是 Spark 將代替 Hadoop MapRece,成為未來大數據處理發展的方向 ;二是 Spark 將會和 Hadoop 結合,形成更大的生態圈。其實 Spark 和 Hadoop MapRece 的重點應用場合有所不同。相對於 Hadoop MapRece 來說,Spark 有點「青出於藍」的感覺,Spark 是在Hadoop MapRece 模型上發展起來的,在它的身上我們能明顯看到 MapRece的影子,所有的 Spark 並非從頭創新,而是站在了巨人「MapRece」的肩膀上。千秋功罪,留於日後評說,我們暫且擱下爭議,來看看相比 Hadoop MapRece,Spark 都有哪些優勢。
1、計算速度快
大數據處理首先追求的是速度。Spark 到底有多快?用官方的話說,「Spark 允許 Hadoop 集群中的應用程序在內存中以 100 倍的速度運行,即使在磁碟上運行也能快 10 倍」。可能有的讀者看到這里會大為感嘆,的確如此,在有迭代計算的領域,Spark 的計算速度遠遠超過 MapRece,並且迭代次數越多,Spark 的優勢越明顯。這是因為 Spark 很好地利用了目前伺服器內存越來越大這一優點,通過減少磁碟 I/O 來達到性能提升。它們將中間處理數據全部放到了內存中,僅在必要時才批量存入硬碟中。或許讀者會問 :如果應用程序特別大,內存能放下多少 GB ?答曰 :什麼? GB ?目前 IBM 伺服器內存已經擴展至幾 TB 了。
2、應用靈活,上手容易
知道 AMPLab 的 Lester 為什麼放棄 MapRece 嗎?因為他需要把很多精力放到Map和Rece的編程模型上,極為不便。 Spark在簡單的Map及Rece操作之外,還支持 SQL 查詢、流式查詢及復雜查詢,比如開箱即用的機器學習演算法。同時,用戶可以在同一個工作流中無縫地搭配這些能力,應用十分靈活。
Spark 核心部分的代碼為 63 個 Scala 文件,非常的輕量級。並且允許 Java、Scala、Python 開發者在自己熟悉的語言環境下進行工作,通過建立在Java、Scala、Python、SQL(應對互動式查詢)的標准 API 以方便各行各業使用,同時還包括大量開箱即用的機器學習庫。它自帶 80 多個高等級操作符,允許在 Shell中進行互動式查詢。即使是新手,也能輕松上手應用。
3、兼容競爭對手
Spark 可以獨立運行,除了可以運行在當下的 YARN 集群管理外,還可以讀取已有的任何 Hadoop 數據。它可以運行在任何 Hadoop 數據源上,比如 HBase、HDFS 等。有了這個特性,讓那些想從 Hadoop 應用遷移到 Spark 上的用戶方便了很多。Spark 有兼容競爭對手的胸襟,何愁大事不成?
4、實時處理性能非凡
MapRece 更 加 適 合 處 理 離 線 數 據( 當 然, 在 YARN 之 後,Hadoop也可以藉助其他工具進行流式計算)。Spark 很好地支持實時的流計算,依賴Spark Streaming 對數據進行實時處理。Spark Streaming 具備功能強大的 API,允許用戶快速開發流應用程序。而且不像其他的流解決方案,比如Storm,Spark Streaming 無須額外的代碼和配置,就可以做大量的恢復和交付工作。
5、社區貢獻力量巨大
從 Spark 的版本演化來看,足以說明這個平台旺盛的生命力及社區的活躍度。尤其自 2013 年以來,Spark 一度進入高速發展期,代碼庫提交與社區活躍度都有顯著增長。以活躍度論,Spark 在所有的 Apache 基金會開源項目中位列前三,相較於其他大數據平台或框架而言,Spark 的代碼庫最為活躍。
Spark 非常重視社區活動,組織也極為規范,會定期或不定期地舉行與 Spark相關的會議。會議分為兩種 :一種是 Spark Summit,影響力極大,可謂全球 Spark頂尖技術人員的峰會,目前已於 2013—2015 年在 San Francisco 連續召開了三屆Summit 大會 ;另一種是 Spark 社區不定期地在全球各地召開的小型 Meetup 活動。Spark Meetup 也會在我國的一些大城市定期召開,比如北京、深圳、西安等地,讀者可以關注當地的微信公眾號進行參與。
Spark 的適用場景
從大數據處理需求來看,大數據的業務大概可以分為以下三類 :
(1)復雜的批量數據處理,通常的時間跨度在數十分鍾到數小時之間。
(2)基於歷史數據的互動式查詢,通常的時間跨度在數十秒到數分鍾之間。
(3)基於實時數據流的數據處理,通常的時間跨度在數百毫秒到數秒之間。
目前已有很多相對成熟的開源和商業軟體來處理以上三種情景 :第一種業務,可以利用 MapRece 來進行批量數據處理 ;第二種業務,可以用 Impala 來進行互動式查詢 ;對於第三種流式數據處理,可以想到專業的流數據處理工具Storm。但是這里有一個很重要的問題 :對於大多數互聯網公司來說,一般會同時遇到以上三種情景,如果採用不同的處理技術來面對這三種情景,那麼這三種情景的輸入/ 輸出數據無法無縫共享,它們之間可能需要進行格式轉換,並且每個開源軟體都需要一支開發和維護團隊,從而提高了成本。另外一個不便之處就是,在同一個集群中對各個系統協調資源分配比較困難。
那麼,有沒有一種軟體可以同時處理以上三種情景呢? Spark 就可以,或者說有這樣的潛力。Spark 同時支持復雜的批處理、互操作和流計算,而且兼容支持HDFS 和 Amazon S3 等分布式文件系統,可以部署在 YARN 和 Mesos 等流行的集群資源管理器上。
從 Spark 的設計理念(基於內存的迭代計算框架)出發,其最適合有迭代運算的或者需要多次操作特定數據集的應用場合。並且迭代次數越多,讀取的數據量越大,Spark 的應用效果就越明顯。因此,對於機器學習之類的「迭代式」應用,Spark 可謂拿手好戲,要比 Hadoop MapRece 快數十倍。另外,Spark Streaming因為內存存儲中間數據的特性,處理速度非常快,也可以應用於需要實時處理大數據的場合。
當然,Spark 也有不適用的場合。對於那種非同步細粒度更新狀態的應用,例如 Web 服務的存儲或增量的 Web 爬蟲和索引,也就是對於那種增量修改的應用模型不適合。Spark 也不適合做超級大的數據量的處理,這里所說的「超級大」是相對於這個集群的內存容量而言的,因為 Spark 要將數據存儲在內存中。一般來說,10TB 以上(單次分析)的數據就可以算是「超級大」的數據了。
一般來說,對於中小企業的數據中心而言,在單次計算的數據量不大的情況下,Spark 都是很好的選擇。另外,Spark 也不適合應用於混合的雲計算平台,因為混合的雲計算平台的網路傳輸是很大的問題,即便有專屬的寬頻在雲端 Cluster和本地 Cluster 之間傳輸數據,相比內存讀取速度來說,依然不抵。

⑸ spark編程語言

如果條件許可,公司提供Spark集群機器,在Spark集群機器上進行開發和學習是最好的; 如果條件不允許,在亞馬遜雲計算平台上構建Spark集群環境也是一種非常理想的選擇; 如果純粹是學習使用,安裝單機版的Spark也是可以的

⑹ 大數據培訓一般都將些什麼內容

參加大數據培訓都學習些什麼,隨著互聯網在近幾年的飛速發展,大數據頁被越來越多的人所熟知,不管是行內的人還是行外的人都紛紛加入這個行業!於是許多的培訓機構也紛紛崛起,開設相關的培訓課程!作為一個未來的十分有前景的行業。成為大數據工程師無疑是迎接一個很有前景的職業生涯,那麼大數據工程師,要學習什麼內容呢。
大數據培訓的內容:
不同的培訓機構來說,根據注重的點不同大數據課程內容也有所差異,培訓周期也都不大相同。課程內容除開第一階段學習Java語言基礎之外,還要學習HTML、CSS、Java、JavaWeb和資料庫、Linux基礎、Hadoop生態體系、Spark生態體系等課程內容。
二、基礎內容學習
對於初學大數據的同學來說尤其是零基礎的,感覺大數據比較復雜比較難,很難記住。但是對於大數據學習者而言,對於學員的邏輯思維能力要求較高。
三、項目實戰訓練
參加大數據培訓學習還有一項內容是必須要注意的,那就是課程內容安排上必須要有大數據開發相關的項目,項目練習是學習的核心,在這個過程中可以讓我們更加了解項目製作流程,積累一定的經驗,在後邊的工作面授中也能應答自如。

⑺ 科普Spark,Spark是什麼,如何使用Spark

科普Spark,Spark是什麼,如何使用Spark


1.Spark基於什麼演算法的分布式計算(很簡單)

2.Spark與MapRece不同在什麼地方

3.Spark為什麼比Hadoop靈活

4.Spark局限是什麼

5.什麼情況下適合使用Spark

Spark與Hadoop的對比

Spark的中間數據放到內存中,對於迭代運算效率更高。

Spark更適合於迭代運算比較多的ML和DM運算。因為在Spark裡面,有RDD的抽象概念。

Spark比Hadoop更通用

Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Rece兩種操作。比如map, filter, flatMap, sample, groupByKey, receByKey, union, join, cogroup, mapValues, sort,partionBy等多種操作類型,Spark把這些操作稱為Transformations。同時還提供Count, collect, rece, lookup, save等多種actions操作。

這些多種多樣的數據集操作類型,給給開發上層應用的用戶提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的存儲、分區等。可以說編程模型比Hadoop更靈活。

不過由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。

容錯性

在分布式數據集計算時通過checkpoint來實現容錯,而checkpoint有兩種方式,一個是checkpoint data,一個是logging the updates。用戶可以控制採用哪種方式來實現容錯。

可用性

Spark通過提供豐富的Scala, Java,Python API及互動式Shell來提高可用性。

Spark與Hadoop的結合

Spark可以直接對HDFS進行數據的讀寫,同樣支持Spark on YARN。Spark可以與MapRece運行於同集群中,共享存儲資源與計算,數據倉庫Shark實現上借用Hive,幾乎與Hive完全兼容。

Spark的適用場景

Spark是基於內存的迭代計算框架,適用於需要多次操作特定數據集的應用場合。需要反復操作的次數越多,所需讀取的數據量越大,受益越大,數據量小但是計算密集度較大的場合,受益就相對較小(大資料庫架構中這是是否考慮使用Spark的重要因素)

由於RDD的特性,Spark不適用那種非同步細粒度更新狀態的應用,例如web服務的存儲或者是增量的web爬蟲和索引。就是對於那種增量修改的應用模型不適合。總的來說Spark的適用面比較廣泛且比較通用。

運行模式

本地模式

Standalone模式

Mesoes模式

yarn模式

Spark生態系統

Shark ( Hive on Spark): Shark基本上就是在Spark的框架基礎上提供和Hive一樣的H iveQL命令介面,為了最大程度的保持和Hive的兼容性,Shark使用了Hive的API來實現query Parsing和 Logic Plan generation,最後的PhysicalPlan execution階段用Spark代替Hadoop MapRece。通過配置Shark參數,Shark可以自動在內存中緩存特定的RDD,實現數據重用,進而加快特定數據集的檢索。同時,Shark通過UDF用戶自定義函數實現特定的數據分析學習演算法,使得SQL數據查詢和運算分析能結合在一起,最大化RDD的重復使用。

Spark streaming: 構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片斷(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因為Spark的低延遲執行引擎(100ms+)可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),RDD數據集更容易做高效的容錯處理。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和演算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。

Bagel: Pregel on Spark,可以用Spark進行圖計算,這是個非常有用的小項目。Bagel自帶了一個例子,實現了Google的PageRank演算法。

End.

⑻ Spark中ml和mllib的區別

Mahout是hadoop的一個機器學習庫,主要的編程模型是MapRece;Spark ML則是基於Spark的機器學習,Spark自身擁有MLlib作為機器學習庫。現在Mahout已經停止接受新的MapRece演算法了,向Spark遷移。

閱讀全文

與spark編程模型相關的資料

熱點內容
php開發客戶端 瀏覽:996
theisle測試服怎麼搜伺服器 瀏覽:447
廣播PDF 瀏覽:216
單片機編程300例匯編百度 瀏覽:33
騰訊雲連接不上伺服器 瀏覽:221
不能用來表示演算法的是 瀏覽:859
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923