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

参考文章:

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)

posted @ 2018-03-16 11:36  周景白炎  阅读(661)  评论(0编辑  收藏  举报