zoukankan      html  css  js  c++  java
  • 分布式计算(四)Azkaban安装

    Azkaban是一个批量工作流任务调度器,使用Java语言开发。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

    目录

      一、Azkaban优点

      二、Azkaban安装模式

      三、Azkaban安装

        1. 准备

        2. 下载源码

        3. 编译源码

        4. 配置数据库

        5. 配置web-server

        6. 配置exec-server

      四、Azkaban启动

    一、Azkaban优点

    提供功能清晰,简单易用的Web UI界面

    提供job配置文件快速建立任务和任务之间的依赖关系

    提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop

    基于Java开发,代码结构清晰,易于二次开发

    二、Azkaban安装模式

    Azkaban 有三种部署方式:单服务模式、2个服务模式、分布式多服务模式

    solo server model(单服务模式):该模式中 webServer 和 executorServer 运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。此模式合适个人试用使用。它也可以用在小规模的使用案例中。

    two server model(2个服务模式):数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行,这种模式下,管理服务器和执行服务器互不影响。适用在较重的生成环境中。

    multiple-executor(分布式多服务模式):存放元数据的数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行。多个 Executor 模式为最重的生产环境。

    接下来安装two server model

    三、Azkaban安装

    1. 准备

    Ubuntu版本:16.04

    JDK版本:1.8

    MySQL版本:5.7.25

    Azkaban版本:3.70.0

    2. 下载源码

    下载稳定的release版本,这里选择的是3.70.0版本

    # wget https://github.com/azkaban/azkaban/archive/3.70.0.tar.gz

    3. 编译源码

    # tar xvzf azkaban-3.70.0.tar.gz
    # cd azkaban-3.70.0
    # ./gradlew build installDist -x test

    编译过程会下载依赖包,时间可能会比较长。编译完成后会在对应的路径下生成可运行的文件,如下:

    solo server model(单服务模式): azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz 

    two server model(2个服务模式)和multiple-executor(分布式多服务模式): azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 和 azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz 

    Azkaban SQL: azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz 

    由于这次安装的two server model,将azkaban-db-0.1.0-SNAPSHOT.tar.gz、azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz和azkaban-web-server-0.1.0-SNAPSHOT.tar.gz解压到指定的目录azkaban

    # mkdir ~/azkaban
    # cd ~/azkaban
    # tar xvzf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz 
    # tar xvzf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
    # tar xvzf azkaban-db-0.1.0-SNAPSHOT.tar.gz
    # mv  azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server
    # mv  azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server
    # mv  azkaban-db-0.1.0-SNAPSHOT azkaban-db
    # ls azkaban-db -l
    total 112
    -rw-rw-r-- 1 root root   106 Mar 26 13:33 create.active_executing_flows.sql
    -rw-rw-r-- 1 root root   265 Mar 26 13:33 create.active_sla.sql
    -rw-r--r-- 1 root root 12087 Apr 10 09:47 create-all-sql-0.1.0-SNAPSHOT.sql
    -rw-rw-r-- 1 root root   487 Mar 26 13:33 create.execution_dependencies.sql
    -rw-rw-r-- 1 root root   956 Mar 26 13:33 create.execution_flows.sql
    -rw-rw-r-- 1 root root   516 Mar 26 13:33 create.execution_jobs.sql
    -rw-rw-r-- 1 root root   780 Mar 26 13:33 create.execution_logs.sql
    -rw-rw-r-- 1 root root   262 Mar 26 13:33 create.executor_events.sql
    -rw-rw-r-- 1 root root   323 Mar 26 13:33 create.executors.sql
    -rw-rw-r-- 1 root root   242 Mar 26 13:33 create.project_events.sql
    -rw-rw-r-- 1 root root   257 Mar 26 13:33 create.project_files.sql
    -rw-rw-r-- 1 root root   351 Mar 26 13:33 create.project_flow_files.sql
    -rw-rw-r-- 1 root root   320 Mar 26 13:33 create.project_flows.sql
    -rw-rw-r-- 1 root root   331 Mar 26 13:33 create.project_permissions.sql
    -rw-rw-r-- 1 root root   333 Mar 26 13:33 create.project_properties.sql
    -rw-rw-r-- 1 root root   482 Mar 26 13:33 create.projects.sql
    -rw-rw-r-- 1 root root   420 Mar 26 13:33 create.project_versions.sql
    -rw-rw-r-- 1 root root   200 Mar 26 13:33 create.properties.sql
    -rw-rw-r-- 1 root root  5235 Mar 26 13:33 create.quartz-tables-all.sql
    -rw-rw-r-- 1 root root   221 Mar 26 13:33 create.triggers.sql
    -rw-rw-r-- 1 root root    15 Mar 26 13:33 database.properties
    -rw-rw-r-- 1 root root   206 Mar 26 13:33 upgrade.3.20.0.to.3.22.0.sql
    -rw-rw-r-- 1 root root   607 Mar 26 13:33 upgrade.3.43.0.to.3.44.0.sql
    -rw-rw-r-- 1 root root   379 Mar 26 13:33 upgrade.3.68.0.to.3.69.0.sql
    -rw-rw-r-- 1 root root   558 Mar 26 13:33 upgrade.3.69.0.to.3.70.0.sql

    4. 配置数据库

    以root用户登录MySQL数据库,并执行SQL

    # 建用户 建库 授权 刷新权限
    mysql> CREATE DATABASE azkaban;
    mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    # 创建Azkaban表
    mysql> source /root/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql

    5. 配置web-server

    # vi azkaban-web-server/conf/azkaban.properties
    
    # 修改时区
    default.timezone.id=Asia/Shanghai
    # Azkaban mysql settings by default. Users should configure their own username and password.
    # 数据库类型
    database.type=mysql
    # 数据库端口
    mysql.port=3306
    # 数据库地址
    mysql.host=localhost
    # 数据库名称
    mysql.database=azkaban
    # 数据库用户
    mysql.user=azkaban
    # 数据库密码
    mysql.password=azkaban
    mysql.numconnections=100
    #Multiple Executor
    azkaban.use.multiple.executors=true

    其他配置保持默认。

    6. 配置exec-server

    # vi azkaban-exec-server/conf/azkaban.properties
    
    # 修改时区
    default.timezone.id=Asia/Shanghai
    # Azkaban mysql settings by default. Users should configure their own username and password.
    # 数据库类型
    database.type=mysql
    # 数据库端口
    mysql.port=3306
    # 数据库地址
    mysql.host=localhost
    # 数据库名称
    mysql.database=azkaban
    # 数据库用户
    mysql.user=azkaban
    # 数据库密码
    mysql.password=azkaban
    mysql.numconnections=100

    其他配置保持默认。

    四、Azkaban启动

    先启动executorServer:

    # cd azkaban-exec-server
    # ./bin/start-exec.sh

    再启动webServer:

    # cd azkaban-web-server
    # ./bin/start-web.sh

    **Note:**启动executorServer时会将executorServer的host,port同步到mysql的executors表中

    启动webServer时会出现如下错误,是因为自动同步到executors表中的executor默认是未激活,需要在数据库中update:

    2019/04/10 11:11:06.044 +0800 INFO [ExecutorManager] [Azkaban] Initializing executors from database.
    2019/04/10 11:11:06.045 +0800 ERROR [ExecutorManager] [Azkaban] No active executors found
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] Exception in thread "main" 
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban] azkaban.executor.ExecutorManagerException: No active executors found
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.executor.ActiveExecutors.setupExecutors(ActiveExecutors.java:52)
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.executor.ExecutorManager.setupExecutors(ExecutorManager.java:231)
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.executor.ExecutorManager.initialize(ExecutorManager.java:155)
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.executor.ExecutorManager.start(ExecutorManager.java:169)
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.webapp.AzkabanWebServer.launch(AzkabanWebServer.java:235)
    2019/04/10 11:11:06.046 +0800 ERROR [StdOutErrRedirect] [Azkaban]     at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:228)
    mysql> update executors set active=1 where id=2;

    update之后就可以正常启动web-server了。

    想要启动分布式多服务模式也很简单,多服务模式是多个executorServer分布在 不同服务器上,只需要将/root/azkaban/azkaban-exec-server拷贝到不同机器上即可组成分布式。

    启动成功,访问http://node01:8081/

  • 相关阅读:
    Mysql创建自定义函数
    本草纲目之五味四气
    linux svn命令
    linux命令提升
    php isset缺陷 用array_key_exists
    jquery之ajax
    简单的小游戏(猜数字)
    小球上下左右移动
    如果想在输出面板中排列出一个乘法口诀表请用以下方法
    并联电路
  • 原文地址:https://www.cnblogs.com/warehouse/p/10684444.html
Copyright © 2011-2022 走看看