日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發(fā)布時間:2016-06-24 17:54:39 閱讀次數(shù):2809次

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

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

// Optionally scale number of executors dynamically based on workload. Exposed for testing. val dynamicAllocationEnabled = Utils.isDynamicAllocationEnabled(_conf) if (!dynamicAllocationEnabled && //參數(shù)配置是不是開啟資源動態(tài)分配 _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方法會被周期性觸發(fā)進行資源動態(tài)調(diào)劑。
/** * 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定時器觸發(fā)時間 executor.scheduleAtFixedRate(scheduleTask, 0, intervalMillis, TimeUnit.MILLISECONDS) }

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

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久久一区二区三区 | 日本视频不卡 | 韩国三级大全久久网站 | 九色jiuse| 2019中文字幕在线播放 | 久久国产福利 | 成人av在线一区二区 | 毛片在线视频 | 亚洲福利一区二区 | 久久久国产一区二区三区四区小说 | yw.139尤物在线精品视频 | 久久日av | 嫩草视频国产精品 | 久久久久成人精品 | 人与性欧美aa大片视频看 | 希岛爱理和黑人中文字幕系列 | 精品伊人久久久久7777人 | 中文字幕国产一区 | 欧美一级淫片 | 91丨九色丨国产在线 | 一级欧美黄色片 | 久久久久国产精品 | 欧美a级成人淫片免费看 | 交视频在线观看国产 | 精品国产乱码久久久久久88av | aa国产 | 91久久精品国产 | 日韩综合网 | 中文在线а√天堂官网 | 欧美在线三区 | 亚州国产 | 亚洲国产精品99久久久久久久久 | 精品一区二区三区四区五区六区七区 | 久久国产精品久久久久久 | 欧美一区二区三区在线视频 | 嫩草嫩草嫩草嫩草嫩草 | 久久精品国产一区 | 一区三区视频在线观看 | 国产一二三区视频 | 一级一级一级毛片 | 国产精品免费看 |