成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

痛苦調優10小時,我把 Spark 腳本運行時間從15小時縮短到12分鐘!

開發 架構 Spark
周一我就有個困惑,還寫成文章了:如何從 Spark 的 DataFrame 中取出具體某一行,里面提了自己猜想的幾種解決方案 沒想到這么快就要面對這個問題了,我用小孩子都聽得懂的例子描述一下我在干什么。

[[412333]]

周一我就有個困惑,還寫成文章了:如何從 Spark 的 DataFrame 中取出具體某一行,里面提了自己猜想的幾種解決方案。

沒想到這么快就要面對這個問題了,我用小孩子都聽得懂的例子描述一下我在干什么。

簡單生動小例子

說一所小學有好幾個班級,現在要 以班級為單位 給孩子們按照身高進行排序,并且記錄下來。

問題就是,全學校只有一條測身高的尺子,而且因為孩子們過于頑劣等主客觀因素,測量身高、按身高排序、登記身高這些過程,必須在一間教室里進行。 沒有被輪到測量的班級,就在操場活動。

而最讓老師感到頭疼的是:組織孩子們進教室這一過程。測身高呀、記錄呀、排序呀,都用不了幾分鐘,唯獨讓孩子們進教室這件事,要讓老師們使出九牛二虎之力,而且特別耗時。

孩子們快進教室吧,求求了!

好消息是,組織一個班進教室,和組織一百個班同時進教室,花費的時間差不多。 因此,一般來講,老師都是直接把所有學生全部叫進這間教室來的。

但是我面臨一個棘手的情況。我的操場上,有 2200 個班級,每個班級有 16 萬人。我的教室也很大,但是肯定裝不下 2200 × 16 萬人 ≈ 3 億人。

于是我就想著,我一個班一個班測,這是最直觀的、最好管理的。

“來,一班,進教室!”...花了十幾分鐘才都叫進來...花了幾十秒就都測好了、排好序了、記錄好了...“好了!一班出去!二班進來!”...

如此往復,等到了第 2200 個班的時候,已經過去了快一個月...

內位看官講話了:你把他們都叫進來不就行了?反正前面有條件:『組織一個班進教室,和組織一百個班同時進教室,花費的時間差不多。』

有道理,這就是我上午在做的事:把教室修大一點。

我請了土地局的人、請了工程師、請了施工隊,嘗試了各種方法,每次費盡力氣修好(能容納 5 億人那種),教室就因為各種原因塌了。

唉!我計算過,理論上明明可以建成的呀!

我就不甘心,就一直嘗試,反反復復,然后幾小時過去了。

這時又有位看官講話了:別修教室了,你把孩子們分成幾批,一次叫幾個班進教室不就得了!

有道理,可是這樣原有的管理邏輯需要改一部分,著實花費了我一些時間。此外,還花了大量時間 debug 。

我初步設置為 100 班為一批進教室:

  • 原來我需要做『喊孩子們進教室』這件事 2200 次(每個班含一次)
  • 現在我只做『喊孩子們進教室』這件事 22 次,你看看,是不是快了 100 倍

對照解釋

上面其實就是我做的事的簡化版,其中:

「教室」就是計算機的「內存」,你得把數據拿進內存才能對其進行排序什么的計算

「進教室」就是計算機的「IO操作」,計算機的內存很貴,一般的電腦都是 8G、16G 這種,而硬盤相對便宜,有 256G、512G,甚至幾個 T 之多,因此數據一般都放在硬盤上,需要用時,在讀到內存里,這個讀的過程叫做「IO操作」

「IO操作」相比計算,相當耗費時間

老師干活很利索,就是孩子們進教室有點費勁

以下是我的工作日志節選(脫敏版):

首先我是『把每個班級單獨叫進教室』,很耗時。

7月19日早上大概9:30開始的,到7月20日半夜0:23結束,一共 2200 列,每一列都有 160000 個數據,都要進行排序操作,還涉及到 IO 操作,一共用時 15 小時。這其中用時為 IO時間 和 對每一列處理時間:

而其中,相比 IO ,計算時間(比如排序)可以忽略不計,因此時間可以記為

于是我想著,能不能『把所有班級一下全叫進教室』,畢竟:

  • 我的機器內存有 8G
  • 數據頂多使用 4G

我開始著手「擴大教室」,嘗試了很多,和配置文件 .conf 、 spark-shell 、 spark-env.cmd 、 JVM -Xmx4g 等等這種資料、操作大戰了一上午,無果。

一些截圖: .conf

我認為我的嘗試產生了效果,因為原有的錯誤不報了, collect 這個過程也能走完(孩子們都能進教室,之前是進不去的),但是一旦涉及到操作(collect 結束后會卡頓很久,無法返回應有的 Array),就會爆 JVM heap 。此外,經過一些其他調整后,不爆 heap 了,爆 GC overhead limit exceeded 這種垃圾回收問題。

那我有理由懷疑是性能被硬件限制了。

于是我考慮:『把孩子們分成幾批,一次叫幾個班進教室』。

有很多 bug ,我最后選擇的是一次叫 100 個班級,用時大概 12 分鐘。

“調優”結束。

總體來看,思路上幾乎沒什么難度,花費了這么多時間,主要是因為:

  • 不甘心自己的某個思路不可行,一股腦硬試下去
  • 經驗不足

啊!要是用時15小時的代碼不是1個月前的我寫的,而是別人寫的,那我把他調到 12 分鐘,還顯得我蠻厲害的?? 開個玩笑,我希望大家寫出的代碼都是很棒的,這樣咱們都可以節省出時間休息??

 

好了,回去睡覺了,明天還得接著給“孩子們”做別的工作;而且還有另一所學校另一個工作(同時被領導安排兩個工作并行有點難頂啊)。

 

責任編輯:武曉燕 來源: Piper蛋窩
相關推薦

2014-12-02 10:07:58

華為云VDC

2011-07-25 09:37:12

大型機管理CA自動化管理

2018-09-19 13:51:21

遠程醫療

2018-11-02 08:24:55

GitHub網絡鏈路

2021-12-02 06:58:03

AIOps通信服務

2019-05-09 14:42:41

安吉智能倉庫

2013-05-27 10:21:39

游戲設計

2019-11-25 12:26:26

AI 數據人工智能

2017-06-28 11:12:49

戴爾超融合存儲

2016-01-18 10:06:05

編程

2014-04-22 09:42:12

Bash腳本教程

2015-12-03 09:02:22

掌握新事物100小時

2022-07-06 14:26:35

數據采集3D

2022-01-24 10:02:20

工具視頻搜索

2025-06-13 02:25:00

2021-03-03 11:36:57

Java 8Java 15Java

2018-04-24 14:52:48

LinuxBash腳本

2015-05-06 21:13:33

HANA一體機/華為

2025-03-03 08:02:00

OpenAI模型端到端

2022-11-27 12:58:50

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产91在线 | 中日 | 成人在线播放网站 | 97超碰在线播放 | 亚洲品质自拍视频 | 亚洲欧美一区二区三区国产精品 | 二区在线视频 | 日韩在线精品 | 国产成人精品午夜 | 久久精品国产99国产 | 精品欧美一区二区三区久久久 | 国产精品99久久久久久宅男 | 国产精品久久久久久久久污网站 | 亚洲精品日韩精品 | 亚洲国产精选 | 久久久久久免费毛片精品 | 成人午夜在线观看 | 久久久久久久久毛片 | 色综合天天天天做夜夜夜夜做 | 中文字幕在线中文 | 夜操 | 亚洲精品2区 | 国产一区精品在线 | 精品视频在线播放 | 91麻豆产精品久久久久久 | 四虎影院在线观看免费视频 | 欧美jizzhd精品欧美巨大免费 | 精品三级在线观看 | 天天天天天天操 | 人妖videosex高潮另类 | 99视频在线免费观看 | 日韩久久网 | 日韩区| 亚洲欧美日本国产 | 国产高清在线观看 | 青草福利| 久久久www成人免费无遮挡大片 | 中文字幕高清一区 | 插插宗合网 | 日韩中文久久 | 婷婷一级片 | 天天操天天天干 |