• Azkaban-2.5及Plugins的安装配置


      Azkaban是由LinkedIn开发的调度工具,可以用于调度Hadoop中的相互依赖的Job。有时候,在Hadoop集群中运行的Job是相互依赖的,某些任务需要顺序的执行,这种场景下使用Azkaban能够很好的解决问题。
      Azkaban有三个重要的组件构成:

    • 关系型数据库(MySQL)
    • AzkabanWebServer
    • AzkabanExecutorServer

        这三个组件的关系如下:
        这里写图片描述
        本文主要是为了快速的搭建一个可用的Azkaban系统,不会对各组件的作用和实现原理做过多分析。
        Azkaban有三种安装部署模式,本文选择的是将WebServer和ExecutorServer分开部署的模式。

    一、组件下载

      上文中提到,Azkaban系统有三个组件,在后面还会为Azkaban安装一些插件。

    1、MySQL脚本

    azkaban-sql-script-2.5.0.tar.gz

    2、Azkaban Web Server

    azkaban-web-server-2.5.0.tar.gz

    3、Azkaban Executor Server

    azkaban-executor-server-2.5.0.tar.gz

    4、Azkaban Plugins

    二、环境准备

      在接下来的安装中,使用到两台机器,机器列表和各组件的安装位置如下表:

    服务名 机器名
    MySQL m000
    Executor Server m001
    Web Server client

      Executor Server和Web Server都安装在/usr/local路径下,以下都用$AK_HOME代替。
      

    三、Azkaban安装

    1、MySQL

      解压缩前面下载的azkaban-sql-script-2.5.0.tar.gz,执行其中的create-all-sql-2.5.0.sql文件,建好Azkaban需要用到的表。

    2、Azkaban Web Server

    (1)将azkaban-web-server-2.5.0.tar.gz在client的/usr/local路径下解压缩
      azkaban-web-server解压缩后的目录结构如下图所示:
      这里写图片描述

    (2)修改配置文件
      在$AK_HOME/conf路径下,有两个文件
      azkaban.properties,Azkaban系统参数
      azkaban-users.xml,XmlUserManager模式下的用户管理文件
      这里主要配置azkaban.properties文件中的参数。

    #Azkaban Personalization Settings
    #zkaban-web-server-2.5.0.tar.gzAzkaban Personalization Settings
    azkaban.name=Azkaban    #主标题
    azkaban.label=My Local 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
    
    # 数据库配置
    database.type=mysql
    mysql.port=3306
    mysql.host=m000
    mysql.database=azkaban  # 数据库名与上一步新建的database保持一致
    mysql.user=root
    mysql.password=root
    mysql.numconnections=100
    
    # Velocity dev mode
    velocity.dev.mode=false
    
    # Azkaban Jetty server properties.
    jetty.maxThreads=25
    jetty.ssl.port=8888
    jetty.port=8081
    jetty.keystore=web/keystore
    jetty.password=azkaban
    jetty.keypassword=azkaban
    jetty.truststore=web/truststore
    jetty.trustpassword=azkaban
    
    # Azkaban Executor settings
    executor.port=12321 #指定executor的port
    executor.host=m001  #指定executor所在机器
    
    # mail settings
    mail.sender=
    mail.host=
    job.failure.email=
    job.success.email=
    
    lockdown.create.projects=false

      这里面比较麻烦的是jetty的相关配置。需要与下一步的相对应。

    (3)配置SSL的KeyStore
      在需要输入密码的地方,输入上面配置文件中的password参数,我的密码是azkaban。

    keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg RSA -validity 3560
    keytool -export -alias jetty-azkaban -keystore keystore -rfc -file selfsignedcert.cer
    keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore

      将上面生成的keystore和truststore文件移动到$AK_HOME/web路径下。
      
      如果需要删除,使用如下命令。

    keytool -delete -alias jetty-azkaban -keystore keystore -storepass azkaban

    (4)启动Web Server
      $AK_HOME/bin/azkaban-web-start.sh
      启动后,日志中显示
      这里写图片描述
      接下来可以在Web页面中访问,输入https://client:8888。一定看清楚在前面输入的是https
      
      正常情况下,就可以在页面上看到Azkaban的登录页面了,如下图。这里输入的用户名是azkaban-users.xml中配置的,默认情况下用户名密码都使用azkaban可进入web页面。
      这里写图片描述

    3、Azkaban Executor Server

      将下载的azkaban-executor-server-2.5.0.tar.gz 文件在m001的/usr/local路径下解压缩,目录结构如下图
      这里写图片描述
      这里主要配置的是$AK_HOME/conf路径下的azkaban.properties文件。  
      完整内容如下:

    #zkaban-executor-server-2.5.0.tar.gz Azkaban
    default.timezone.id=Asia/Shanghai
    
    # Azkaban JobTypes Plugins
    azkaban.jobtype.plugin.dir=plugins/jobtypes
    
    #Loader for projects
    executor.global.properties=conf/global.properties
    azkaban.project.dir=projects
    
    database.type=mysql
    mysql.port=3306
    mysql.host=m000
    mysql.database=azkaban
    mysql.user=root
    mysql.password=root
    mysql.numconnections=100
    
    # Azkaban Executor settings
    executor.maxThreads=50
    executor.port=12321
    executor.host=m001
    executor.flow.threads=30

      配置好后,使用命令AK_HOME/bin/azkaban-executor-start.sh启动Azkaban Executor Server服务。

      到这里,就可以在Azkaban的web页面中配置任务并进行简单的操作了。接下来为Azkaban安装一些重要的插件。

    四、Azkaban Plugins安装

      Azkaban在设计上把核心功能和扩展插件分开了,因此可以很方便的为Azkaban安装一些有用的插件。目前已有的插件主要有以下几类:

    • 页面可视化插件。比如HDFS View和Reportal
    • Trigger插件
    • 用户管理插件。可以自定义一些用户登录验证功能
    • 报警插件

        接下来对每一种插件的安装和配置进行分析,某些插件安装在Web端,某些插件需要安装在Executor端。

    1、HDFS Viewer Plugins

      这个插件安装在Web端。
    (1)修改配置文件
      在$AK_HOME/conf/azkaban.properties文件中新增一行,viewer.plugins=hdfs。这个参数会告诉Azkaban到$AK_HOME/plugins/viewer/hdfs路径下去寻找新的插件。所以,我们需要在$AK_HOME/plugins/路径下新建一个viewer文件夹,并将azkaban-hdfs-viewer-2.5.0.tar.gz解压缩,重命名为hdfs。
    (2)配置依赖jar包
      Azkaban-2.5.0找不到HDFS相关的jar包,需要用户指定。
      一定要删除$AK_HOME/plugins/viewer/hdfs/extlib/hadoop-core-1.0.4.jar,不然会报ClassNotFound的错。删除后,该插件的extlib路径下已为空。

      将hadoop中如下jar包复制到$AK_HOME/extlib路径下:
    commons-cli-1.2.jar
    hadoop-auth-2.6.0.jar
    hadoop-common-2.6.0.jar
    hadoop-hdfs-2.6.0.jar
    protobuf-java-2.5.0.jar
    htrace-core-3.0.4.jar

      在hadoop-common-2.6.0.jar文件中,有一个core-default.xml文件,要把自己的hadoop配置文件中的core-site.xml文件添加到该jar包的根目录下。
      在Linux中,往jar包中新增文件,按照如下步骤:
      (1)将$HADOOP_HOME/etc/hadoop/core-site.xml文件复制到$Ak_HOME/extlib
      (2)在$Ak_HOME/extlib路径下使用jar -uf hadoop-common-2.6.0.jar core-site.xml命令将core-site.xml文件添加到jar包中

      最终hadoop-common-2.6.0.jar的文件结构如下图:
      这里写图片描述

      启动Web Server,在页面中就可以看到HDFS文件目录了。
      这里写图片描述
      也可以直接打开hdfs上的可读文件。
      这里写图片描述
      上面的htrace-core-3.0.4.jar也是必须的jar包,没有这个的话,会报错java.lang.NoClassDefFoundError: org/htrace/Trace,如下图
      这里写图片描述
      

    2、Azkaban Jobtype

      这个插件安装在Executor Server端。
      Azkaban可以运行一些简单的Job比如Unix命令行操作以及简单的Java程序。如果需要运行HadoopJava,Pig,Hive等类型的Job时,就需要安装这个插件了。
      安装Jobtype插件需要预先安装好Hadoop和Hive。我的Hadoop版本为2.6.0,安装路径/usr/local/hadoop,Hive版本0.13.1,安装路径/usr/local/hive

    (1)解压缩
      将前面下载的azkaban-jobtype-2.5.0.tar.gz上传到m001的$AK_HOME/plugins路径下,解压缩,并重命名为jobtypes。
      现在查看该目录结构:
      这里写图片描述
      
      
    (2)Executor Server配置文件修改
      修改$AK_HOME/conf/azkaban.properties,在最后新增一行

    azkaban.jobtype.plugin.dir=plugins/jobtypes

      这个参数告诉Azkaban到$AK_HOME/plugins/jobtypes路径中加载新的jobtype插件。

    (3)修改Jobtype配置文件
      (a)首先修改$AK_HOME/plugins/jobtypes/common.properties文件,设置以下三个参数:

    hadoop.home=/usr/local/hadoop
    hive.home=/usr/local/hive
    #pig.home=
    
    #azkaban.should.proxy=
    jobtype.global.classpath=${hadoop.home}/etc/hadoop,${hadoop.home}/share/hadoop/common/*,${hadoop.home}/share/hadoop/common/lib/*,${hadoop.home}/share/hadoop/hdfs/*,${hadoop.home}/share/hadoop/hdfs/lib/*,${hadoop.home}/share/hadoop/yarn/*,${hadoop.home}/share/hadoop/yarn/lib/*,${hadoop.home}/share/hadoop/mapreduce/*,${hadoop.home}/share/hadoop/mapreduce/lib/* 

      (b)修改$AK_HOME/plugins/jobtypes/commonprivate.properties文件中的hadoop.homehive.home
      (c)修改$AK_HOME/plugins/jobtypes/private.properties文件,设置以下参数:

    jobtype.classpath=${hive.home}/conf,${hive.home}/lib/* 

      最后重新重启Azkaban Executor Server,使新的插件生效。

  • 相关阅读:
    重构SWF为fla文件三
    重构SWF为fla文件四
    SQL Server中删除重复数据的几个方法
    重构SWF为fla文件五
    重构SWF为fla文件六
    MySQL下载与安装
    C++根据.h文件批量生成需要的函数框架
    pku acm 2362 square 解题报告
    Ackerman 函数的解法
    Web.Config 的读写
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300230.html
Copyright © 2020-2023  润新知