Azkaban的安装&使用&坑

目标

  1. Azkaban的安装
  2. Azkaban的使用
  3. Git的安装

Git的安装

在安装Azkaban之前要安装Git

  1. 获取github最新的Git安装包下载链接,进入Linux服务器,执行下载,命令为:

    wget https://github.com/git/git/archive/v2.17.0.tar.gz
  2. 压缩包解压,命令为:

    tar -zxvf v2.17.0.tar.gz
  3. 安装编译源码所需依赖,命令为:

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

    耐心等待安装,出现提示输入y即可;

  4. 安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为:

    yum remove git -y
  5. 进入解压后的文件夹,命令 cd git-2.17.0 ,然后执行编译,命令为:

    make prefix=/usr/local/git all
  6. 安装Git至/usr/local/git路径,命令为:

    make prefix=/usr/local/git install
  7. 打开环境变量配置文件,命令 vim /etc/profile ,在底部加上Git相关配置信息:

    export GIT_HOME=/usr/local/git/bin
    export PATH=$GIT_HOME/bin/:$PATH
  8. 输入命令 git --version ,查看安装的git版本,校验通过,安装成功。

Azkaban的安装

  1. 下载Azkaban

  2. 解压

    tar -xzvf 3.81.0.tar.gz -C ../app/
  3. 安装编译文档

    在开始编译之前要下载名为gradle-4.6-all.zip的包,如果直接让系统下载超级慢,下载好了放在同目录下,并且在/azkaban/gradle/wrapper/gradle-wrapper.properties 中注释下载路径,并指定已经下载好的路径

    distributionUrl=gradle-4.6-all.zip
    #distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

    还需要安装gcc环境:

    sudo yum install -y gcc-c++*

    修改maven仓库为阿里云镜像

    vim azkaban-3.81.0/build.gradle 54行左右

    maven {
    //这里是阿里云
    url 'http://maven.aliyun.com/nexus/content/repositories/central/'
    }

正式编译

./gradlew build installDist -x test

编译后生成三个文件

azkaban-exec-server
azkaban-solo-server
azkaban-web-server
  1. 执行azkaban-solo-server

    1. 解压azkaban-solo-serverapp目录下

      tar -xzvf azkaban-solo-server/build/distributionsa/zkaban-solo-server-0.1.0-SNAPSHOT.tar.gz ~/app
    2. 启动: bin/start-solo.sh,生成AzkabanSingleServer进程

    3. 修改配置(时区、用户)

      时区: default.timezone.id=Asia/Shanghai
      用户: <user password="tunan" roles="admin" username="tunan"/>
    4. web端登录,端口8081

  2. azkaban需要至少3G内存,如果内存不足3G,需要设置不检查内存

    azkaban-web-server-2.7.0/plugins/jobtypes/commonprivate.properties

    memCheck.enabled=false

Azkaban的使用

单节点部署

官方文档

  1. 创建flow20.projec文件,写入信息:

    azkaban-flow-version: 2.0
  2. 创建basic.flow文件,写入信息:

    nodes:
    - name: jobA
    type: command
    config:
    command: echo "This is an echoed text."
  3. 压缩Archive.zip文件,在web页面中提交

    : 提交的用户和hadoop上的用户不同

  4. 多依赖案例

    flow20.projec文件相同,basic.flow文件内容不同,文件名可不同

    nodes:
    - name: jobC
    type: noop
    # jobC depends on jobA and jobB
    dependsOn:
    - jobA
    - jobB

    - name: jobA
    type: command
    config:
    command: echo "This is an echoed text."

    - name: jobB
    type: command
    config:
    command: pwd
  5. wc案例

    nodes:
    - name: tunan-wordcount
    type: command
    config:
    command: hadoop jar /home/hadoop/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.16.2.jar wordcount /azkaban/data/wc.txt /out
    1. 直接点击程序修改输出文件参数
    2. 使用Flow Parameters修改输出文件参数
  6. hive案例

    除了固定的flow20.project文件,需要修改hive.flow文件和添加stat.sh文件

    hive.flow

    nodes:
    - name: exe hive
    type: command
    config:
    command: sh stat.sh

    stat.sh

    #! /bin/bash
    hive -e "select * from offline_dw.dws_country_traffic"

    上传相同的文件,新版本会覆盖旧的版本

  7. 调度执行

    在执行页面的左下角点击Schedule即可,并可在Scheduling中查看调度信息,然后在History中查看历史执行信息

多节点部署

  1. 在mysql中创建数据库

    mysql> CREATE DATABASE azkaban;
  2. 创建用户

    mysql> CREATE USER 'tunan'@'%' IDENTIFIED BY 'tunan';
  3. 赋权给用户

    GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'tunan'@'%' WITH GRANT OPTION;
  4. 在mysql中生成需要的表

    这里的source可能会遇到权限问题,解决的办法很多,如移动其他位置

    use azkaban;
    source /home/hadoop/app/azkaban/azkaban-db/build/install/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;
  5. 执行SQL获取动态端口号

    mysql> select * from executors ;

    +----+--------+-------+--------+
    | id | host | port | active |
    +----+--------+-------+--------+
    | 1 | aliyun | 46418 | 0 |
    +----+--------+-------+--------+
  6. 激活执行器

    curl -G "http://aliyun:46418/executor?action=activate"
  7. azkaban-exec-serverazkaban-web-server解压,并启动

    tar -xzvf azkaban-exec-server/build/distributionsa/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz ~/app
    tar -xzvf azkaban-web-server/build/distributionsa/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz ~/app
  8. 登录web使用,使用方式和单节点一样

二次开发

azkaban的二次开发需要调用az已经做好的接口

官方文档

命令行获取session.id

curl -k -X POST --data "action=login&username=azkaban&password=azkaban" http://aliyun:8081

{
"session.id" : "f1725f59-9d20-4fe2-b89e-3715ef85****",
"status" : "success"
}

常用功能

  1. 配置代理用户
  2. 配置hadoop.home
  3. 配置Spark作业提交
Author: Tunan
Link: http://yerias.github.io/2020/02/20/azkaban/1/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.