参考文章:

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
  • 在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
  • 在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

启动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)

最新文章

  1. 相克军_Oracle体系_随堂笔记004-shared pool
  2. ActiveReports最终报表设计器本地化方法介绍
  3. volcanol_Linux_ 问题汇总系列_4_Thinkpad_E40_0578MDC_在Fedora 13 Linux(FC13)中如何安装无线网卡驱动
  4. 像编程一样写文章—Markdown
  5. 在linux下运行java工程
  6. codeforces 375D:Tree and Queries
  7. 【转】google谷歌百度收录网站的技巧方法,如何让百度收录?
  8. C语言--基本运算符
  9. Eucalyptus和Openstack最近版本的改动简单对比
  10. Mysql介绍和实践总结
  11. 为什么可以通过URL来调起APP - URL Scheme和Intent
  12. [USACO2008 Mar]土地购买
  13. 安装Linux操作系统,学习Liunx基础
  14. 机器学习基石笔记:06 Theory of Generalization
  15. 并发编程---线程queue---进程池线程池---异部调用(回调机制)
  16. SSL/TLS Server supports TLSv1.0
  17. RAC手动中断订阅
  18. soanr - 企业用户角色管理
  19. unity 查找脚本被场景中哪些对象引用
  20. HBuilder 详细使用方法 -------------参考 :http://www.runoob.com/w3cnote/hbuilder-intro.html

热门文章

  1. (转)Linux企业运维人员常用的150个命令分享
  2. 014-CallbackServlet代码
  3. 关于echart没有数据显示暂无数据
  4. 架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)
  5. Centos 下搭建FTP上传下载服务器
  6. 在 Azure 虚拟机上快速搭建 MongoDB 集群
  7. 二:Vim常用命令
  8. Java Object类的equals()方法
  9. cocos-creator 脚本逻辑-1
  10. sql: TRIGGER