使用azkaban调度spark任务
這篇文章主要向大家介紹使用azkaban調度spark任務,主要內容包括基礎應用、實用技巧、原理機制等方面,希望對大家有所幫助。
Azkaban是一種相似于Oozie的工作流控制引擎,能夠用來解決多個Hadoop(或Spark等)離線計算任務之間的依賴關系問題。
也能夠用其代替cron來對周期性任務進行調度,而且更為直觀,可靠,同時提供了美觀的可視化管理界面。
下文將對azkaban對spark離線任務調度進行簡要說明。
一. 簡介
該部份內容可參考官方文檔:http://azkaban.github.io/azkaban/docs/latest/#overviewgithub
azkaban由三部分構成:
- Relational Database(Mysql)
- Azkaban Web Server
- Azkaban Executor Server
Relational Database(Mysql)
azkaban將大多數狀態信息都存于Mysql中,Azkaban Web Server 和 Azkaban Executor Server也需要訪問DB。
Azkaban Web Server
提供了Web UI,是azkaband的主要管理者,包括 project 的管理,認證,調度,對工作流執行過程的監控等。
Azkaban Executor Server
調度工作流和任務,記錄工作流任務的日志,因此將AzkabanWebServer和AzkabanExecutorServer分開,主要是由于在某個任務流失敗后,能夠更方便的將重新執行。并且也更有利于Azkaban系統的升級。
可調度任務類型
- linux命令
- 腳本
- java程序
- hadoop MR
- spark
- flink
- hive
建立工做
建立工做任務
建立.job為后綴的文件,type是工做任務類型執行會輸出 Hello World
建立工作流
兩個工做任務,經過dependencies進行關聯
工作流如下:
將會先調用foo再調用bar。
二. 調度Spark任務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) }編寫調度命令
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文件以及一些需要的工程和文件。
設置離線任務執行周期
若是需要的話能夠設置離線任務的執行周期(相似于cron的功能)
任務通知
能夠設置任務完成或失敗進行郵箱通知等操作。
一些界面
主界面
任務完成狀況
任務log詳情
定時任務調用狀況圖
總結
以上是生活随笔為你收集整理的使用azkaban调度spark任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark-jobserver介绍: 提
- 下一篇: Hive架构及安装部署(远程数据库模式M