zoukankan      html  css  js  c++  java
  • 2.azkaban3.0安装

    安装规划

    IP 角色 端口
    10.31.1.88 azkaban web server https://10.31.1.88:8443 http://10.31.1.88:8081
    10.31.1.89 executor
    10.31.1.90 executor

    安装azkban

    1.安装配置数据库

    1.安装mysql

    2.为azkaban创建数据库和用户,并授权

    mysql> CREATE DATABASE azkaban;
    mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    mysql> GRANT ALL ON <database>.* to '<username>'@'%' WITH GRANT OPTION;

    3.修改mysql配置文件 /etc/my.cf

    [mysqld]
    …
    max_allowed_packet=1024M

    设置最大传输包.然后重启mysql
    $ sudo /sbin/service mysqld restart
    4.创建azkaban表
    执行安装包目录下的sql目录中的所有文件,不包括以update开头的:
    mysql> source create.executors.sql

    2.下载安装web server

    1.下载源码包
    http://azkaban.github.io/downloads.html 下载azkaban的source包,然后按以下步骤编译:

    # Build Azkaban
    ./gradlew build
    
    # Clean the build
    ./gradlew clean
    
    # Build and install distributions
    ./gradlew installDist
    
    # Run tests
    ./gradlew test
    
    # Build without running tests
    ./gradlew build -x test

    编译完成后目录如下:

    标红框的三个是要用到的,分别是exectorsolo-serverwebserver.
    其中solo-server包含的azkaban的配置文件:
    打开azkaban-master/azkaban-solo-server/build/install/azkaban-solo-server目录,下面就是编译好的soloserver:

    将下面的confpluginssql复制到azkaban-webserver所在的目录:azkaban-master/azkaban-web-server/build/install/azkaban-web-server
    将下面的confplugins复制到azkaban-executor所在的目录:azkaban-master/azkaban-exec-server/build/install/azkaban-exec-server
    然后将azkaban-webserver目录分别压缩成azkaban-webserver.gz和azkaban-exec-server.gz,分发到要装webserver和executor的机器上.

    AZKABAN的目录结构:

    在conf目录下有以下配置文件:

    • azkaban.properties - Azkaban运行时参数,主配置文件
    • global.properties - 全局静态参数,每个workflow和job都可以读取
    • azkaban-users.xml - 用户验证文件。使用XmLUserManager时才需要使用这个文件

    2.配置SSL
    a.生成keystore
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    所有输入都写azkaban
    b.配置azkaban.properties中SSL的设置
    修改password,并将创建的keystore文件复制到webserver目录下

    jetty.keystore=keystore #设置key位置
    jetty.password=password
    jetty.keypassword=password
    jetty.truststore=keystore
    jetty.trustpassword=password

    3.设置数据库连接信息
    在azkaban.properties:

    database.type=mysql
    mysql.port=3306
    mysql.host=localhost
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100

    4.配置azkaban用户
    在azkaban.properties,设置用户管理使用类,及用户配置的xml

    user.manager.class=azkaban.user.XmlUserManager
    user.manager.xml.file=conf/azkaban-users.xml

    在azkaban-users.xml中设置用户:

    6.设置web server的端口

    jetty.maxThreads=25
    jetty.ssl.port=8443
    executor.port=12321

    设置executor连接webserver的端口
    执行bin/azkaban-web-start.sh启动web server,访问https://xxx.xxx.xxx.xxx:8443 访问web页面
    目前https端口没启动成功,请使用http://10.31.1.88:8081

    3.安装mulit executor

    1.executor的目录结构

    executor只有一个配置文件conf/azkaban.propertie

    2.数据库设置

    database.type=mysql
    mysql.port=3306
    mysql.host=localhost
    mysql.database=azkaban
    mysql.user=azkaban
    mysql.password=azkaban
    mysql.numconnections=100

    3.设置executorclient
    executor做为client连接到webserver

    executor.maxThreads=50
    executor.port=12321
    executor.flow.threads=30

    4.设置azkaban以mulitexecutor方式执行.
    webserver的配置文件中添加:

    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

    5.在数据库中添加executor信息
    将所有的executor的信息都写入数据库中:
    insert into executors(host,port) values("EXECUTOR_PORT",EXECUTOR_PORT);
    经验证,不需要手动插入executor信息

    6.启动所有的exectuor
    bin/azkaban-executor-start.sh

    4.安装azkaban插件

    具体参考官方文档.略.

    AZKABAN参数

    参考:http://azkaban.github.io/azkaban/docs/latest/#configuration
    重要参数:

    参数 说明 默认值
    executor.flow.threads 同时最多执行的flow的个数 30
    job.log.chunk.size 日志量达到多大时向下滚动 5MB
    flow.num.job.threads 每个flow并行执行的最大job数 10
    job.max.Xms 每个job可以请求的最大初始内存,超过这个内存azkaban将不启动job 1GB
    job.max.Xmx 每个job可以请求的最大内存,超过这个内存azkaban将不启动该job 2GB
    azkaban.server.flow.max.running.minutes flow最长执行时间,超过个时间将会被kill掉,0或者负数不限制时间 -1
    default.timezone azkaban的时区 America/Los_Angeles
    jetty.maxThreads webserver处理的最大请求队列,即连个的executoserver个数 25
    lockdown.create.projects 是否只有管理员可以创建project false
    lockdown.upload.projects 是否只有管理员可以上传project zip false
    azkaban.use.multiple.executors azkaban是否以multi-executor运行,需要多个executor支持 false
    azkaban.executorselector.filters 根据何种过滤器选择executor
    azkaban.executorselector.comparator.{ComparatorName} executor比较器

    安装出现的问题

    1.webserver启动异常"No active executor found"
    修改数据库executors表中的active字段为1,并且在关闭exector时使用kill -9,不能使用azkaban-executor_shutdown.sh,否则要重新设置executors表中的active字段为1.
    2.执行azkaban任务时,executor报错,但不影响任务的执行:

    2017-07-27 16:09:49 INFO  ExecutorServlet:115 - User  has called action log on 3
    2017-07-27 16:09:49 ERROR ExecutorServlet:186 - Running flow 3 not found.
    azkaban.executor.ExecutorManagerException: Running flow 3 not found.
        at azkaban.execapp.FlowRunnerManager.readFlowLogs(FlowRunnerManager.java:472)
        at azkaban.execapp.ExecutorServlet.handleFetchLogEvent(ExecutorServlet.java:183)
        at azkaban.execapp.ExecutorServlet.doGet(ExecutorServlet.java:120)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

    这个问题在github有人提出同样问题,可能是azkaban的一个bug.
    https://github.com/azkaban/azkaban/issues/1128

    3.无法启动https端口
    没有报任何错误,但无法启动https.

    4.启动报错:
    参考:http://blog.csdn.net/daiyutage/article/details/69526021
    Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "main"
    原因:缺少log4j.properties
    解决办法:
    在Azkaban-web-server 的conf目录下创建文件夹conf/log4j.properties:
    写入以下内容

    log4j.rootLogger=INFO,C
    log4j.appender.C=org.apache.log4j.ConsoleAppender
    log4j.appender.C.Target=System.err
    log4j.appender.C.layout=org.apache.log4j.PatternLayout
    log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

    5.启动报错

    2017-08-16 16:49:25 INFO log:67 - jetty-6.1.26
    2017-08-16 16:49:25 INFO ProjectManagerServlet:134 - downloadBufferSize: 8192
    2017-08-16 16:49:25 INFO RestLiAnnotationReader:1829 - Processed actions resource 'azkaban.restli.UserManagerResource'
    2017-08-16 16:49:25 INFO RestLiAnnotationReader:1829 - Processed actions resource 'azkaban.restli.ProjectManagerResource'
    2017-08-16 16:49:25 WARN log:76 - failed SslSocketConnector@0.0.0.0:8443: java.io.FileNotFoundException: /opt/azkaban3/azkaban-web-server/keystore #设置keyä½ç½® (No such file or directory)
    2017-08-16 16:49:25 WARN log:76 - failed Server@2f6e28bc: java.io.FileNotFoundException: /opt/azkaban3/azkaban-web-server/keystore #设置keyä½ç½® (No such file or directory)
    2017-08-16 16:49:25 WARN AzkabanWebServer:513 - java.io.FileNotFoundException: /opt/azkaban3/azkaban-web-server/keystore #设置keyä½ç½® (No such file or directory)
    2017-08-16 16:49:25 ERROR StdOutErrRedirect:56 - /opt/azkaban3/azkaban-web-server/keystore #设置keyä½ç½® (No such file or directory)

    无解.不启动ssl就可以了.
    默认是启动ssl的,在azkaban.properties中设置
    jetty.use.ssl=false
    默认是true





  • 相关阅读:
    谈谈Vue.js——vue-resource全攻略
    XStream(xml/bean转换)
    Notepad++ xml/json格式化
    秒杀系统架构分析与实战
    Spring事务管理
    小程序思维导图(一)
    小程序思维导图(二)
    轻松搭建持续集成工具jenkins
    rep stos dword ptr es:[edi]
    关于dword ptr 指令
  • 原文地址:https://www.cnblogs.com/skyrim/p/7456008.html
Copyright © 2011-2022 走看看