1. 程式人生 > >赫拉(hera)分散式任務排程系統之Q&A(五)

赫拉(hera)分散式任務排程系統之Q&A(五)

文章目錄

往期目錄

專案地址:[email protected]:scx_white/hera.git

赫拉(hera)分散式任務排程系統之架構,基本功能(一)

赫拉(hera)分散式任務排程系統之專案啟動(二)

赫拉(hera)分散式任務排程系統之開發中心(三)

赫拉(hera)分散式任務排程系統之版本(四)

赫拉(hera)分散式任務排程系統之Q&A(五)

加入群聊

開源群人員也有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:漏跑有很多種情況,比如masterwork傳送任務執行的netty請求時,可能網路不可用了。就導致該任務未執行,所以加了這個功能。該功能可以把那些應該執行而未執行的任務重新排程。

q:什麼是任務訊號丟失重試

a:任務訊號丟失與漏跑檢測的原因差不多。具體就是work執行完成任務執行向master傳送執行成功的訊號時,網路抖動了/其他原因,就導致任務成功的訊號沒有傳送給mastermaster任務訊號檢測在檢測到訊號丟失時就會重新排程起該任務。

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.ymlhera.preemptionMasterGroup引數,該機器組下的所有機器將有許可權搶佔master,預設值為1,即default組,。

q:master掛了,work正在執行的任務怎麼辦

a:master掛了之後,在沒有master的5分鐘內,此時work繼續執行正在執行的任務,可能會有許多工的訊號丟失。在work搶佔master成功之後,會首先恢復正在執行中的任務,訊號丟失的任務會被訊號丟失檢測到重新加入排程。

q:work掛了怎麼辦

a:work掛了之後在master段會記錄該work正在執行的任務資訊A,然後在十分鐘後再次檢測該work是否重連,如果未重連,重新排程所有任務。如果重連,檢測所有任務A的執行狀態,進行重跑/廣播/丟棄等操作。

q:如何手動指定masterip能自己指定嗎?

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有的是workermaster即表示該機器為masterworker即表示該機器為work。儲存的資訊有部分差異。

  • memRate
    記憶體使用百分比
  • running
    master:當前自動排程任務佇列中的任務(排程中心手動恢復任務和機器自動排程的任務)
    worker:當前機器上正在執行的自動排程任務(排程中心手動恢復任務和機器自動排程的任務)
  • manualRunning
    master:當前手動任務佇列中的任務(排程中心手動執行任務)
    worker:當前機器上正在執行的手動任務(排程中心手動執行任務)
  • debugRunning
    master:當前開發任務佇列中的任務(開發中心任務)
    worker:當前機器上正在執行的開發任務(開發中心任務)
  • timestamp
    獲得該機器資訊的時間戳
  • date
    獲得該機器資訊的具體時間
  • host
    該機器的ip
  • cpuLoadPerCore
    機器平均負載(負載/核數)
  • memTotal
    該機器的記憶體總量
  • cores
    該機器的核數