欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務器

交換存儲

不僅Spark是內(nèi)存計算,Hadoop也是內(nèi)存計算

市面上有一些初學者的誤解,他們拿Spark和Hadoop比較時就會說,Spark是內(nèi)存計算,內(nèi)存計算是Spark的特性。請問在計算機領域,MySQL,Redis,SSH框架等等他們不是內(nèi)存計算嗎?依據(jù)馮諾依曼體系結構,有什么技術的程序不是在內(nèi)存中運行,需要數(shù)據(jù)從硬盤中拉取,然后供CPU進行執(zhí)行?所有說Spark的特點是內(nèi)存計算相當于什么都沒有說。

那么Spark的真正特點是什么?拋開Spark的執(zhí)行模型的方式,它的特點無非就是多個任務之間數(shù)據(jù)通信不需要借助硬盤而是通過內(nèi)存,大大提高了程序的執(zhí)行效率。而Hadoop由于本身的模型特點,多個任務之間數(shù)據(jù)通信是必須借助硬盤落地的。那么Spark的特點就是數(shù)據(jù)交互不會走硬盤。只能說多個任務的數(shù)據(jù)交互不走硬盤,但是Spark的shuffle過程和Hadoop一樣仍然必須走硬盤的。

不僅Spark是內(nèi)存計算,Hadoop也是內(nèi)存計算

誤解一:Spark是一種內(nèi)存技術

大家對Spark最大的誤解就是spark一種內(nèi)存技術。其實沒有一個Spark開發(fā)者正式說明這個,這是對Spark計算過程的誤解。Spark是內(nèi)存計算沒有錯誤,但是這并不是它的特性,只是很多專家在介紹spark的特性時,簡化后就成了spark是內(nèi)存計算。

什么樣是內(nèi)存技術?就是允許你將數(shù)據(jù)持久化在RAM中并有效處理的技術。然而Spark并不具備將數(shù)據(jù)數(shù)據(jù)存儲在RAM的選項,雖然我們都知道可以將數(shù)據(jù)存儲在HDFS, HBase等系統(tǒng)中,但是不管是將數(shù)據(jù)存儲在磁盤還是內(nèi)存,都沒有內(nèi)置的持久化代碼。它所能做的事就是緩存數(shù)據(jù),而這個并不是數(shù)據(jù)持久化。已經(jīng)緩存的數(shù)據(jù)可以很容易地被刪除,并且在后期需要時重新計算。

但是有人還是會認為Spark就是一種基于內(nèi)存的技術,因為Spark是在內(nèi)存中處理數(shù)據(jù)的。這當然是對的,因為我們無法使用其他方式來處理數(shù)據(jù)。操作系統(tǒng)中的API都只能讓你把數(shù)據(jù)從塊設備加載到內(nèi)存,然后計算完的結果再存儲到塊設備中。我們無法直接在HDD設備上計算;所以現(xiàn)代系統(tǒng)中的所有處理基本上都是在內(nèi)存中進行的。

Spark允許我們使用內(nèi)存緩存以及LRU替換規(guī)則,但是你想想現(xiàn)在的RDBMS系統(tǒng),比如Oracle ,你認為它們是如何處理數(shù)據(jù)的?它們使用共享內(nèi)存段作為table pages的存儲池,所有的數(shù)據(jù)讀取以及寫入都是通過這個池的,這個存儲池同樣支持LRU替換規(guī)則;所有現(xiàn)代的數(shù)據(jù)庫同樣可以通過LRU策略來滿足大多數(shù)需求。但是為什么我們并沒有把Oracle 稱作是基于內(nèi)存的解決方案呢?再想想操作系統(tǒng)IO,香港免備案主機 美國服務器,你知道嗎?所有的IO操作也是會用到LRU緩存技術的。

Spark在內(nèi)存中處理所有的操作嗎?Spark的核心:shuffle,其就是將數(shù)據(jù)寫入到磁盤的。shuffle的處理包括兩個階段:map 和 reduce。Map操作僅僅根據(jù)key計算其哈希值,并將數(shù)據(jù)存放到本地文件系統(tǒng)的不同文件中,文件的個數(shù)通常是reduce端分區(qū)的個數(shù);Reduce端會從 Map端拉取數(shù)據(jù),并將這些數(shù)據(jù)合并到新的分區(qū)中。所有如果你的RDD有M個分區(qū),然后你將其轉換成N個分區(qū)的PairRDD,那么在shuffle階段將會創(chuàng)建 M*N 個文件!雖然目前有些優(yōu)化策略可以減少創(chuàng)建文件的個數(shù),但這仍然無法改變每次進行shuffle操作的時候你需要將數(shù)據(jù)先寫入到磁盤的事實!

不僅Spark是內(nèi)存計算,Hadoop也是內(nèi)存計算

所以結論是:Spark并不是基于內(nèi)存的技術!它其實是一種可以有效地使用內(nèi)存LRU策略的技術。

誤解二:Spark要比Hadoop快 10x-100x

大家在Spark的官網(wǎng)肯定看到了如下所示的圖片

不僅Spark是內(nèi)存計算,Hadoop也是內(nèi)存計算

這個圖片是分別使用 Spark 和 Hadoop 運行邏輯回歸(Logistic Regression)機器學習算法的運行時間比較,從上圖可以看出Spark的運行速度明顯比Hadoop快上百倍!但是實際上是這樣的嗎?大多數(shù)機器學習算法的核心部分是什么?其實就是對同一份數(shù)據(jù)集進行相同的迭代計算,而這個地方正是Spark的LRU算法所驕傲的地方。當你多次掃描相同的數(shù)據(jù)集時,你只需要在首次訪問時加載它到內(nèi)存,后面的訪問直接從內(nèi)存中獲取即可。這個功能非常的棒!但是很遺憾的是,官方在使用Hadoop運行邏輯回歸的時候很大可能沒有使用到HDFS的緩存功能,而是采用極端的情況。如果在Hadoop中運行邏輯回歸的時候采用到HDFS緩存功能,其表現(xiàn)很可能只會比Spark差3x-4x,而不是上圖所展示的一樣。

根據(jù)經(jīng)驗,企業(yè)所做出的基準測試報告一般都是不可信的!一般獨立的第三方基準測試報告是比較可信的,比如:TPC-H。他們的基準測試報告一般會覆蓋絕大部分場景,以便真實地展示結果。

一般來說,Spark比MapReduce運行速度快的原因主要有以下幾點:

騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務器租用 夢飛云服務器租用 版權所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 开封县| 延长县| 温泉县| 宁乡县| 麻阳| 永昌县| 洪洞县| 绥棱县| 秦皇岛市| 泗洪县| 京山县| 荆门市| 澎湖县| 中卫市| 资中县| 太白县| 东阿县| 吕梁市| 崇明县| 灵武市| 湖口县| 米泉市| 安泽县| 慈利县| 双城市| 邵武市| 和静县| 突泉县| 常州市| 内黄县| 大方县| 日土县| 南开区| 康平县| 安图县| 天峻县| 章丘市| 泰宁县| 安达市| 达拉特旗| 潮州市|