SparkStream消費kafka消息delay型豁,但job處理很快

在場景系統(tǒng)中,通過SparkStream直接消費kafka數(shù)據(jù)互纯,出現(xiàn)處理邏輯耗時在毫秒級瑟幕,但是很多的job delay。

示例代碼如下:

valbrokerList = ConfigLoader.get(KafkaConfig.runDataBrokerListKey)

valtopics = ConfigLoader.get(KafkaConfig.runDataTopic)

valtopicSet = topics.split(",").toSet

valkafkaParams =Map("metadata.broker.list"-> brokerList)

logger.info(s"設備運行數(shù)據(jù)kafka brokerList:$brokerList, topics:$topics")

valssc =newStreamingContext(sparkConf,Seconds(ConfigLoader.get(CommonConfig.batchDuration).toInt))

//采用直接消費的方式,每次只會消費最新的數(shù)據(jù)只盹,對于當前實時業(yè)務適用

valdata = KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc,kafkaParams,topicSet)

data.map(dataParse).print()

代碼邏輯非常簡單辣往,在dataParse方法中也只是進行json的解析,但是一個任務處理都達到4s殖卑,而SparkStream設置為了1s一個批次站削,從而導致越來越多的job等待,如下圖:


從上圖發(fā)現(xiàn)存在stage持續(xù)時間為4s孵稽,故查看其詳細信息许起,發(fā)現(xiàn)當前stage存在很長時間的空閑,如下圖:

故查看executor端日志菩鲜,發(fā)現(xiàn)11:09:09完成task計算后到11:09:12期間园细,executor處于空閑狀態(tài),日志如下:

此時接校,追蹤driver端日志猛频,試圖從driver發(fā)現(xiàn)當前任務在進行怎樣的操作,發(fā)現(xiàn)這段一段日志:

17/09/29 11:09:12 DEBUG scheduler.TaskSetManager: Moving to RACK_LOCAL after waiting for 3000ms蛛勉,在等待3000ms后移動到機架本地模式鹿寻,繼續(xù)追查當前stage啟動時間,找到日志如下:

也就是說诽凌,在9~12這個時間點中毡熏,當前task都在進行一個等待操作,而超時間為3000ms皿淋,超時后執(zhí)行了Moving to RACK_LOCAL操作招刹,并檢測到本地級別的機架本地沒有任務,所以移動到Any級別窝趣。

追蹤源碼試圖找出當前job進行了什么樣的操作疯暑,定位到源碼如下:

從else的判斷條件可知,當(當前時間 - 最新Task啟動時間) > 本地等待時間哑舒,即會答應當前l(fā)og妇拯,繼續(xù)追蹤發(fā)現(xiàn)源碼內容:

至此我們已經找到了上面task等待3s的原因,在設置sparkConf的時候洗鸵,并沒有設置當前三個參數(shù)越锈,則取默認值,但是這個配置又是做什么的呢膘滨?

查找了相關資料甘凭,并向大牛請教后得到這樣的解釋:

spark在消費數(shù)據(jù)時,優(yōu)先采用節(jié)點本地模式火邓,即NODE_LOCAL(節(jié)點本地模式)>RACK_LOCAL(機架本地模式)>ANY(任意)丹弱,這樣在大數(shù)據(jù)量時可以做到減少網(wǎng)絡io德撬,每一批數(shù)據(jù)默認會等待三秒,如果三秒后數(shù)據(jù)所在節(jié)點上依舊沒有啟動task后躲胳,會修改為RACK_LOCAL蜓洪,并且提交任務,失敗后立馬改為ANY模式坯苹。

而基于當前業(yè)務隆檀,SparkStream必須每1s處理一批數(shù)據(jù),并且只給定了一個executor粹湃,所以大部分的節(jié)點上是不存在task的恐仑,如果每批數(shù)據(jù)等待節(jié)點本地啟動task,這樣會導致越來越多的job delay再芋。故只能修改相關參數(shù)的默認值菊霜,跳過wait,直接將模式設置為ANY济赎,修改代碼如下:

valsparkConf =newSparkConf().setAppName("Scene")

sparkConf.set("spark.locality.wait.process","0")

sparkConf.set("spark.locality.wait.node","0")

sparkConf.set("spark.locality.wait.rack","0")

valbrokerList = ConfigLoader.get(KafkaConfig.runDataBrokerListKey)

valtopics = ConfigLoader.get(KafkaConfig.runDataTopic)

valtopicSet = topics.split(",").toSet

valkafkaParams =Map("metadata.broker.list"-> brokerList)

logger.info(s"設備運行數(shù)據(jù)kafka brokerList:$brokerList, topics:$topics")

valssc =newStreamingContext(sparkConf,Seconds(ConfigLoader.get(CommonConfig.batchDuration).toInt))

//采用直接消費的方式,每次只會消費最新的數(shù)據(jù)记某,對于當前實時業(yè)務適用

valdata = KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc,kafkaParams,topicSet)

data.map(dataParse).print()

問題圓滿解決司训。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市液南,隨后出現(xiàn)的幾起案子壳猜,更是在濱河造成了極大的恐慌,老刑警劉巖滑凉,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件统扳,死亡現(xiàn)場離奇詭異,居然都是意外死亡畅姊,警方通過查閱死者的電腦和手機咒钟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來若未,“玉大人朱嘴,你說我怎么就攤上這事〈趾希” “怎么了萍嬉?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隙疚。 經常有香客問我壤追,道長,這世上最難降的妖魔是什么供屉? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任行冰,我火速辦了婚禮溺蕉,結果婚禮上,老公的妹妹穿的比我還像新娘资柔。我一直安慰自己焙贷,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布贿堰。 她就那樣靜靜地躺著辙芍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羹与。 梳的紋絲不亂的頭發(fā)上故硅,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音纵搁,去河邊找鬼吃衅。 笑死,一個胖子當著我的面吹牛腾誉,可吹牛的內容都是我干的徘层。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼利职,長吁一口氣:“原來是場噩夢啊……” “哼趣效!你這毒婦竟也來了?” 一聲冷哼從身側響起猪贪,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤跷敬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后热押,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體西傀,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年桶癣,在試婚紗的時候發(fā)現(xiàn)自己被綠了拥褂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鬼廓,死狀恐怖肿仑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情碎税,我是刑警寧澤尤慰,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站雷蹂,受9級特大地震影響伟端,放射性物質發(fā)生泄漏。R本人自食惡果不足惜匪煌,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一责蝠、第九天 我趴在偏房一處隱蔽的房頂上張望党巾。 院中可真熱鬧,春花似錦霜医、人聲如沸齿拂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽署海。三九已至,卻和暖如春医男,著一層夾襖步出監(jiān)牢的瞬間砸狞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工镀梭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刀森,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓报账,卻偏偏與公主長得像研底,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子透罢,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容