除了查看ui上的統(tǒng)計來監(jiān)控作業(yè)俯萎,還可以通過Spark提供的REST API來獲取作業(yè)信息凉袱,并進行作業(yè)監(jiān)控芥吟。REST API就給我們自己開發(fā)Spark的一些監(jiān)控系統(tǒng)或平臺提供了可能侦铜。REST API是通過http協(xié)議發(fā)送的,并給我們返回JSON格式的數(shù)據(jù)钟鸵。因此無論你是用java钉稍,還是python,亦或是php棺耍,都可以獲取Spark的監(jiān)控信息贡未。
運行中的作業(yè)以及history server中的歷史作業(yè),都可以獲取到信息
- 如果是要獲取運行中的作業(yè)的信息蒙袍,可以通過http://host:4040/api/v1/...的方式來獲取
- 如果是要獲取歷史作業(yè)的信息俊卤,可以通過http://host:18080/api/v1/...的方式來獲取
比如說,http://192.168.0.103:18080/api/v1/applications害幅,就可以獲取到所有歷史作業(yè)的基本信息
以下是所有API的說明
/applications,獲取作業(yè)列表
/applications/[app-id]/jobs,指定作業(yè)的job列表
/applications/[app-id]/jobs/[job-id],指定job的信息
/applications/[app-id]/stages,指定作業(yè)的stage列表
/applications/[app-id]/stages/[stage-id],指定stage的所有attempt列表
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id],指定stage attempt的信息
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskSummary,指定stage attempt所有task的metrics統(tǒng)計信息
/applications/[app-id]/stages/[stage-id]/[stage-attempt-id]/taskList,指定stage attempt的task列表
/applications/[app-id]/executors,指定作業(yè)的executor列表
/applications/[app-id]/storage/rdd,指定作業(yè)的持久化rdd列表
/applications/[app-id]/storage/rdd/[rdd-id],指定持久化rdd的信息
/applications/[app-id]/logs,下載指定作業(yè)的所有日志的壓縮包
/applications/[app-id]/[attempt-id]/logs,下載指定作業(yè)的某次attempt的所有日志的壓縮包
當作業(yè)運行在yarn中時消恍,每個作業(yè)都可能會嘗試多次運行,所以上述的所有[app-id]都必須替換為[app-id]/[attempt-id]
這些API都非常便于讓我們?nèi)セ谒鼈冮_發(fā)各種監(jiān)控系統(tǒng)或應(yīng)用以现。特別是狠怨,spark保證以下幾點:
- API永遠不會因為版本的變更而更改
- JSON中的字段用于不會被移除
- 新的API接口可能會被增加
- 已有API接口中可能會增加新的字段
- API的新版本可能會作為新接口被添加進來。新版本的接口不要求向后兼容叼风。
- API版本可能會被刪除掉取董,但是肯定是在一個相關(guān)的新API版本發(fā)布之后。
要注意的是,當查看運行中作業(yè)的UI時,applications/[app-id]還是需要提供的涉枫,盡管此時在那個4040端口上可能只有一個
作業(yè)在運行。比如說蹂午,要查看正在運行的作業(yè)的job列表,可能需要使用以下API: http://host:4040/api/v1/applications/[app-id]/jobs
這主要是為了盡可能地復(fù)用API接口
實驗
- 安裝curl工具彬碱,來發(fā)送http請求: yum install -y curl
- 試一試以上的幾個API豆胸,去獲取standalone模式和yarn模式運行中的作業(yè),以及歷史作業(yè)的信息