Azkaban簡介及安裝教程

前言:

最近在實際工作中玩到了Azkaban,雖然之前有簡單的接觸,但是真正用到的時候,才能體會到這個工具的實用性有多強。下面就寫個系列文章來記錄下azkaban從簡介及安裝配置再到簡單使用的一個過程。

1、概述

1.1、為什么需要工作流調度系統

  • 一個完整的數據分析系統通常都是由大量任務單元組成:
    shell腳本程序,java程序,mapreduce程序、hive腳本等
  • 各任務單元之間存在時間先后及前后依賴關系
  • 為了很好地組織起這樣的復雜執行計劃,需要一個工作流調度系統來調度執行;

例如,我們可能有這樣一個需求,某個業務系統每天產生20G原始數據,我們每天都要對其進行處理,處理步驟如下所示:

  1. 通過Hadoop先將原始數據同步到HDFS上;
  2. 借助MapReduce計算框架對原始數據進行轉換,生成的數據以分區表的形式存儲到多張Hive表中;
  3. 需要對Hive中多個表的數據進行JOIN處理,得到一個明細數據Hive大表;
  4. 將明細數據進行復雜的統計分析,得到結果報表信息;
  5. 需要將統計分析得到的結果數據同步到業務系統中,供業務調用使用。
    以上整個流程組成了我們的一個job,如果采用傳統的linux定時任務去處理這個流程的話,存在一個巨大的隱患,job失敗率很高,流程無法控制,沒有預警機制。所以類似的這種工作流調度器的工具就應運而生!

1.2、工作流調度實現方式

簡單的任務調度:直接使用linux的crontab來定義;
復雜的任務調度:開發調度平臺或使用現成的開源調度系統,比如ooize、azkaban等

1.3、常見工作流調度系統及其特性對比

下面的表格對上述四種hadoop工作流調度器的關鍵特性進行了比較,盡管這些工作流調度器能夠解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面還是存在顯著的區別,在做技術選型的時候,可以提供參考:
在這里插入圖片描述

1.4、Azkaban介紹

Azkaban是由Linkedin開源的一個批量工作流任務調度器。用于在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban定義了一種KV文件格式來建立任務之間的依賴關系,并提供一個易于使用的web用戶界面維護和跟蹤你的工作流。
它有如下功能特點:

  • Web用戶界面
  • 方便上傳工作流
  • 方便設置任務之間的關系
  • 調度工作流 認證/授權(權限的工作)
  • 能夠殺死并重新啟動工作流
  • 模塊化和可插拔的插件機制
  • 項目工作區
  • 工作流和任務的日志記錄和審計

2、Azkaban安裝部署

2.1、準備工作

Azkaban Web服務器
azkaban-web-server-2.5.0.tar.gz
Azkaban執行服務器
azkaban-executor-server-2.5.0.tar.gz

MySQL
目前azkaban只支持 mysql,需安裝mysql服務器,本文檔中默認已安裝好mysql服務器,并建立了 root用戶,密碼 root.

下載地址:http://azkaban.github.io/downloads.html

2.2、azkaban web服務器安裝

將安裝文件上傳到集群,最好上傳到安裝 hive、sqoop的機器上,方便命令的執行
在當前用戶目錄下新建 azkabantools目錄,用于存放源安裝文件.新建azkaban目錄,用于存放azkaban運行程序

解壓azkaban-web-server-2.5.0.tar.gz
命令: tar –zxvf azkaban-web-server-2.5.0.tar.gz
將解壓后的azkaban-web-server-2.5.0 移動到 azkaban目錄中,并重新命名 webserver
命令: mv azkaban-web-server-2.5.0 ../azkabancd ../azkabanmv azkaban-web-server-2.5.0  server

2.3、azkaban 執行服器安裝

解壓azkaban-executor-server-2.5.0.tar.gz 命令:tar –zxvf
azkaban-executor-server-2.5.0.tar.gz
將解壓后的azkaban-executor-server-2.5.0 移動到 azkaban目錄中,并重新命名 executor 命令:mv
azkaban-executor-server-2.5.0 …/azkaban cd …/azkaban mv
azkaban-executor-server-2.5.0 executor

azkaban腳本導入 解壓: azkaban-sql-script-2.5.0.tar.gz 命令:tar –zxvf
azkaban-sql-script-2.5.0.tar.gz 將解壓后的mysql 腳本,導入到mysql中: 進入mysql
mysql> create database azkaban; mysql> use azkaban; Database changed
mysql> source /home/hadoop/azkaban-2.5.0/create-all-sql-2.5.0.sql;

2.4、創建SSL配置

參考地址: http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
運行此命令后,會提示輸入當前生成 keystor的密碼及相應信息,輸入的密碼請勞記,信息如下:

輸入keystore密碼: 
再次輸入新密碼:
您的名字與姓氏是什么?[Unknown]: 
您的組織單位名稱是什么?[Unknown]: 
您的組織名稱是什么?[Unknown]: 
您所在的城市或區域名稱是什么?[Unknown]: 
您所在的州或省份名稱是什么?[Unknown]: 
該單位的兩字母國家代碼是什么[Unknown]:  CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正確嗎?[否]:  y

輸入的主密碼
(如果和 keystore 密碼相同,按回車):
再次輸入新密碼:
完成上述工作后,將在當前目錄生成 keystore 證書文件,將keystore 考貝到 azkaban web服務器根目錄中.如:cp keystore azkaban/server

2.5、配置文件

注:先配置好服務器節點上的時區
1、先生成時區配置文件Asia/Shanghai,用交互式命令 tzselect 即可
2、拷貝該時區文件,覆蓋系統本地時區配置
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

azkaban web服務器配置
進入azkaban web服務器安裝目錄 conf目錄

  • 修改azkaban.properties文件

命令vi azkaban.properties
內容說明如下:

#Azkaban Personalization Settings
azkaban.name=Test                           #服務器UI名稱,用于服務器上方顯示的名字
azkaban.label=My Local Azkaban                               #描述
azkaban.color=#FF3601                                                 #UI顏色
azkaban.default.servlet.path=/index                         #
web.resource.dir=web/                                                 #默認根web目錄
default.timezone.id=Asia/Shanghai                           #默認時區,已改為亞洲/上海 默認為美國#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager   #用戶權限管理默認類
user.manager.xml.file=conf/azkaban-users.xml              #用戶配置,具體配置參加下文#Loader for projects
executor.global.properties=conf/global.properties    # global配置文件所在位置
azkaban.project.dir=projects                                                #database.type=mysql                                                              #數據庫類型
mysql.port=3306                                                                       #端口號
mysql.host=localhost                                                      #數據庫連接IP
mysql.database=azkaban                                                       #數據庫實例名
mysql.user=root                                                                 #數據庫用戶名
mysql.password=root                                                          #數據庫密碼
mysql.numconnections=100                                                  #最大連接數# Velocity dev mode
velocity.dev.mode=false
# Jetty服務器屬性.
jetty.maxThreads=25                                                               #最大線程數
jetty.ssl.port=8443                                                                   #Jetty SSL端口
jetty.port=8081                                                                         #Jetty端口
jetty.keystore=keystore                                                          #SSL文件名
jetty.password=123456                                                             #SSL文件密碼
jetty.keypassword=123456                                                      #Jetty主密碼 與 keystore文件相同
jetty.truststore=keystore                                                                #SSL文件名
jetty.trustpassword=123456                                                   # SSL文件密碼# 執行服務器屬性
executor.port=12321                                                               #執行服務器端口# 郵件設置
mail.sender=xxxxxxxx@163.com                                       #發送郵箱
mail.host=smtp.163.com                                                       #發送郵箱smtp地址
mail.user=xxxxxxxx                                       #發送郵件時顯示的名稱
mail.password=**********                                                 #郵箱密碼
job.failure.email=xxxxxxxx@163.com                              #任務失敗時發送郵件的地址
job.success.email=xxxxxxxx@163.com                            #任務成功時發送郵件的地址
lockdown.create.projects=false                                           #
cache.directory=cache                                                            #緩存目錄
  • azkaban 執行服務器executor配置

進入執行服務器安裝目錄conf,修改azkaban.properties
vi azkaban.properties

#Azkaban
default.timezone.id=Asia/Shanghai                                              #時區# Azkaban JobTypes 插件配置
azkaban.jobtype.plugin.dir=plugins/jobtypes                   #jobtype 插件所在位置#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects#數據庫設置
database.type=mysql                                                                       #數據庫類型(目前只支持mysql)
mysql.port=3306                                                                                #數據庫端口號
mysql.host=192.168.20.200                                                           #數據庫IP地址
mysql.database=azkaban                                                                #數據庫實例名
mysql.user=root                                                                       #數據庫用戶名
mysql.password=root                                  #數據庫密碼
mysql.numconnections=100                                                           #最大連接數# 執行服務器配置
executor.maxThreads=50                                                                #最大線程數
executor.port=12321                                                               #端口號(如修改,請與web服務中一致)
executor.flow.threads=30                                                                #線程數
  • 用戶配置

進入azkaban web服務器conf目錄,修改azkaban-users.xml
vi azkaban-users.xml 增加 管理員用戶

<azkaban-users><user username="azkaban" password="azkaban" roles="admin" groups="azkaban" /><user username="metrics" password="metrics" roles="metrics"/><user username="admin" password="admin" roles="admin,metrics" /><role name="admin" permissions="ADMIN" /><role name="metrics" permissions="METRICS"/>
</azkaban-users>

2.6、啟動

  • web服務器

在azkaban web服務器目錄下執行啟動命令

bin/azkaban-web-start.sh

注:在web服務器根目錄運行
或者啟動到后臺

nohup  bin/azkaban-web-start.sh  1>/tmp/azstd.out  2>/tmp/azerr.out &
  • 執行服務器

在執行服務器目錄下執行啟動命令

bin/azkaban-executor-start.sh

注:只能要執行服務器根目錄運行

啟動完成后,在瀏覽器(建議使用谷歌瀏覽器)中輸入https://服務器IP地址:8443 ,即可訪問azkaban服務了.在登錄中輸入剛才新的戶用名及密碼,點擊 login.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面向對象:實例化的對象調用類方法 db.Column()

請問 類的對象調用另一個類的對象 是什么意思&#xff1f;&#xff1f;&#xff1f; from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class User(db.Model):__tablename__ usersid db.Column(db.Integer, primary_keyTrue)username db.Column(db.String…

WatiN-Html元素的操作

自動化測試&#xff0c;何為自動化測試&#xff0c;簡單點說就是機器代替人工操作&#xff0c;那么WatiN實現Web應用在瀏覽器上的自動化就需要模擬人工點擊、輸入、選擇、拖放等等操作&#xff0c;在這些操作中會觸Html元素的onclick、onchange、onmousemove等事件。在WatiN中提…

azkaban的操作指南

前言&#xff1a; 最近在實際工作中玩到了Azkaban&#xff0c;雖然之前有簡單的接觸&#xff0c;但是真正用到的時候&#xff0c;才能體會到這個工具的實用性有多強&#xff0c;總結下真個操作過程。在總結整個操作過程之前先簡單描述下工作流調度系統的優勢。 1、工作流調度…

創建對象方法之增

# 1. 創建模型對象 user User() # 2. 給對象賦值 user.username username user.password pwd user.phone phone # 3. 向數據庫提交數據 db.session.add(user) db.sessio…

ActiveMq使用筆記

java JMS技術 .1. 什么是JMS JMS即Java消息服務&#xff08;Java Message Service&#xff09;應用程序接口是一個Java平臺中關于面向消息中間件&#xff08;MOM&#xff09;的API&#xff0c;用于在兩個應用程序之間&#xff0c;或分布式系統中發送消息&#xff0c;進行異步…

導入Anaconda中的第三方庫運行時報錯:ImportError: Missing required dependencies ['pandas']

今天碰到一個大坑&#xff0c;花了大半天才搞明白問題出在哪來。事情的經過是這樣的&#xff1a;博主下午手賤把已將裝好anaconda2給卸載了&#xff08;同時裝了2和3&#xff09;&#xff0c;然后再次安裝anconda2后&#xff0c;卻發現配置完pycharm的解釋器后&#xff0c;代碼…

BZOJ2005 NOI2010 能量采集 歐拉函數

題意&#xff1a;求$\sum\limits_{i 1}^N {\sum\limits_{j 1}^M {f(i,j)} } $&#xff0c;其中f(i,j)(0,0)與(i,j)連線上點的數量 題解&#xff1a; 如果一個點(x,y)在(0,0)與(x,y)的連線上&#xff0c;則有gcd(x,y)gcd(x,y)。因此f(i,j)(gcd(i,j)gcd(i,j))且i<i,j<j的…

通過__tablename__ = 'xxx' #定義表名

from datetime import datetimefrom exts import dbclass User(db.Model):__tablename__ user1 #定義表名id db.Column(db.Integer,primary_keyTrue,autoincrementTrue)username db.Column(db.String(10), nullableTrue)password db.Column(db.String(256), nullableTrue)p…

python子類繼承父類特性,pycharm上面已經提示繼承了,為什么會報沒有該特性的錯誤?

因為在子類里覆蓋了父類的__init__ 如果需要調用父類用super class A(object):def __init__(self):self.a 1def fun(self):print self.aclass B(A):def __init__(self):self.b 2super(B, self).__init__()def fun(self):print self.aprint self.bB().fun()

Hadoop偽分布安裝詳解(一)

注&#xff1a;以下截圖針對Ubuntu操作系統&#xff0c;對Centos步驟類似。請讀者選擇不同鏡像即可。 第一部分&#xff1a;VMware WorkStation10 安裝 1.安裝好VMware10虛擬機軟件并下載好Ubuntu16.04 LTS 64位版的鏡像包 2.打開VMware10虛擬機軟件&#xff0c;選擇“創建新的…

C++_const常成員作用

介紹 常成員是什么 1.常成員關鍵詞為&#xff1a;const 2.常成員有&#xff1a;常成員變量、常成員函數、常成員對象 常成員有什么用 1.常成員變量&#xff1a;用于在程序中定義不可修改內部成員變量的函數 2.常成員函數&#xff1a;只能夠訪問成員變量&#xff0c;不可以修改成…

Python開發中收集的一些常用功能Demo

文章目錄目錄&#xff1a;前言&#xff1a;1、Python判斷文件是否存在的幾種方法&#xff1a;1.1、使用os模塊1.2、使用Try語句&#xff08;比較嚴謹的寫法&#xff09;1.3、使用pathlib模塊2、Python中寫入List到文本中并換行的方法3、Python按行讀取文件的幾種簡單實現方法3.…

Unlicensed ARC session – terminating!

問題描述 近日&#xff0c;發現ArcGIS10.4中存在很多bug&#xff0c;而且費了好多時間去測試它&#xff0c;最終決定改用10.1。在降級程序時遇到許可問題。 重裝ArcGIS10.1后&#xff0c;打開工程&#xff0c;所有引用都自動映射&#xff0c;沒報任何錯誤&#xff0c;清理重新生…

SQLAlchemy - Column詳解

SQLAlchemy - Column詳解 Column常用參數&#xff1a; default&#xff1a;默認值 nullable&#xff1a;是否可有 primary_key&#xff1a;是否為主鍵 unique&#xff1a;是否唯一 autoincrement&#xff1a;是否自動增長 onupdate&#xff1a;更新的時候執行的函數 name&…

Linux命令三劍客:grep、sed、awk總結

文章目錄前言一、grep命令語法實例grep結合pattern正則二、sed命令語法案例三、awk命令語法實例前言 最近看到了幾篇關于linux命令grep、sed、awk的文章&#xff0c;這里總結下&#xff0c;方便后面使用。 一、grep grep命令&#xff08;grep的全稱&#xff1a;Global searc…

python 機器學習資料

!(7 Steps to Mastering Machine Learning With Python) [http://www.kdnuggets.com/2015/11/seven-steps-machine-learning-python.html] 轉載于:https://www.cnblogs.com/zk47/p/6448506.html

Flask-SQLAlchemy 中如何不區分大小寫查詢?

例如下面的 User 模型&#xff0c;在數據庫中查詢時并不會區分大小寫 class User(db.Model):__tablename__ usersid db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(64), uniqueTrue, indexTrue)password_hash db.Column(db.String(128)) 這時&…

Git常用指令及功能總結

文章目錄前言&#xff1a;1、常用的git指令2、常用git功能及操作2.1、下載代碼&#xff1a;2.2、當前分支和master保持一致2.3、修改代碼后提交代碼到指定分支2.4、版本回退&#xff08;時空穿梭機&#xff09;2.5、概念工作區和暫存區2.6、添加遠程庫2.7、分支管理2.8、標簽管…

MacOS下MySQL配置

先去官網下載一個 MySQL for mac http://www.cnblogs.com/xiaobo-Linux/ 命令行運行終端&#xff0c;運行下面兩條命令&#xff1a; 12alias mysql/usr/local/mysql/bin/mysqlalias mysqladmin/usr/local/mysql/bin/mysqladmin方便終端直接輸入mysql命令&#xff0c;而不是必須…

HashMap為什么在多線程下會讓cpu100%

首先HashMap并不是sun公司多線程提供的集合&#xff0c;很多時候我們的程序是一個主線程&#xff0c;用了hashmap并沒有什么問題&#xff0c;但是在多線程下會出現問題。 hashmap是一個哈希表&#xff0c;存儲的數據結構也可以是一個線性數組&#xff0c;我們的存儲的數據都在e…