赫拉(hera)分散式任務排程系統之Q&A(五)
文章目錄
- 往期目錄
- 加入群聊
- q&a
- q:依賴任務的週期怎麼填?
- q:新加的任務什麼時候會加入排程
- q:想立刻加入排程怎麼辦
- q:資原始檔怎麼上傳不成功
- q:開啟/關閉/失效按鈕的區別
- q:如何控制任務的並行數量
- q:任務執行會衝突嗎
- q:什麼是漏跑檢測重試
- q:什麼是任務訊號丟失重試
- q:為什麼任務無法關閉
- q:為什麼任務無法開啟
- q:`master`掛了,`work`會搶佔`master`嗎
- q:`master`掛了,哪些`work`會搶佔`master`
- q:`master`掛了,`work`正在執行的任務怎麼辦
- q:`work`掛了怎麼辦
- q:如何手動指定`master`?`ip`能自己指定嗎?
- q:為什麼新增任務按鈕是灰色的
- q:`hera`可以提交`flink`任務嗎
- q:`hera`如何執行`hive/map-reduce/spark`任務
- q:如何檢視當前work執行的任務及任務佇列的任務
往期目錄
專案地址:[email protected]:scx_white/hera.git
加入群聊
開源群人員也有60個了,把問的最多的,解釋一下。
q&a
q:依賴任務的週期怎麼填?
a:對於任務的依賴,由於我們公司內部暫時不需要,所以就沒開發。不過如果天任務一定要依賴於小時任務,可以把該任務
依賴於小時任務然後再依賴於一個天任務
(可以是簡單的輸出語句),這樣就能實現同樣的效果。(需要更新到hera-2.1
版本以上)
1863 依賴於1861和1862 。1861每小時一次,1862每四個小時一次,那麼1863也每四個小時一次。 如果依賴於一個周任務,下游就一週一次了
q:新加的任務什麼時候會加入排程
a:由於我們的任務排程是根據版本實現的,在內部我們的版本會在每個小時的0分附近生成版本,任務量
8000+
生成的版本時間為90S
左右(需要更新到hera-2.1
版本以上),新增定時任務和依賴任務在生成版本後會加入排程。
q:想立刻加入排程怎麼辦
a: 對於定時任務可以直接點選操作欄的版本生成即立刻加入排程。對於依賴任務可以通過
hera
系統提供的全量版本生成的介面(按鈕等待開發)來實現,呼叫此介面work
會向master
傳送生成全量版本的訊號,介面名稱為:http://localhost:8080/hera/scheduleCenter/generateAllVersion
。等版本生成完成之後,任務即加入排程。
q:資原始檔怎麼上傳不成功
a:上傳功能依賴於
hdfs
,如果你的master/work
機器沒有hadoop
環境,則不能上傳資源。
q:開啟/關閉/失效按鈕的區別
a:開啟,意味著該任務會加入排程,關閉和失效都不會加入排程。關閉和失效的區別在於,失效意味著該任務可能會被刪除(刪除操作由管理員操作,刪除前最好公示一段時間)
q:如何控制任務的並行數量
a:在
application.yml
配置檔案中修改hera.maxParallelNum
引數即可控制任務的最大並行數量。其原理是通過執行緒池是核心執行緒數等於最大執行緒數,阻塞佇列大小為Integer.MAX_VALUE
,超過並行數量的任務都在阻塞佇列中等待排程。
q:任務執行會衝突嗎
a:任務執行時會被加入任務佇列,每次新增任務x時都會判斷任務佇列中該任務是否正在執行,如果正在執行,則任務x執行失敗。即:同一個任務在同一時間只能有一個例項在執行。(發生任務重試時可能會有兩個任務同時執行的情況,已找到原因,後面會修復)
q:什麼是漏跑檢測重試
a:漏跑有很多種情況,比如
master
向work
傳送任務執行的netty
請求時,可能網路不可用了。就導致該任務未執行,所以加了這個功能。該功能可以把那些應該執行而未執行的任務重新排程。
q:什麼是任務訊號丟失重試
a:任務訊號丟失與漏跑檢測的原因差不多。具體就是
work
執行完成任務執行向master
傳送執行成功的訊號時,網路抖動了/其他原因,就導致任務成功的訊號沒有傳送給master
。master
任務訊號檢測在檢測到訊號丟失時就會重新排程起該任務。
q:為什麼任務無法關閉
a:如果該任務
A
是獨立任務(沒有其它任務依賴於該任務),那麼該任務可以正常關閉。如果有其它任務B
依賴於該任務,並且B
任務中有開啟的任務,那麼該任務將無法關閉。如果一定要關閉A,
需要把依賴於任務A
的其它全部任務B
關閉掉才能關閉任務A.
q:為什麼任務無法開啟
a:任務開啟時,如果該任務為獨立任務,該任務可以正常關閉。如果該任務於其它任務,那麼依賴的所有任務一定要全部處於開啟狀態,否則無法開啟。
q:master
掛了,work
會搶佔master
嗎
a:在master掛了5分鐘後,work會搶佔master,如果work成功搶佔,則開啟master服務,此時如果master又“活”了,發現master已經切換,會關閉master服務。
q:master
掛了,哪些work
會搶佔master
a:請檢視
application.yml
中hera.preemptionMasterGroup
引數,該機器組下的所有機器將有許可權搶佔master
,預設值為1
,即default
組,。
q:master
掛了,work
正在執行的任務怎麼辦
a:
master
掛了之後,在沒有master
的5分鐘內,此時work
繼續執行正在執行的任務,可能會有許多工的訊號丟失。在work搶佔master成功之後,會首先恢復正在執行中的任務,訊號丟失的任務會被訊號丟失檢測到重新加入排程。
q:work
掛了怎麼辦
a:work掛了之後在master段會記錄該work正在執行的任務資訊A,然後在十分鐘後再次檢測該work是否重連,如果未重連,重新排程所有任務。如果重連,檢測所有任務A的執行狀態,進行重跑/廣播/丟棄等操作。
q:如何手動指定master
?ip
能自己指定嗎?
a:請參考
hera_lock
表,該表只有一條資料,即master
的資訊,如果要修改master可以直接修改該表的資料,其中ip
要使用hera
獲取的ip
(對於多網絡卡的,如果覺得ip
獲得不對,請重寫NetUtils
類),hera
在啟動時會輸出ip
資訊。
q:為什麼新增任務按鈕是灰色的
a:任務只能新增到小目錄裡面。大目錄裡面只能放大目錄和小目錄,小目錄裡面只能放小目錄和任務。
q:hera
可以提交flink
任務嗎
a:可以。首先在機器組頁面新增
flink
機器組,然後在work
管理頁面新增具有flink
環境的機器,並將其繫結到flink
機器組。建立flink
任務時,選擇機器組為flick
組,那麼執行任務時就會把該任務發到具有flink
環境的機器上。
q:hera
如何執行hive/map-reduce/spark
任務
a:hera的機器具有hive/spark/hdfs客戶端即可。
q:如何檢視當前work執行的任務及任務佇列的任務
a:暫時沒有ui顯示,只提供了介面。
http://localhost:8080/hera/homePage/getJobQueueInfo
該介面會返回一些json
資料。
具體資訊有:
細心的你可能發現為什麼有的ip前面是master
有的是worker
。master
即表示該機器為master
,worker
即表示該機器為work
。儲存的資訊有部分差異。
memRate
記憶體使用百分比running
master
:當前自動排程任務佇列中的任務(排程中心手動恢復任務和機器自動排程的任務)
worker
:當前機器上正在執行的自動排程任務(排程中心手動恢復任務和機器自動排程的任務)manualRunning
master
:當前手動任務佇列中的任務(排程中心手動執行任務)
worker
:當前機器上正在執行的手動任務(排程中心手動執行任務)debugRunning
master
:當前開發任務佇列中的任務(開發中心任務)
worker
:當前機器上正在執行的開發任務(開發中心任務)timestamp
獲得該機器資訊的時間戳date
獲得該機器資訊的具體時間host
該機器的ip
cpuLoadPerCore
機器平均負載(負載/核數)memTotal
該機器的記憶體總量cores
該機器的核數