Azkaban3.X的安装(2018年8月19日最新版本)

参考文章:

  • 1.http://azkaban.github.io/azkaban/docs/latest/
  • 2.http://blog.csdn.net/gaoqida/article/details/72288900
  • 3.http://blog.csdn.net/huohuotu/article/details/77487007
  • 4.https://zhuanlan.zhihu.com/p/22224805

Step0:

在各个节点建立azkaban用户并配置ssh免密登陆

Step1:

下载jar包并且编译它:
  • 1、在home目录下,下载源码:

     cd /home/azkaban;
     git clone git@github.com:azkaban/azkaban.git
  • 2、编译进入到下载的azkaban目录中进行编译:

      # Build Azkaban
      ./gradlew build(这一步需要等待的时间略久,需要提前安装git、gcc等软件,否则会报错)
    
      # Clean the build
      ./gradlew clean
    
      # Build and install distributions
      ./gradlew installDist
    
      # Run tests
      ./gradlew test
    
      # Build without running tests
      ./gradlew build -x test

    (上面如果报错,执行 ./gradlew distTar)

      相关目录介绍如下:
      azkaban-common : 常用工具类
      azkaban-db : 对应的sql脚本
      azkaban-Hadoop-secutity-plugin : hadoop有关kerberos插件     
      azkaban-solo-server: web和executor运行在同一进程的项目
      azkaban-web-server:azkaban的web-server单独模块
      azkaban-executor-server: azkaban的executor-server单独模块
      azkaban-spi: azkaban存储接口以及exception类
  • 3.将编译好的文件拷贝出来:

      # mkdir Azkaban_package
      # cp azkaban-master/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
      # cp azkaban-master/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
      # cp azkaban-master/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
      # cp azkaban-master/azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz Azkaban_package/
  • 4.解压:

      # cd azkaban_package
      # tar xvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz 
      # tar xvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz 
      # tar xvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz 
      # tar xvf azkaban-db-0.1.0-SNAPSHOT.tar.gz 

Step2:配置mysql数据库

  • 1.安装Mysql
    这里就不详细说明了

  • 2.创建数据库

    创建一个azkaban数据库用户。

    创建一个azkaban的数据库:

      mysql -uroot -p
      CREATE DATABASE azkaban;

    授权:

      CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
      GRANT ALL ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
      flush privileges;
      EXIT
  • 3、导入建表语句

      mysql -uazkaban -p
              use azkaban
      SOURCE azkaban_package/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;

Step3:配置WebServer(选择一台服务器作为webServr)

  • 1.在webServer中创建文件夹/home/azkaban/azkaban-web-server,将之前解压出来的azkaban-web-server-0.1.0-SNAPSHOT.tar.gz中的三个目录拷贝进来,同时将/azkaban-solo-server-0.1.0-SNAPSHOT中的conf,plugins拷贝进来,在azkaban-web-server手动创建extlib文件夹

      bin      启动脚本存放目录
      conf     配置文件存放目录(没有的话从solo-server的目录中拷贝过来)
      lib      依赖jar包存放目录
      extlib   附加jar包存放目录(没有的话手动创建)
      plugins  插件安装目录(事实上azkaban的web并不需要这个文件夹,为了安全起见,从solo-server的目录中拷贝)
      web      web资源文件
  • 2.配置jetty ssl

      keytool -keystore keystore -alias jetty -genkey -keyalg RSA
      Enter keystore password:  
      Re-enter new password: 
      What is your first and last name?
      [Unknown]:  YY
      What is the name of your organizational unit?
      [Unknown]:  YY
      What is the name of your organization?
      [Unknown]:  YY
      What is the name of your City or Locality?
      [Unknown]:  shanghai
      What is the name of your State or Province?
      [Unknown]:  shanghai
      What is the two-letter country code for this unit?
      [Unknown]:  CN
      Is CN=YY, OU=YY, O=YY, L=shanghai, ST=shanghai, C=CN correct?
      [no]:  yes

将生成的keystone文件拷贝到web-server的安装目录下,和conf等目录同级

-3. 修改conf/azkaban.properties配置文件

    # Azkaban Personalization Settings
    azkaban.name=Test              #服务器UI名称,用于服务器上方显示的名字
    azkaban.label=My Local Azkaban #描述
    azkaban.color=#FF3601          #UI颜色
    azkaban.default.servlet.path=/index
    web.resource.dir=web/          #默认根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 #globa配置文件所在位置
    azkaban.project.dir=projects                      
    
    # Velocity dev mode
    velocity.dev.mode=false             
    # Azkaban Jetty server properties.  #jetty服务器属性
    jetty.maxThreads=25                 #最大线程数
    jetty.ssl.port=8443                 #jetty ssl端口号
    jetty.port=8081                     #jetty端口
    jetty.keystore=keystore             #SSL文件名
    jetty.password=bigdata@123          #SSL文件密码
    jetty.keypassword=bigdata@123       #jetty主密码与keystore文件相同
    jetty.truststore=keystore           #SSL文件名
    jetty.trustpassword=bigdata@123     #SSL文件密码
    # Azkaban Executor settings
    executor.port=12321                 #执行服务器端口
    # mail settings                     #邮件配置(暂没有配置)
    mail.sender=                        #发送邮箱
    mail.host=                          #发送邮箱smtp地址
    mail.password=                      #邮箱密码
    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=plugins/jobtypes
    
    database.type=mysql          #数据库类型
    mysql.port=3306              #数据库端口号
    mysql.host=    #数据库连接地址
    mysql.database=azkaban       #数据库实例名
    mysql.user=azkaban           #数据库用户名
    mysql.password=azkaban   #数据库密码
    mysql.numconnections=100     #数据库最大连接数
        
    
    azkaban.use.multiple.executors=true
    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
  • 4.上传log4j文件

    在conf目录中创建文件 log4j.properties,同时写入

      log4j.rootLogger=INFO,File
      log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
      log4j.appender.File.File=/home/azkaban/azkabna-web-server/logs/azkaban_executor
      log4j.appender.File.DatePattern='_'yyyy-MM-dd'.txt'
      #log4j.appender.File.MaxFileSize=100KB
      #log4j.appender.File.MaxBackupIndex=100
      log4j.appender.File.Append=true  
      log4j.appender.File.layout=org.apache.log4j.PatternLayout
      log4j.appender.File.layout.ConversionPattern=%d %t %-5p [%c] %m%n   

    如果没有log4j文件,将会以下错误:

      Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHan
  • 5.用户配置

    在conf/azkaban-users.xml中可以添加管理员用户及密码

  • 6.启动web-server

    在azkaban-web-server牡蛎下启动:

      bash bin/start-web.sh

    打开浏览器,访问https://webserverIP:8081,用 账号azkaban 密码azkaban登录。

Step5 Executor服务器安装

  • 1 在executor服务器中创建azkaban用户
  • 2 在/home/azkaban目录中创建azkaban-executor-server,将 azkaban-exec-server-0.1.0-SNAPSHOT中的bin,lib复制到azkaban-executor-server,将azkaban-solo-server-0.1.0-SNAPSHOT中conf,plugins复杂到azkaban-executor-server,创建extlib文件夹

      bin      启动脚本存放目录
      conf     配置文件存放目录(没有的话从solo-server的目录中拷贝过来)
      lib      依赖jar包存放目录
      extlib   附加jar包存放目录(没有的话手动创建)
      plugins  插件安装目录
  • 3.修改azkaban.properties

      # Azkaban Personalization Settings
      default.timezone.id=Asia/Shanghai
      # Loader for projects
      #executor.global.properties=conf/global.properties
      azkaban.project.dir=projects
      # Azkaban plugin settings
      azkaban.jobtype.plugin.dir=plugins/jobtypes
    
      executor.maxThreads=50
      executor.port=12321
      executor.flow.threads=30
    
      azkaban.native.lib=false//这个属性很奇怪,暂时先设置为false
    
      database.type=mysql
      mysql.port=3306
      mysql.host=192.168.11.201
      mysql.database=azkaban
      mysql.user=root
      mysql.password=root
      mysql.numconnections=100
  • 4.修改plugins/jobtepe/commmonprivate.properties

      # set execute-as-user
      execute.as.user=true
      azkaban.native.lib=/home/azkaban/azkaban-native-lib
    1. 在conf目录中创建文件 log4j.properties,同时写入

      log4j.rootLogger=INFO,File
      log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
      log4j.appender.File.File=/home/azkaban/azkaban-exec-server/logs/azkaban_executor
      log4j.appender.File.DatePattern='_'yyyy-MM-dd'.txt'
      log4j.appender.File.MaxFileSize=100KB
      log4j.appender.File.MaxBackupIndex=100
      log4j.appender.File.Append=true  
      log4j.appender.File.layout=org.apache.log4j.PatternLayout
      log4j.appender.File.layout.ConversionPattern=%d %t %-5p [%c] %m%n
    1. 在mysql的azkaban数据库中,将executor服务器的ID加入executors表

      insert into executors(host,port) values("EXECUTOR_HOST",EXECUTOR_PORT); 
      比如insert into executors(host,port) values("196.12.22.123",12321);
      同时将active设置为1
    1. 启动executor服务器

      bash /home/azkaban/azkaban-exec-server/bin/start-exec-*.sh;

-8.添加用户转化功能
我们用azkaban用户登陆azkaban,但是却可以通过user.proxy.user切换到任何用户执行任务,原因是我们进行了plugins配置,配置步骤如下
1.在azkaban-exec-server同一层创建azkaban-native-lib
2.cp azkaban/az-exec-util/src/main/c/execute-as-user.c azkaban-native-lib
3.gcc execute-as-user.c -o execute-as-user
4.chown root execute-as-user (you might need root privilege)
5.chmod 6050 execute-as-user (you might need root privilege)

转载于:https://www.cnblogs.com/WinseterCheng/p/8580037.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值