使用azkaban调度spark任务
這篇文章主要向大家介紹使用azkaban調(diào)度spark任務(wù),主要內(nèi)容包括基礎(chǔ)應(yīng)用、實用技巧、原理機制等方面,希望對大家有所幫助。
Azkaban是一種相似于Oozie的工作流控制引擎,能夠用來解決多個Hadoop(或Spark等)離線計算任務(wù)之間的依賴關(guān)系問題。
也能夠用其代替cron來對周期性任務(wù)進(jìn)行調(diào)度,而且更為直觀,可靠,同時提供了美觀的可視化管理界面。
下文將對azkaban對spark離線任務(wù)調(diào)度進(jìn)行簡要說明。
一. 簡介
該部份內(nèi)容可參考官方文檔:http://azkaban.github.io/azkaban/docs/latest/#overviewgithub
azkaban由三部分構(gòu)成:
- Relational Database(Mysql)
- Azkaban Web Server
- Azkaban Executor Server
Relational Database(Mysql)
azkaban將大多數(shù)狀態(tài)信息都存于Mysql中,Azkaban Web Server 和 Azkaban Executor Server也需要訪問DB。
Azkaban Web Server
提供了Web UI,是azkaband的主要管理者,包括 project 的管理,認(rèn)證,調(diào)度,對工作流執(zhí)行過程的監(jiān)控等。
Azkaban Executor Server
調(diào)度工作流和任務(wù),記錄工作流任務(wù)的日志,因此將AzkabanWebServer和AzkabanExecutorServer分開,主要是由于在某個任務(wù)流失敗后,能夠更方便的將重新執(zhí)行。并且也更有利于Azkaban系統(tǒng)的升級。
可調(diào)度任務(wù)類型
- linux命令
- 腳本
- java程序
- hadoop MR
- spark
- flink
- hive
建立工做
建立工做任務(wù)
建立.job為后綴的文件,type是工做任務(wù)類型執(zhí)行會輸出 Hello World
建立工作流
兩個工做任務(wù),經(jīng)過dependencies進(jìn)行關(guān)聯(lián)
工作流如下:
將會先調(diào)用foo再調(diào)用bar。
二. 調(diào)度Spark任務(wù)Demo
建立一個新的project
編寫代碼 寫一段簡單的Spark代碼,將程序打包
package com.zxl import org.apache.spark.{SparkConf, SparkContext}object AzkabanTest extends App{val conf = new SparkConf().setMaster("local[2]").setAppName("azkabanTest")val sc = new SparkContext(conf)val data = sc.parallelize(1 to 10)data.map{_ * 2}.foreach(println) }編寫調(diào)度命令
vim test.job type=command command=/usr/install/spark/bin/spark-submit --class com.zxl.AzkabanTest test-1.0-SNAPSHOT.jar將這兩個文件以zip的形式打包在一塊兒
zip -r xxx.zip azkabanTest上傳工程
目前azkaban只支持zip包,其中要包括.job文件以及一些需要的工程和文件。
設(shè)置離線任務(wù)執(zhí)行周期
若是需要的話能夠設(shè)置離線任務(wù)的執(zhí)行周期(相似于cron的功能)
任務(wù)通知
能夠設(shè)置任務(wù)完成或失敗進(jìn)行郵箱通知等操作。
一些界面
主界面
任務(wù)完成狀況
任務(wù)log詳情
定時任務(wù)調(diào)用狀況圖
總結(jié)
以上是生活随笔為你收集整理的使用azkaban调度spark任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark-jobserver介绍: 提
- 下一篇: Linkis计算中间件部署过程记录