大数据开发之azkaban篇----编译安装azkaban

Azkaban

一个通用的作业调度系统,下面我们将重点了解这个组件的编译和安装过程

编译

首先,在我们开始之前我们先要完成以下几个准备工作

  1. 安装jdk
  2. 下载安装git
  3. 下载安装gcc-c++
mkdir /usr/java
wget jdk-8u121-linux-x64.tar.gz
tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java
# 将解压后的jdk路径配置到/etc/profile,且source生效
yum -y install git
yum -y install gcc-c++

使用git从github上clone我们的azkaban到本地,当然你也可以使用wget来下载

git clone https://github.com/azkaban/azkaban.git

这样在当前目录上就多了一个azkaban的目录,然后切换到这个目录里面的gradle/wrapper/,在这里下载我们的gradle的依赖

cd azkaban/gradle/wrapper/
wget https://services.gradle.org/distributions/gradle-4.1-all.zip
# 在当前目录下
vi gradle-wrapper.properties

修改里面的内容

distributionUrl=gradle-4.1-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

就是讲原来distributionUrl的路径改成当前的路径指向我们刚下载的gradle依赖,然后我们就切换到azkaban的目录下开始编译了

cd ../../
./gradlew build installDist -x test
#这里我们跳过的测试,这样可以少遇到以下error吧

耐心地等待编译完毕,基本上按照上面的方式应该不会出什么错误的了(本人亲测有效的)

安装

这里我们使用two server的模式,就是单独配置元数据库,但是因为机器限制,我们还是使用单一节点。
元数据库使用MySQL

首先我们需要这样一个sql文件用于在元数据库里面生成我们需要的表:create-all-sql-3.78.0-1-g4764cb5.sql
这个文件应该是在azkaban-db这个文件里面的,当你在数据库里面建好了用于azkaban元数据存出的数据库和用户名以及密码后,就可以在这个库里面直接导入sql建表了。

接着,我们要copy相应的压缩包到我们用于安装的目录上,我们将使用到web和exec这个组件,启动后将有连个进程的。

cd /root/azkaban/azkaban-web-server/build/distributions/
cp azkaban-exec-server-3.78.0-1-g4764cb5.tar.gz /root/software/
cd /root/azkaban/azkaban-exec-server/build/distributions/
cp azkaban-web-server-3.78.0-1-g4764cb5.tar.gz /root/software/
# 解压
cd /root/software/
tar -zxvf azkaban-web-server-3.78.0-1-g4764cb5.tar.gz -C /root/app
tar -zxvf azkaban-exec-server-3.78.0-1-g4764cb5.tar.gz -C /root/app

我这里的文件结构是在/root目录下有一个software子目录用于存放安装需要的压缩包而app目录是放置解压后的组件文件的
解压后我们可以看到在web下有四个子目录:
bin,conf,lib,web
而exec下这有这样几个子目录:
bin,conf,lib,plugins 这里我们还需要多一个子目录extlib,但是现在是没有的

我们先来配置exec
我们切换到exec的conf的子目录下面
在这里插入图片描述
我们需要编辑一下azkaban.properties这个文件
其实对于这个目录我们只需要添加几行配置就可以了

# 这里把时区改成亚洲上海
default.timezone.id=Asia/Shanghai
# 这里添加一个端口配置
executor.port=12321
azkaban.execution.dir=executions

# 这里写上你MySQL的相关信息
database.type=mysql
mysql.port=3306
mysql.host=MySQL的ip地址
mysql.database=azkaban66
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100

在启动前你还需要在exec目录下手动添加一个子目录:

cd /root/app/azkaban-exec-server-3.78.0-1-g4764cb5
touch executor.port

然后我们就可以直接在bin子目录下启动了:

bin/start-exec.sh

然后我们还需要激活一下执行器

curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo

如果你没有executor.port这个目录将无法成功执行这个命令
并且每次重新启动exec都要执行这个命令,当命令执行成功后将得到{“status”:“success”}这个反馈

配置web
首先我们需要生成keystore文件,我们就直接在web的当前目录下生成:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA

[root@node1 azkaban-web-server-3.66.0-6-ge20c886]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Enter keystore password: #密码,这里我都是123456
Re-enter new password: #密码,这里我都是123456
What is your first and last name?
  [Unknown]:  
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  
What is the name of your State or Province?
  [Unknown]:  
What is the two-letter country code for this unit?
  [Unknown]:  
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
  [no]:  y

Enter key password for <jetty>
	(RETURN if same as keystore password): #密码,直接回车就和上面的一样了
Re-enter new password: #密码

接着,还是到conf子目录下,我们还是修改azkaban.properties这个配置文件

web.resource.dir=/opt/azkaban/azkaban-web-server-3.66.0-6-ge20c886/web/ #原配置是web/,当一定要改成绝对路径哦
default.timezone.id=Asia/Shanghai #改成上海时区
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/opt/azkaban/azkaban-web-server-3.66.0-6-ge20c886/conf/azkaban-users.xml #这个也是要绝对路径哦
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.port=8081
jetty.ssl.port=8443
jetty.keystore=keystore
jetty.password=123456 #这里就是刚你生成keystore文件时的密码
jetty.keypassword=123456 #同上
jetty.truststore=keystore
jetty.trustpassword=123456 #同上
# Project Manager settings 
project.temp.dir=/temp
project.version.retention=3
# Azkaban Executor settings
executor.port=12321
# mail settings
[email protected]
mail.host=smtp.qq.com
[email protected] #这里的mail.user是一定要和mail.sender一致的
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

# Azkaban mysql settings by default. Users should configure their own username and password. 也是你的数据库相关信息
database.type=mysql
mysql.port=3306
mysql.host=ip地址
mysql.database=azkaban66
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
#Multiple Executor
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1

接着到azkaban-web的目录上,创建一个新的子目录

midir –p plugins/jobtypes

上面所说的都是一定要做的,否则就会在启动的时候报错
还有就是如果你是部署了CDH的话,需要和CDH进行集成的,需要配置环境变量了

vim /etc/profile
# 添加下面这两行
export HADOOP_HOME=/opt/cloudera/parcels/CDH
export HADOOP_CONF_DIR=/etc/hadoop/conf.cloudera.yarn
# 退出后
source /etc/profile

然后就是启动web进程了

bin/start-web.sh

启动后我们就可以在webui上操作了,就是端口上我们需要小心一点,因为我们在配置web的azkaban.properties时配置jetty.use.ssl是为false的,所以计算我们配置了
jetty.port=8081
jetty.ssl.port=8443
这个时候webui的端口还是8081,如果设置为true那么端口就是8443的,我现在的端口就是8081的

好了,在浏览器上输入:localhost:8081就跳转我的azkaban的界面了,用户和密码可以在conf目录下的azkaban-users.xml查看,默认是用户:azkaban,密码:azkaban

转载一位大神的博客,我就是看完他的然后自己动手实现了一遍写的博客:https://my.oschina.net/u/3754001/blog/2995216

发布了118 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_39702831/article/details/100703530