秒級(jí)風(fēng)控spark優(yōu)化

秒級(jí)風(fēng)控spark優(yōu)化

背景:在aws和qq同時(shí)存在時(shí)辫愉,兩邊分開計(jì)算,數(shù)據(jù)量不大将硝,任務(wù)不會(huì)出現(xiàn)延遲恭朗,全遷移到qq之后,所以數(shù)據(jù)全在一個(gè)集群中處理依疼,延時(shí)非常嚴(yán)重痰腮,沒(méi)辦法做到實(shí)時(shí)風(fēng)控?cái)r截

調(diào)優(yōu)后配置如下:


1.控制sparkstreaming 消費(fèi)能力,防止任務(wù)計(jì)算不完發(fā)生堆積或內(nèi)存溢出

機(jī)制1:

背壓機(jī)制律罢,sparkstreaming 支持根據(jù)響應(yīng)時(shí)間動(dòng)態(tài)控制接入消息數(shù)膀值,配置如下

spark.streaming.backpressure.enabled=true(開啟背壓)

spark.streaming.backpressure.pid.minRate=400(最少接入消息數(shù))

機(jī)制2:

spark.streaming.kafka.maxRatePerPartition(控制batch類最多消費(fèi)多少條消息,分區(qū)個(gè)數(shù)*spark.streaming.kafka.maxRatePerPartition就是接入的總消息數(shù))

背壓效果如下:

背壓機(jī)制較機(jī)制2更靈活,且能很好結(jié)合資源動(dòng)態(tài)伸縮

2.廣播機(jī)制

敏感接口列表沧踏,用廣播機(jī)制替代實(shí)時(shí)查詢r(jià)edis(這里要注意廣播出去的變量都必須是支持序列化的歌逢,redis類庫(kù)返回的set是不支持序列化的,運(yùn)行過(guò)程會(huì)報(bào)空指針)

3.高性能算子和緩存機(jī)制

<pre style="background:white">用mapPartitionsToPair替代mapToPair,前者直接作用于一個(gè)Partition來(lái)計(jì)算悦冀,后者基于Partition中的每個(gè)元素一個(gè)個(gè)運(yùn)算</pre>


將經(jīng)常用maprdd緩存起來(lái)趋翻,避免job重復(fù)計(jì)算

4.資源動(dòng)態(tài)伸縮

spark.dynamicAllocation.enabled=true \

spark.shuffle.service.enabled=true \

spark.dynamicAllocation.executorIdleTimeout=60 \

spark.dynamicAllocation.cachedExecutorIdleTimeout=60 \

spark.dynamicAllocation.initialExecutors=2 \

spark.dynamicAllocation.maxExecutors=7 \

spark.dynamicAllocation.minExecutors=2 \

yarn-site文件配置shuffle服務(wù),添加如下配置


另外需要將spark下的

jar包拷貝到/usr/local/service/hadoop/share/hadoop/yarn下盒蟆,保障nm能找到對(duì)應(yīng)的類踏烙。

PS:實(shí)測(cè)過(guò)程,伸縮回來(lái)之后历等,executor無(wú)法回收回去讨惩,即使計(jì)算時(shí)間很快

Executor回收機(jī)制:

只要有一個(gè)task結(jié)束,就會(huì)判定有哪些Executor已經(jīng)沒(méi)有任務(wù)了寒屯。然后會(huì)被加入待移除列表荐捻。在放到removeTimes的時(shí)候,會(huì)把當(dāng)前時(shí)間now + executorIdleTimeoutS * 1000 作為時(shí)間戳存儲(chǔ)起來(lái)寡夹。當(dāng)調(diào)度進(jìn)程掃描這個(gè)到Executor時(shí)处面,會(huì)判定時(shí)間是不是到了,到了的話就執(zhí)行實(shí)際的remove動(dòng)作菩掏。在這個(gè)期間魂角,一旦有task再啟動(dòng),并且正好運(yùn)行在這個(gè)Executor上智绸,則又會(huì)從removeTimes列表中被移除野揪。 那么這個(gè)Executor就不會(huì)被真實(shí)的刪除了爪瓜。因?yàn)閷?shí)際運(yùn)行過(guò)程中涣觉,有12個(gè)kafka 分區(qū),會(huì)導(dǎo)致一直有task在Executor中運(yùn)行庄萎,無(wú)法觸發(fā)Executor刪除操作迹恐,源碼可見org.apache.spark. ExecutorAllocationManager

5.分離regionserver和 nm進(jìn)程挣惰,regionserver進(jìn)程在compact時(shí),會(huì)很耗資源殴边,導(dǎo)致跑在這些機(jī)器上任務(wù)執(zhí)行時(shí)間很長(zhǎng)

6.將寫hbase操作通熄,做成異步寫,并可以動(dòng)態(tài)關(guān)閉寫hbase 接口明細(xì)操作

<pre style="background:white">7.合理設(shè)置shuffle的數(shù)量找都,例如groupByKey操作唇辨,通過(guò)spark.default.parallelism參數(shù)控制,默認(rèn)是2(這樣可以有效控制foreachRdd操作時(shí)每個(gè)任務(wù)的耗時(shí)時(shí)間)實(shí)際操作過(guò)程中能耻,最好是和excutor core個(gè)數(shù)相等赏枚,配置成6會(huì)產(chǎn)生6個(gè)task</pre>

<pre style="background:white">8.sparkstreaming 任務(wù)延時(shí)監(jiān)控,在任務(wù)延遲時(shí)亡驰,能第一時(shí)間知道</pre>
<pre style="background:
white">通過(guò)注冊(cè)MaliciousDetectStreamingListener到JavaStreamingContext中,來(lái)監(jiān)控任務(wù)延時(shí)情況饿幅,并告警 @See http://www.reibang.com/p/5506cd264f4d</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凡辱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子栗恩,更是在濱河造成了極大的恐慌透乾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磕秤,死亡現(xiàn)場(chǎng)離奇詭異乳乌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)市咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門汉操,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蒙兰,你說(shuō)我怎么就攤上這事磷瘤。” “怎么了搜变?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵采缚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我挠他,道長(zhǎng)扳抽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任绩社,我火速辦了婚禮摔蓝,結(jié)果婚禮上赂苗,老公的妹妹穿的比我還像新娘愉耙。我一直安慰自己,他們只是感情好拌滋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布朴沿。 她就那樣靜靜地躺著,像睡著了一般败砂。 火紅的嫁衣襯著肌膚如雪赌渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天昌犹,我揣著相機(jī)與錄音坚芜,去河邊找鬼。 笑死斜姥,一個(gè)胖子當(dāng)著我的面吹牛鸿竖,可吹牛的內(nèi)容都是我干的沧竟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缚忧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悟泵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闪水,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤糕非,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后球榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朽肥,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芜果,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞠呈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡右钾,死狀恐怖蚁吝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舀射,我是刑警寧澤窘茁,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脆烟,受9級(jí)特大地震影響山林,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邢羔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一驼抹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拜鹤,春花似錦框冀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惯裕,卻和暖如春温数,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜻势。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工撑刺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人握玛。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓够傍,卻偏偏與公主長(zhǎng)得像次员,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子王带,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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