4、分配新的任務
該元件主要包含:心跳執行緒、supervisor事件接受執行緒、處理執行緒,一旦事件接受到則會進入任務分配環節,主要邏輯**如下:
public static void main(string args)
public void run() catch (exception e)
while (supervisormanager.isfinishshutdown() == false) catch (interruptedexception e)
}}
下面看元件啟動的主方法
public supervisormanger mksupervisor(map conf, icontext sharedcontext)
throws exception
vectorthreads = new vector();
// step 5 create heartbeat
/** 建立heatbeat執行緒,並每隔supervisor.heartbeat.frequency.secs秒傳送一次心跳,更新zk裡的znode
* znode節點為:/supervisors/supervisor-id (0add54ac-2c23-49bc-aaee-05b3cb9fef00)
* 會更新該節點的如下資訊:supervisorinfo[hostname=rt2l02046.tbc,
* supervisorid=0add54ac-2c23-49bc-aaee-05b3cb9fef00,
* timesecs=1421219320,
* uptimesecs=908,
* workerports=[6801, 6800, 6803, 6802]]
* */
heartbeat hb = new heartbeat(conf, stormclusterstate, supervisorid,
active);
hb.update();
asyncloopthread heartbeat = new asyncloopthread(hb, false, null,
thread.min_priority, true);
threads.add(heartbeat);
// sync heartbeat to apsara container
asyncloopthread synccontainerhbthread = synccontainerhb.mksupervisorinstance(conf);
if (synccontainerhbthread != null)
// step 6 create and start sync supervisor thread
// every supervisor.monitor.frequency.secs second run syncsupervisor
/** 建立兩個同步執行緒,syncsupervisorevent和syncprocessevent分別用來接收事件和處理事件,
* 與topology關係比較密切,在topology提交的時候再詳細介紹
//step 8 上傳監控資訊
Linux之程序管理工具supervisor
環境 centos 7 官方文件 yum install y epel release yum install y supervisor supervisord c etc supervisord.conf ps ef grep supervisor root 19703 1 0 17 32 00 ...
nodejs 自動重啟服務 supervisor
根據github上的說明,node supervisor原本是用於伺服器上node.js應用崩潰的時候,自己重新啟動。當然它也可以監控你的專案的js 或coffeescript 檔案變化,進而重啟來方便我們除錯應用程式。安裝方法 以全域性模組安裝 複製 如下 npm install supervis...
JStorm之Topology提交客戶端
乙個topology包含一或多個spout bolt,spout負責在資料來源獲得資料並傳送給bolt,每個bolt負責做完處理後發給下乙個bolt。通常topology的建立是由topologybuilder來建立的,該元件會記錄包含哪些spout bolt,並做相應驗證 各元件是否有id衝突,校...