多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > 第17課:Spark Streaming資源動態申請和動態控制消費速率原理剖析

第17課:Spark Streaming資源動態申請和動態控制消費速率原理剖析

來源:程序員人生   發布時間:2016-06-24 17:54:39 閱讀次數:2802次

為何需要動態?
a) Spark默許情況下粗粒度的,先分配好資源再計算。對Spark Streaming而言有高峰值和低峰值,但是他們需要的資源是不1樣的,如果依照高峰值的角度的話,就會有大量的資源浪費。
b) Spark Streaming不斷的運行,對資源消耗和管理也是我們要斟酌的因素。
Spark Streaming資源動態調劑的時候會面臨挑戰:
Spark Streaming是依照Batch Duration運行的,Batch Duration需要很多資源,下1次Batch Duration就不需要那末多資源了,調劑資源的時候還沒調劑完Batch Duration運行就已過期了。這個時候調劑時間間隔。

Spark Streaming資源動態申請
1. 在SparkContext中默許是不開啟動態資源分配的,但是可以通過手動在SparkConf中配置。

// Optionally scale number of executors dynamically based on workload. Exposed for testing. val dynamicAllocationEnabled = Utils.isDynamicAllocationEnabled(_conf) if (!dynamicAllocationEnabled && //參數配置是不是開啟資源動態分配 _conf.getBoolean("spark.dynamicAllocation.enabled", false)) { logWarning("Dynamic Allocation and num executors both set, thus dynamic allocation disabled.") } _executorAllocationManager = if (dynamicAllocationEnabled) { Some(new ExecutorAllocationManager(this, listenerBus, _conf)) } else { None } _executorAllocationManager.foreach(_.start())
2.  ExecutorAllocationManager: 有定時器會不斷的去掃描Executor的情況,正在運行的Stage,要運行在不同的Executor中,要末增加Executor或減少。
3.  ExecutorAllocationManager中schedule方法會被周期性觸發進行資源動態調劑。
/** * This is called at a fixed interval to regulate the number of pending executor requests * and number of executors running. * * First, adjust our requested executors based on the add time and our current needs. * Then, if the remove time for an existing executor has expired, kill the executor. * * This is factored out into its own method for testing. */ private def schedule(): Unit = synchronized { val now = clock.getTimeMillis updateAndSyncNumExecutorsTarget(now) removeTimes.retain { case (executorId, expireTime) => val expired = now >= expireTime if (expired) { initializing = false removeExecutor(executorId) } !expired } }
4.  在ExecutorAllocationManager中會在線程池中定時器會不斷的運行schedule.
/** * Register for scheduler callbacks to decide when to add and remove executors, and start * the scheduling task. */ def start(): Unit = { listenerBus.addListener(listener) val scheduleTask = new Runnable() { override def run(): Unit = { try { schedule() } catch { case ct: ControlThrowable => throw ct case t: Throwable => logWarning(s"Uncaught exception in thread ${Thread.currentThread().getName}", t) } } } // intervalMillis定時器觸發時間 executor.scheduleAtFixedRate(scheduleTask, 0, intervalMillis, TimeUnit.MILLISECONDS) }

動態控制消費速率:
Spark Streaming提供了1種彈性機制,流進來的速度和處理速度的關系,是不是來得及處理數據。如果不能來得及的話,他會自動動態控制數據流進來的速度,spark.streaming.backpressure.enabled參數設置。

本課程筆記來源于:
這里寫圖片描述

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 毛片一区 | 中文无码久久精品 | 一本大道香蕉高清久久 | 国产精品日韩欧美久久综合 | 中文字幕最新在线 | 日韩精品在线一区二区 | 亚洲精品亚洲人成在线播放 | 午夜影院在线免费 | 欧美一区亚洲二区 | 国产免费一区二区三区免费视频 | 欧美tube6最新69 | 欧美一级看片免费观看视频在线 | 亚洲成av人片在线观看无码 | 欧美第一页在线观看 | 国产成人精品久久一区二区小说 | 午夜国产精品久久影院 | 成年人免费视频网站 | 咸片在线网站免费观看 | 国产一区二区精品久久91 | 亚洲欧美韩国日本 | 天堂视频在线 | 日本爽 | 国产免费网站看v片元遮挡 国产免费午夜a无码v视频 | www.亚洲一区二区三区 | 亚洲永久免费视频 | 亚洲人成依人成综合网 | japanesehd国产在线无毒不卡 | 中文字幕高清在线观看 | 日本孕妇大胆孕交无码 | 亚洲欧美精品日韩欧美 | 婷婷色伊人 | 春暖花开亚洲性无区一区二区 | 亚洲小说图片 | 九一国产精品 | 亚洲免费黄网 | 在线免费观看中文字幕 | 国产成人一区二区三区精品久久 | 国产三区二区 | 成人性生免费视频 | 国内高清久久久久久久久 | 欧美娇小www |