• Azkaban简介与安装


    一、简介

      Azkaban是在LinkedIn上创建的用于运行Hadoop作业的批处理工作流作业调度程序。Azkaban通过作业依赖性解决订购问题,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。

      在3.0版之后,提供了两种模式:独立的“单服务器”模式和分布式多执行器模式。下面介绍两种模式之间的区别。

    在单独服务器模式下,数据库是嵌入式H2,并且Web服务器和执行程序服务器都在同一进程中运行。如果只想尝试一下,这将很有用。它也可以用于小规模的用例。

    多重执行器模式适用于最严重的生产环境。它的数据库应由设置了主从关系的MySQL实例支持。理想情况下,Web服务器和执行程序服务器应在不同的主机中运行,以便升级和维护不会影响用户。这种多主机设置为Azkaban带来了强大且可扩展的方面。


    特征


    • 与任何版本的Hadoop兼容
    • 易于使用的Web UI
    • 简单的Web和HTTP工作流程上传
    • 项目工作区
    • 安排工作流程
    • 模块化且可插入
    • 认证与授权
    • 跟踪用户动作
    • 通过电子邮件通知失败和成功
    • SLA警报和自动终止
    • 重试失败的作业

    Azkaban架构

    Azkaban三个关键组件的作用

      Relational Database:存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等。

      AzkabanWebServer:项目管理、权限授权、任务调度、监控executor。

      AzkabanExecutorServer:作业流执行的Server。

    Azkaban三种部署模式

      solo-server模式

      DB使用的是一个内嵌的H2,Web Server和Executor Server运行在同一个进程里。这种模式包含Azkaban的所有特性,但一般用来学习和测试。

      two-server模式

      DB使用的是MySQL,MySQL支持master-slave架构,Web Server和Executor Server运行在不同的进程中。  

      分布式multiple-executor模式

      DB使用的是MySQL,MySQL支持master-slave架构,Web Server和Executor Server运行在不同机器上,且有多个Executor Server。

    二、安装部署

    • 安装前准备

        依赖环境:jdk1.8以上(请提前配置好)

        MySQL安装:请参考:https://www.cnblogs.com/guduershi/p/12017008.html

        MySQL首次登录注意事项:

          如果初始密码无法正确获取,则配置免密登入(更改密码后记得把此配置去除)

                         

           变更密码

                       

        下载

        编译

      #解压源码包

      tar -zxvf azkaban-3.73.1.tar.gz

      #跳转到解压目录

      cd azkaban-3.73.1

      #修改build.gradle解决Gradle和Maven下载jar包慢的问题参考:https://blog.csdn.net/nklinsirui/article/details/82056172

          vi build.gradle

                       

          #编译压缩为tar包

          ./gradlew distTar

        编译后生成的安装包路径

          #solo-server模式安装包路径
          [root@hadoop1 azkaban-3.73.1]# ls azkaban-solo-server/build/distributions/
          #two-server模式和multiple-executor模式web-server安装包路径
          [root@hadoop1 azkaban-3.73.1]# ls azkaban-web-server/build/distributions/
          #two-server模式和multiple-executor模式exec-server安装包路径
          [root@hadoop1 azkaban-3.73.1]# ls azkaban-exec-server/build/distributions/
          #two-server模式和multiple-executor模式建库SQL语句路径
          [root@hadoop1 azkaban-3.73.1]# ls azkaban-db/build/distributions/

    • solo-server模式部署

       //TODO

    • two-server模式部署

        1、解压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到指定安装目录

        2、重命名azkaban-exec-server-0.1.0-SNAPSHOT为executor,

           azkaban-web-server-0.1.0-SNAPSHOT为server(个人意愿

        3、进入mysql创建azkaban数据库

          3.1创建azkaban数据库

                          

          3.2执行sql脚本create-all-sql-0.1.0-SNAPSHOT.sql

                          

       设置conf参数

          exec-server的如下:只需把下面host和user和password修改即可 (exec-server/conf/azkaban.properties)

    # Azkaban Personalization Settings
    azkaban.name=Test
    azkaban.label=My Local Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    #web的路径变为绝对路径
    web.resource.dir=/soft/azkaban/azkaban-web-server/web/
    #时间改为亚洲上海
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    #user.manager.xml改为绝对路径
    user.manager.xml.file=/soft/azkaban/azkaban-web-server/conf/azkaban-users.xml
    # Loader for projects改为绝对路径
    executor.global.properties=/soft/azkaban/azkaban-exec-server/conf/global.properties
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.port=8081
    # Where the Azkaban web server is located
    azkaban.webserver.url=http://localhost:8081
    # 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=/soft/azkaban/azkaban-exec-server/plugins/jobtypes
    # Azkaban mysql settings by default. Users should configure their own username and password.
    database.type=mysql
    mysql.port=3306
    mysql.host=mysql的的主机host
    mysql.database=azkaban
    mysql.user=账号名称
    mysql.password=账号密码
    mysql.numconnections=100
    # Azkaban Executor settings
    executor.maxThreads=50
    executor.flow.threads=30

         web-server的如下:同样只需把下面host和user和password修改即可(web-server/conf/azkaban.properties)

    # Azkaban Personalization Settings
    azkaban.name=Test
    azkaban.label=My Local Azkaban
    azkaban.color=#FF3601
    azkaban.default.servlet.path=/index
    #web的路径变为绝对路径
    web.resource.dir=/soft/azkaban/azkaban-web-server/web/
    #时间改为亚洲上海
    default.timezone.id=Asia/Shanghai
    # Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager
    #填写的是user.manager.xml的绝对路径
    user.manager.xml.file=/soft/azkaban/azkaban-web-server/conf/azkaban-users.xml
    # Loader for projects添的是exec的global的绝对路径哦
    executor.global.properties=/soft/azkaban/azkaban-exec-server/conf/global.properties
    azkaban.project.dir=projects
    # Velocity dev mode
    velocity.dev.mode=false
    # Azkaban Jetty server properties.
    jetty.use.ssl=false
    jetty.maxThreads=25
    jetty.port=8081
    # 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=mysql的host
    mysql.database=azkaban
    mysql.user=用户账号
    mysql.password=用户密码
    mysql.numconnections=100
    #Multiple Executor
    azkaban.use.multiple.executors=true
    #注意如果你的剩余内存不足6g必须把下面的 MinimumFreeMemory, 删除。不然会出错
    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
    

        该web是可以用ssl,但是对于我们初学者没必要,麻烦~

      添加账号

        我们只需要在/azkaban-web-server/conf/azkaban-users.xml文件里添加即可。

        假设我添加了一个snow账号密码为snow并有admin权限。只需如下修改即可

    <azkaban-users>
      <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
      <user password="metrics" roles="metrics" username="metrics"/>
      <user password="snow" roles="admin" username="snow"/>


      <role name="admin" permissions="ADMIN"/>
      <role name="metrics" permissions="METRICS"/>
    </azkaban-users>

      启动Azkaban

        启动顺序:首先启动exec的再启动web的。一定要按这样的顺序,不然一定无法运行

        启动exec-server

          cd /soft/azkaban/azkaban-exec-server/

          ./bin/start-exec.sh
        如果启动exec-server的时候报域名解析失败,那配置/etc/hosts就好了
                  

        手动修改exec-srver状态为激活。 

           这步很重要,不然后面web端会一直起不来,他会报错说execute没有available的,然后就停了。很蛋疼但是没办法。端口号在executor下的executor.port文件中可查

        具体命令为curl http://${executorHost}:${executorPort}/executor?action=activate  

                  

        启动web-server

          cd /soft/azkaban/azkaban-web-server/

          ./bin/start-web.sh

    至此azkaban已经安装并启动,以上仅供参考!

  • 相关阅读:
    restframework 使用OrderingFilter实现排序
    restframework 使用django_filters 实现过滤
    Serializer 嵌套使用
    docker 运行scrpyd
    flutter-lol云顶之弈助手app
    微信小程序上传多张图片,后端只保存了最后一张的Bug
    ettercap局域网arp欺骗,轻松窃密
    GoLang邮件发送Demo(继上篇msmtp)
    Mac下命令行发邮件【搭配php(shell_exec...)等脚本语言,轻松发邮件,告别各种依赖库】
    我的第一个RN应用(漂亮的首页和笑话列表)
  • 原文地址:https://www.cnblogs.com/drunkPullBreeze/p/13226996.html
Copyright © 2020-2023  润新知