数据仓库任务调度器-Azkaban 入门<集群安装及测试>

数据仓库任务调度器-Azkaban | 入门<集群安装级测试>


安装包获取链接:https://pan.baidu.com/s/1bpM8oZHiIEqe8-m8wAgEcA?pwd=1111
提取码:1111

一、任务调度器的用途

在一个完整的大数据项目中,我们的整个项目往往是由多个任务单元组成,我这里以数据仓库为例:
1、在整个数据仓库的执行流程中我们涉及到大量的Shell脚本程序、Hive脚本程序、MR程序、Java程序等
2、在1的基础上,数据仓库的执行流程中脚本之间存在着前后的相互依赖关系,例如:生成数据—>flume监控数据---->将数据导入到hdfs—>将数据加载到数据仓库等等一系列的操作,都有着前后的依赖关系。
如果这些任务调度让人来手动进行的话容易产生错误,并且效率非常低下,完全不符合企业生产的需要,所以我们将会使用工作流程调度系统来为我们执行调度任务

二、常用任务调度器的比较

  • 1 简单任务调度:可以直接使用linux的Crontab
  • 2 复杂任务调度:可以使用Ooize、Azkaban、Airflow等
  • 比较:Crontab 常用语调度周期性被执行的指令,不适用于实现多个调度的依赖关系;Oozie的功能非常强大,但是Oozie若不是在CHD环境下的hue的话,需要编写大量的XML文件来实现调度功能,不便于管理和功能实现;Airflow是基于python脚本实现的,功能也非常强大,同时实现也并不是非常复杂,但是由于本人目前还没有开始python的学习,此内容在后期更新;
  • 今日重点:Azkaban 定义了一种 KV 文件格式来建立任务之间的依赖关系,更利于在一个工作流内以一个特定的顺序运行一组工作和流程。,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。

三、Azkaban集群模式的安装

  • 3.1 azkaban组件:azkaban-web、azkaban-exec、azkaban依赖数据库

  • 3.2 集群安装部署

    bigdata01bigdata02bigdata03
    Azkaban-web
    Azkaban-execAzkaban-execAzkaban-exec
  • 3.3 安装

    • 3.3.1 上传安装包并解压
      1)上传jar包:将上面下载三个jar包全部上传到服务器(虚拟机)中的一台,我这里是bigdata01下的/opt/soft/azkaban/目录下.

      [root@bigdata01 azkaban]# pwd
      /opt/soft/azkaban
      [root@bigdata01 azkaban]# ll
      -rw-r–r–. 1 root root 6433 Sep 27 09:40 azkaban-db-3.84.4.tar.gz
      -rw-r–r–. 1 root root 16175002 Sep 27 09:40 azkaban-exec-server-3.84.4.tar.gz
      -rw-r–r–. 1 root root 20239974 Sep 27 09:40 azkaban-web-server-3.84.4.tar.gz

      2)解压jar包:将上面上传的三个jar包解压到安装目录,我这里是/opt/module/azkaban目录下

      [root@bigdata01 azkaban]# tar -zvxf azkaban-db-3.84.4.tar.gz -C /opt/module/azkaban/
      [root@bigdata01 azkaban]# tar -zvxf azkaban-exec-server-3.84.4.tar.gz -C /opt/module/azkaban/
      [root@bigdata01 azkaban]# tar -zvxf azkaban-web-server-3.84.4.tar.gz -C /opt/module/azkaban/

      3)修改名字:在安装目录下对解压后的安装包进行修改名字(可以不修改,修改只是为了后期操作方便)

      mv azkaban-exec-server-3.84.4/ azkaban-exec
      mv azkaban-web-server-3.84.4/ azkaban-web

    • 3.3.2 为Azkaban配置mysql (以下命令均在mysql中操作)

      1) 在mysql中创建数据库azkaban

      CREATE DATABASE azkaban;
      

      2)创建用户azkaban并且赋予权限
      创建azkaban用户

      %是主机,百分号说明任意主机都可以连接、123456是用户azkaban的专属密码

      CREATE USER 'azkaban'@'%' IDENTIFIED BY '123456';
      

      赋予权限

      GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
      

      3)通过加载azkaban数据库管理信息创建Azkaban表(该文件在azkaban安装目录下的azkaban-db下的create-all-sql-3.84.4.sql)

      use azkaban;
      
      source /opt/module/azkaban/azkaban-db-3.84.4/create-all-sql-3.84.4.sql
      

      此时azkaban库下面会出现大量关于azkaban的表
      在这里插入图片描述

      4)在mysql配置文件my.cnf中添加max_allowed_packet=1024M
      通常在 /etc/my.cnf 或者./usr/my.cnf,如果都不在,建议使用find -name my.cnf进行查找

    • 3.3.3 配置Azkaban-exec
      1)配置azkaban.properties,此文件在azkaban-exec/conf目录下

      修改(主机名,密码等以自己配置的为准):
      default.timezone.id=Asia/Shanghai
      azkaban.webserver.url=http://bigdata01:8081
      database.type=mysql
      mysql.port=3306
      mysql.host=bigdata01
      mysql.database=azkaban
      mysql.user=azkaban
      mysql.password=123456
      并且加入:
      executor.port=12321

      1. 将azkaban分发到集群中的其他节点

      scp -r /opt/module/azkaban/azkaban-exec bigdata02://opt/module/azkaban/
      scp -r /opt/module/azkaban/azkaban-exec bigdata03://opt/module/azkaban/

    • 3.3.4 配置Azkaban-web
      1)配置azkaban.properties,此文件在azkaban-web/conf目录下

      default.timezone.id=Asia/Shanghai
      database.type=mysql
      mysql.port=3306
      mysql.host=bigdata01
      mysql.database=azkaban
      mysql.user=azkaban
      mysql.password=123456
      下面这条配置删除了MinimumFreeMemory,因为它默认6G,在学习环境下我们通常不满足,它会直接不执行azkaban
      azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus

      说明:

      StaticRemainingFlowSize:正在排队的任务数;
      CpuStatus:CPU 占用情况;
      MinimumFreeMemory:内存占用情况。测试环境,必须将 MinimumFreeMemory 删除掉,否则
      它会认为集群资源不够,不执行。

      2)配置azkaban-users.xml,此文件也在azkaban-web/conf目录下添加自己配置用户权限,在进入Azkaban的web页面是需要

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

四、Helloworld任务调度测试

  • 1 .启动azkaban-exec
    分别在集群中的所有安装azkaban-exec的azkaban-exec的bin目录下启动

    bin/start-exec.sh

  • 2 .激活azkaban-exec,不激活azkaban-web无法启动
    在每个节点都执行如下指令:

    curl -G “bigdata01:12321/executor?action=activate” && echo
    curl -G “bigdata02:12321/executor?action=activate” && echo
    curl -G “bigdata03:12321/executor?action=activate” && echo

  • 3 .启动azkaban-web
    在bigdata01节点的azkaban-web的bin目录下启动

    bin/start-web.sh

  • 4 .访问http://bigdata01:8081并使用在azkaban-users.xml中配置的用户名和密码登录
    在这里插入图片描述

  • 5 .在windows环境下,新建一个文件夹helloworld(必须是英文),并且在文件夹中创建文件helloworld.project,且编辑以下内容,该文件作用是采用新的 Flow-API 方式解析 flow 文件。

    azkaban-flow-version: 2.0

  • 6 .在文件夹中创建文件helloworld.flow,编辑如下内容

    nodes:
    	- name: jobA
    	type: command
    	config:
    		command: echo "Hello World"
    

    说明
    (1)Name:job 名称
    (2)Type:job 类型。command 表示你要执行作业的方式为命令
    (3)Config:job 配置

  • 7 .将文件夹helloworld进行压缩
    在这里插入图片描述

  • 8 . 进入到azkaban的web页面
    1)创建项目
    在这里插入图片描述
    在这里插入图片描述

    2)创建完成
    在这里插入图片描述
    3)点击Executor Flow进行执行任务调度
    在这里插入图片描述
    在这里插入图片描述
    4)左上角显示SUCCEEDED且任务名显示为绿色表示执行完成
    在这里插入图片描述
    9 .停止azkaban-web
    在安装目录下执行

    bin/shutdown-web.sh

    10 .停止azkaban-exec
    在每个节点下的安装目录下执行

    bin/shutdown-exec.sh

五、测试报错修改:

此错误不一定会出现,但是如果出现了请先配置了在重复执行上面的任务(只需要操作最后一步调度执行即可)

错误如下
在这里插入图片描述
查看日志如下
在这里插入图片描述
在这里插入图片描述

修改如下
在azkaban-exec的conf目录下修改azkaban.properties文件
将azkaban.jobtype.plugin.dir=plugins/jobtypes修改为具体的路径

azkaban.jobtype.plugin.dir=/opt/module/azkaban/azkaban-exec/plugins/jobtypes

添加下面这一条

azkaban.native.lib=false

重新启动azkaban-exec,激活azkaban-execa,启动zkaban-web,再次进入web并且执行上面的helloworld案例操作

关于azkaban的azkaban-exec的集群启动、激活、关闭脚本如下

vim azkaban-exec.sh

#! /bin/bash

case $1 in
"start"){
        for i in bigdata01 bigdata02 bigdata03
        do
                ssh $i "/opt/module/azkaban/azkaban-exec/bin/start-exec.sh"
        done
};;
"curled"){
        for i in bigdata01 bigdata02 bigdata03
        do
                ssh $i "curl -G "$i:12321/executor?action=activate" && echo"
        done

};;
"stop"){
        for i in bigdata01 bigdata02 bigdata03
        do
                ssh $i "/opt/module/azkaban/azkaban-exec/bin/shutdown-exec.sh"
        done
};;
esac

执行指令:azkaban-exec.sh start/curled/stop
编写好后要赋予执行权限,不会调的私信我


编写不易,希望对您有益,期待我们大家在学习中不断精湛,在努力中进步!错误之处还望您能指出,欢迎评论

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

似懂非dong

你的肯定使我加倍努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值