北京尚学堂|百战卓越班学员学习经验分享:安装部署Azkaban

  • 日期:09-04
  • 点击:(551)


  2019 数码实验室

  来自尚学堂百战卓越班学员知乎niruiqi547的学习分享。

  7.1 安装部署Azkaban

  大数据业务处理场景中,经常有这样的分析场景:

  A任务:将收集的数据通过一系列的规则进行清洗,然后存入Hive 表a中。

  B任务:将Hive中已存在的表b和表c进行关联得到表d。

  C任务:将A任务中得到的表a与B任务中得到的表d进行关联得到分析的结果表e。

  D任务:最后将Hive中得到的表e 通过sqoop导入到关系型数据库MySQL中供web端查询使用。

  显然,以上任务C依赖于任务A与任务B的结果,任务D依赖于任务C的结果。我们一般的做法可以打开两个终端分别执行任务A与任务B,当任务A与任务B执行完成之后再执行任务C,当任务C执行完成之后再执行任务D。整个任务流程中必须保证任务A、任务B执行完成之后执行任务C,然后再执行任务D。这样某一个环节都离不开人工的参与,需要时刻盯着各任务的执行进度,非常费力。

  以上业务场景就是一个大的任务,任务中分为四个子任务A、B、C、D,如果能有一个任务调度器给我们自动实现执行任务A,执行任务B,然后再执行任务C,最后执行任务D,那么就不需要人工时刻盯着任务是否执行完成,是否该开启下一个任务。Azkaban就是这样一个工作流的调度器,可以解决以上场景问题。

  7.1.1 Azkaban的安装

  Azkaban是一个批量工作流调度器,底层是使用java语言开发,用于在一个工作流内以一定的顺序运行一组任务和流程,并且提供了非常方便的webui界面来监控任务调度的情况,方便我们来管理流调度任务。

  Azkaban由三个关键组件组成:

  n AzkabanWebServer:

  主要负责项目管理、用户登录权限认证、定时执行工作任务、跟踪提交任务执行的流程、访问历史执行任务、保存执行计划的状态。

  n AzkabanExecutorServer:

  主要负责工作流程的提交、执行、检索和更新当前正在执行计划的数据,处理执行计划的日志。

  n 关系型数据库:

  主要是保存工作流中的原数据信息。

  下面,让我们从零开始搭建一个Azkaban任务流调度系统。

  7.1.1.1 下载Azkaban

  登陆Azkaban的官网:点击Downloads,如图示:

  

  点击之后,在跳转的页面中选择Releases,进入页面选择相应的版本下载,这里选择的版本是3.70.0版本,点击“Source code(tar.gz)”下载。

  

  

  7.1.1.2 环境准备

  在Linux中安装Azkaban,系统中需要安装好jdk,MySQL,这里选择的是jdk8和MySQL5.1版本。除此之外,还需要安装git,git是一个开源的分布式版本控制系统,一般在项目版本控制中会使用git控制,这里安装Azkaban需要git是因为需要通过git构建依赖的包。

  jdk和mysql的安装比较容易,下面介绍git的安装:

  1. 下载git,执行如下命令:

  wget

  1. [root