內(nèi)存計算

by 清華大學

為什么并行計算侦香?

  • 計算量大
    • 單進程算得不夠快勒虾,多CPU算
  • 內(nèi)存需求大
    • 單機內(nèi)存不夠大
    • 內(nèi)存隨機訪問比硬盤隨機訪問快100,000倍
  • I/O 量大
    • 單個硬盤讀寫太慢爵赵,多個硬盤讀寫

并行計算的挑戰(zhàn)

  • 編程困難
    • 并行性識別與表達,難寫
    • 同步語句土涝,難寫對
  • 性能調(diào)優(yōu)難江醇,難寫快 (并行計算目標就是提升性能省艳,性能調(diào)優(yōu)難)
    -負載平衡
    • 局部性 (高速緩存cache,使用cache可以快10倍左右)
  • 容錯難

并行計算中的局部性

矩陣相乘嫁审,按列訪問會造成cache失效


image.png

分塊算法跋炕,得到更高的局部性

高可用性

大數(shù)據(jù)處理系統(tǒng)通常是由大量不可靠服務器組成的,如果處理1個10天的大數(shù)據(jù)處理任務時在第8天機器壞掉怎么辦律适?
重新計算不一定能解決問題
傳統(tǒng)的容錯方法不適用

  • 鎖步法(性能會有較大影響)辐烂,多版本編程(多個人來編程遏插,對比結(jié)果,軟件容錯)
    檢查點設置與恢復(保存程序狀態(tài)纠修,從保存狀態(tài)位置繼續(xù)執(zhí)行胳嘲,IO量大)

大數(shù)據(jù)處理并行系統(tǒng)

image.png

內(nèi)存計算需求

Map Reduce成功之處

  • 用戶只需要編寫串行程序
  • 自動并行化和分布式執(zhí)行
  • 自動容錯
  • 自動負載平衡
    用戶對系統(tǒng)提出了更高的要求
  • 更復雜的多階段任務
  • 交互式查詢
    Map Reduce 的局限性
  • 表達能力有限
    • 只有Map 和Reduce兩種操作
  • 復雜任務通常需要迭代的 MapReduce
    • 需要將中間結(jié)構(gòu)保存在硬盤上
    • 大量I/O操作造成性能急劇下降
  • 引入的I/O操作多,只能做離線分析扣草,很難支持數(shù)據(jù)的交互式查詢

MapReduce 文件傳遞數(shù)據(jù)

image.png

如果能用內(nèi)存保存數(shù)據(jù)了牛?

image.png

比采用硬盤方案快10-100倍
In Memory Computing

內(nèi)存計算的可行性

問題:

  • 內(nèi)存是否足夠大能夠裝下所需要的數(shù)據(jù)?
  • 內(nèi)存有多貴辰妙?與硬盤相比性價比如何鹰祸?
  • 數(shù)據(jù)保存在硬盤上,可以保證數(shù)據(jù)的可用性密浑,放在內(nèi)存里如何容錯蛙婴?
  • 如何高效表示內(nèi)存里的數(shù)據(jù)?
    input -> iter1 -> memory -> iter2 -> memory
image.png

單位芯片上集成的晶體管數(shù)量隨著時間(每兩年)可以成倍增長

各個內(nèi)存層次的延遲

image.png

DRAM比硬盤快100,000倍尔破,但是DRAM比片上cache慢6-200倍

內(nèi)存計算的實例:SPARK

SPARK設計理念:著重效率和容錯
如何抽象多臺機器的內(nèi)存街图?

  • 分布式共享內(nèi)存(DSM)
    • 統(tǒng)一地址空間
    • 很難容錯
  • 分布式鍵-值存儲(Piccolo,RAMCloud)
    • 允許細粒度訪問
    • 可以修改數(shù)據(jù)(mutable)
    • 容錯開銷大

DSM和鍵值對的容錯機制

  • 副本或Log
    • 對數(shù)據(jù)密集應用來說開銷很大
    • 比內(nèi)存寫要慢10-100倍

解決方案

  • RDD(Resilient Distributed Datasets)
    • 基于數(shù)據(jù)集合懒构,而不是單個數(shù)據(jù)
    • 由確定性的粗粒度操作產(chǎn)生(map,filter,join等)
    • 數(shù)據(jù)一旦產(chǎn)生餐济,就不能修改(immutable)
    • 如果要修改數(shù)據(jù),要通過數(shù)據(jù)集的變換來產(chǎn)生新的數(shù)據(jù)集

高效容錯方法

  • 數(shù)據(jù)一旦是確定性的產(chǎn)生胆剧,并且產(chǎn)生后不會變化
    • 就可以通過“重復計算”的方法恢復數(shù)據(jù)
    • 只要記住rdd生成過程就可以了絮姆,這樣一次log可以用于很多數(shù)據(jù),在不出錯的時候幾乎沒有開銷


      image.png

大數(shù)據(jù)處理并行系統(tǒng)

用編程模型上的限制獲取好的容錯能力和高性能


image.png

K-V 對赞赖,細粒度修改; HDFS 只能添加數(shù)據(jù)
RDD 高吞吐率冤灾,不允許做細粒度修改前域,換取好的容錯能力和好的性能

SPARK 編程接口

  • 基于Scala 語言
    • 類似Java的一種函數(shù)語言
    • 可以在Scala控制臺上交互式地使用Spark
    • 現(xiàn)在也支持Java 和Python
  • 基于RDD的操作
    • Transformation: 從現(xiàn)有RDD產(chǎn)生新的RDD
      • map, reduce, filter, groupBy, sort, distinct, sample ...
    • Action: 從RDD返回一個值
    • count, collect, first ,foreach ...


      image.png

SPARK 編程實例--LOG挖掘
將數(shù)據(jù)從文件系統(tǒng)中調(diào)入內(nèi)存,然后進行交互式的查詢


image.png
lines = spark.textFile("hdfs://...")
errors = lines.filter(_.startsWith("ERROR"))
messages = errors.map(_.split('\t')(2))
cachedMsgs = messages.cache()
cachedMsgs.filter(_.contains("foo")).count // 包含foo的信息的數(shù)目
cachedMsgs.filter(_.contains("bar")).count
image.png
image.png
image.png
image.png

SPARK 實現(xiàn)技術(shù)

延遲估值(Lazy Evaluation)

val lines = sc.textFile("data.txt")  //transformation
val lineLengths = lines.map(s => s.length) //transformation
val totalLength = lineLengths.reduce((a,b) => a+b) //action, trigger computation
  • 前面兩行都不會觸發(fā)計算(Transformation)
  • 最后一行的reduce會引發(fā)計算韵吨,生成DAG
image.png

有向無環(huán)圖


image.png
image.png
image.png
image.png

RDD性能的提高

對需要重用的RDD使用Persist和Cache提高性能


image.png
image.png

SPARK 應用和生態(tài)環(huán)境

image.png
image.png
image.png
image.png

image.png

SPARK 局限性

image.png
image.png

只能復制一份匿垄,標記少數(shù)節(jié)點。操作為網(wǎng)絡操作归粉、內(nèi)存拷貝操作椿疗、IO操作(由于數(shù)據(jù)是只讀的)-> 效率低,大量內(nèi)存拷貝糠悼。
每次細粒度的數(shù)據(jù)更新届榄,由于spark基于粗粒度RDD只讀的數(shù)據(jù)對象模型,需要RDD變換倔喂,即有大量數(shù)據(jù)的復制铝条,導致處理效率不高

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末靖苇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子班缰,更是在濱河造成了極大的恐慌贤壁,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠忘,死亡現(xiàn)場離奇詭異脾拆,居然都是意外死亡,警方通過查閱死者的電腦和手機莹妒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門名船,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人动羽,你說我怎么就攤上這事包帚。” “怎么了运吓?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵渴邦,是天一觀的道長。 經(jīng)常有香客問我拘哨,道長谋梭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任倦青,我火速辦了婚禮瓮床,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘产镐。我一直安慰自己隘庄,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布癣亚。 她就那樣靜靜地躺著丑掺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪述雾。 梳的紋絲不亂的頭發(fā)上街州,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音玻孟,去河邊找鬼唆缴。 笑死,一個胖子當著我的面吹牛黍翎,可吹牛的內(nèi)容都是我干的面徽。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼匣掸,長吁一口氣:“原來是場噩夢啊……” “哼斗忌!你這毒婦竟也來了质礼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤织阳,失蹤者是張志新(化名)和其女友劉穎眶蕉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唧躲,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡造挽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弄痹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饭入。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肛真,靈堂內(nèi)的尸體忽然破棺而出谐丢,到底是詐尸還是另有隱情,我是刑警寧澤蚓让,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布乾忱,位于F島的核電站,受9級特大地震影響历极,放射性物質(zhì)發(fā)生泄漏窄瘟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一趟卸、第九天 我趴在偏房一處隱蔽的房頂上張望蹄葱。 院中可真熱鬧,春花似錦锄列、人聲如沸图云。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竣况。三九已至,卻和暖如春饶囚,著一層夾襖步出監(jiān)牢的瞬間帕翻,已是汗流浹背鸠补。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工萝风, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紫岩。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓规惰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泉蝌。 傳聞我的和親對象是個殘疾皇子歇万,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容