MHuiG

「看庭前花开花落,望天上云卷云舒」

安装部署

# Azkaban 安装部署

## azkaban 单服务模式安装与使用

所需软件
azkaban-solo-server
单服务模式安装

### 第一步：解压

azkaban 的 solo server 使用的是一个单节点的模式来进行启动服务的，只需要一个 `azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz` 的安装包即可启动，所有的数据信息都是保存在 H2 这个 azkaban 默认的数据当中，上传我们的压缩包，然后修改配置文件启动即可

    cd /export/softwares
    tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/

### 第二步：修改两个配置文件

修改时区配置文件

    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/conf
    vim azkaban.properties

azkaban.properties

    default.timezone.id=Asia/Shanghai

修改 commonprivate.properties 配置文件

    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes
    vim commonprivate.properties

commonprivate.properties

    execute.as.user=false
    memCheck.enabled=false

### 第三步：启动 solo-server

启动 azkaban-solo-server

    cd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOT
    bin/start-solo.sh

### 第四步：浏览器页面访问

浏览器页面访问 http://node03:8081/

## azkaban 两个服务模式安装

### 确认所需软件

Azkaban Web 服务安装包
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
Azkaban 执行服务安装包
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
编译之后的 sql 脚本
create-all-sql-0.1.0-SNAPSHOT.sql
C 程序文件脚本
execute-as-user.c 程序

### 数据库准备

进入 mysql 的客户端执行以下命令

    mysql -uroot -p

    CREATE DATABASE azkaban;
    CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
    GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION;
    flush privileges;
    use azkaban;
    source /export/softwares/create-all-sql-0.1.0-SNAPSHOT.sql;

### 解压软件安装包

解压 azkaban-web-server

    cd /export/softwares
    tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
    cd /export/servers
    mv azkaban-web-server-0.1.0-SNAPSHOT/ azkaban-web-server-3.51.0

解压 azkaban-exec-server

    cd /export/softwares
    tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../servers/
    cd /export/servers
    mv azkaban-exec-server-0.1.0-SNAPSHOT/ azkaban-exec-server-3.51.0

### 安装 SSL 安全认证 允许我们使用 https 的方式访问 azkaban 的 web 服务

密码 azkaban 一定要一个个的字母输入，或者粘贴也行

    cd /export/servers/azkaban-web-server-3.51.0
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA

### azkaban web server 安装

修改 azkaban-web-server 的配置文件

    cd /export/servers/azkaban-web-server-3.51.0/conf
    vim azkaban.properties

azkaban.properties

    # Azkaban Personalization Settings
    azkaban.name=Azkaban
    azkaban.label=My Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=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
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=true
    jetty.maxThreads=25
    jetty.port=8081
    jetty.keystore=/export/servers/azkaban-web-server-3.51.0/keystore
    jetty.password=azkaban
    jetty.keypassword=azkaban
    jetty.truststore=/export/servers/azkaban-web-server-3.51.0/keystore
    jetty.trustpassword=azkaban
    # Azkaban Executor settings
    # mail settings
    mail.sender=
    mail.host=
    # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    # when this parameters set then these parameters are used to generate email links.
    # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    # azkaban.webserver.external_hostname=myazkabanhost.com
    # azkaban.webserver.external_ssl_port=443
    # azkaban.webserver.external_port=8081
    job.failure.email=
    job.success.email=
    lockdown.create.projects=false
    cache.directory=cache
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban mysql settings by default. Users should configure their own username and password.
    database.type=mysql
    mysql.port=3306
    mysql.host=node03
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100
    #Multiple Executor
    azkaban.use.multiple.executors=true
    #azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
    azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
    azkaban.executorselector.comparator.Memory=1
    azkaban.executorselector.comparator.LastDispatched=1
    azkaban.executorselector.comparator.CpuUsage=1
    #executor.port=12321

### azkaban executor server 安装

第一步：修改 azkaban-exex-server 配置文件

    cd /export/servers/azkaban-exec-server-3.51.0/conf
    vim azkaban.properties

azkaban.properties

    # Azkaban Personalization Settings
    azkaban.name=Azkaban
    azkaban.label=My Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    web.resource.dir=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
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=true
    jetty.maxThreads=25
    jetty.port=8081
    jetty.keystore=/export/servers/azkaban-web-server-3.51.0/keystore
    jetty.password=azkaban
    jetty.keypassword=azkaban
    jetty.truststore=/export/servers/azkaban-web-server-3.51.0/keystore
    jetty.trustpassword=azkaban
    # Where the Azkaban web server is located
    azkaban.webserver.url=https://node03:8443
    # mail settings
    mail.sender=
    mail.host=
    # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
    # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
    # when this parameters set then these parameters are used to generate email links.
    # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
    # azkaban.webserver.external_hostname=myazkabanhost.com
    # azkaban.webserver.external_ssl_port=443
    # azkaban.webserver.external_port=8081
    job.failure.email=
    job.success.email=
    lockdown.create.projects=false
    cache.directory=cache
    # JMX stats
    jetty.connector.stats=true
    executor.connector.stats=true
    # Azkaban plugin settings
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    # Azkaban mysql settings by default. Users should configure their own
    username and password.
    database.type=mysql
    mysql.port=3306
    mysql.host=node03
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100
    # Azkaban Executor settings
    executor.maxThreads=50
    executor.flow.threads=30

第二步：添加插件

将我们编译后的 C 文件 execute-as-user.c
上传到这个目录来 /export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
或者直接将我们 /export/softwares 下面的文件拷贝过来也行

    cp /export/softwares/execute-as-user.c /export/servers/azkaban-execserver-3.51.0/plugins/jobtypes/

然后执行以下命令生成 execute-as-user

    yum -y install gcc-c++
    cd /export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
    gcc execute-as-user.c -o execute-as-user
    chown root execute-as-user
    chmod 6050 execute-as-user

第三步：修改配置文件

修改配置文件

    cd /export/servers/azkaban-exec-server-3.51.0/plugins/jobtypes
    vim commonprivate.properties

commonprivate.properties

    execute.as.user=false
    memCheck.enabled=false
    azkaban.native.lib=/export/servers/azkaban-exec-server3.51.0/plugins/jobtypes

### 启动服务

第一步：启动 azkaban exec server

    cd /export/servers/azkaban-exec-server-3.51.0
    bin/start-exec.sh

第二步：激活我们的 exec-server

node03 机器任意目录下执行以下命令 (随机找个端口号进行激活)

    curl -G "node03:$(<./executor.port)/executor?action=activate" && echo

第三步：启动 azkaban-web-serve

    cd /export/servers/azkaban-web-server-3.51.0/
    bin/start-web.sh

访问地址：
https://node03:8443

## 修改 linux 的时区问题

由于先前做好了时钟同步，所以不用担心时区问题，不需要修改时区了
注：先配置好服务器节点上的时区
1、先生成时区配置文件 Asia/Shanghai，用交互式命令 tzselect 即可
2、拷贝该时区文件，覆盖系统本地时区配置

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

## Azkaban 实战

### Azkaba 内置的任务类型支持 command、java

Command 类型单一 job 示例
创建 job 描述文件
创建文本文件，更改名称为 mycommand.job
注意后缀.txt 一定不要带上，保存为格式为 UFT-8 without bom
内容如下

    type=command
    command=echo 'hello world'

将 job 资源文件打包成 zip 文件
创建 project 并上传压缩包
通过 azkaban 的 web 管理平台创建 project 并上传 job 压缩包
首先创建 project
上传 zip 包
启动执行 job

### Command 类型多 job 工作流 flow

1、创建有依赖关系的多个 job 描述

第一个 job：foo.job

    type=command
    command=echo 'foo'

第二个 job：bar.job 依赖 foo.job

    type=command
    dependencies=foo
    command=echo 'bar'

2、将所有 job 资源文件打到一个 zip 包中
3、在 azkaban 的 web 管理界面创建工程并上传 zip 包
4、启动工作流 flow

### HDFS 操作任务 (通过 azkaban 在 hdfs 上创建一个目录)

1、创建 job 描述文件 fs.job

    type=command
    command=/export/servers/hadoop-2.6.0-cdh5.14.0/bin/hdfs dfs -mkdir /azkaban

2、将 job 资源文件打包成 zip 文件
3、通过 azkaban 的 web 管理平台创建 project 并上传 job 压缩包
4、启动执行该 job

### MAPREDUCE 任务

Mr 任务依然可以使用 command 的 job 类型来执行

1、创建 job 描述文件，及 mr 程序 jar 包（示例中直接使用 hadoop 自带的 example jar）

    type=command
    command=/export/servers/hadoop-2.6.0-cdh5.14.0/bin/hadoop jar hadoopmapreduce-examples-2.6.0-cdh5.14.0.jar pi 3 5

2、将所有 job 资源文件打到一个 zip 包中
3、在 azkaban 的 web 管理界面创建工程并上传 zip 包
4、启动 job

### HIVE 脚本任务

创建 job 描述文件和 hive 脚本
Hive 脚本： hive.sql

    create database if not exists azhive;
    use azhive;
    create table if not exists aztest(id string,name string) row format delimited
    fields terminated by '\t';

Job 描述文件：hive.job

    type=command
    command=/export/servers/hive-1.1.0-cdh5.14.0/bin/hive -f 'hive.sql'

将所有 job 资源文件打到一个 zip 包中
在 azkaban 的 web 管理界面创建工程并上传 zip 包
启动 job

    cd /export/servers/hive-1.1.0-cdh5.14.0/
    bin/hive
    show databases;
    use azhive;
    show tables;

azkaban 的定时任务
使用 azkaban 的 scheduler 功能可以实现对我们的作业任务进行定时调度功能

Azkaban Overview

Overview Azkaban Overview 为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成：shell 脚本程序，java 程序，mapreduce...

留言区

Notes
Azkaban
本文目录
Are You A Robot?