【推荐】0214如何编译安装Azkaban服务scp基金会343

知识问答 阅读 95 2025-02-28 19:03:14

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

Fayson的github:https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.文档编写目的

Azkaban是一套简单的任务调度服务,是Hadoop工作流引擎调度器之一,整体包括三部分Web Server、DB Server、Executor Server。是LinkedIn的开源项目,开发语言为Java。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

Azkaban的部署方式有三种:

1.solo server mode: 即独立部署模块,数据库被嵌入H2,web服务器和执行服务器运行在同一个进程中,适用于小规模用例。

2.two server mode: 即两个服务器模式,数据库由主从设置的MySQL实例提供支持,Web服务器和执行服务器运行在不同的进程中,以便升级和维护不影响用户,适用于生成环境。

3.multiple executor mode: 即多个执行器模式,Web服务器和执行器理想情况下运行在不同的主机上,这种多主机设置为Azkaban带来了强大且可扩展性。

本篇文章主要基于two server mode模式介绍如何编译及安装Azkaban服务。

内容概述

1.环境准备

2.配置及启停Azkaban服务

3.登录测试Azkaban功能

测试环境

1.Redhat7.2

2.使用root用户操作

3.Azkaban版本为3.43.0

2.环境准备

该步骤主要下载Azkaban源码,编译源码,安装及初始化Azkaban的数据库。

1.配置Java环境变量,编辑/etc/profile文件,在文件末尾增加Java环境变量

export JAVA_HOME=/usr/java/jdk1.8.0_131

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$CLASSPATH

(可左右滑动)

保存配置文件,执行source /etc/profile命令使其生效

2.下载Azkaban源码,下载地址如下

wget https://codeload.github.com/azkaban/azkaban/tar.gz/3.43.0

tar –zxvf 3.43.0

(可左右滑动)

3.43.0压缩包解压后的目录为azkaban-3.43.0目录

3.编译Azkaban,进入azkaban目录执行如下命令进行编译

[root@ip-172-31-21-83 ~]# cd azkaban-3.43.0/

[root@ip-172-31-21-83 azkaban-3.43.0]# ./gradlew build

(可左右滑动)

命令执行成功显示如下:

命令执行完成后,会在各个模块的azkaban*/build/distributions目录下生成编译好的安装包,这里生成了tar.gz和zip类型的压缩包

[root@ip-172-31-21-83 azkaban-3.43.0]# pwd

/root/azkaban-3.43.0

[root@ip-172-31-21-83 azkaban-3.43.0]# ls */build/distributions/*

(可左右滑动)

4.将编译成功的azkaban-*.tar.gz压缩包拷贝至/opt/cloudera/azkaban/software目录下

[root@ip-172-31-21-83 azkaban-3.43.0]# mkdir -p /opt/cloudera/azkaban/software

[root@ip-172-31-21-83 azkaban-3.43.0]# scp */build/distributions/*.tar.gz /opt/cloudera/azkaban/software

[root@ip-172-31-21-83 azkaban-3.43.0]# ll /opt/cloudera/azkaban/software

(可左右滑动)

5.将/opt/cloudera/azkaban/software目录下的所有压缩包解压到/opt/cloudera/azkaban目录下,并重命名

[root@ip-172-31-21-83 software]# tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C ../

[root@ip-172-31-21-83 software]# tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz -C ../

[root@ip-172-31-21-83 software]# tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C ../

[root@ip-172-31-21-83 software]# tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../

[root@ip-172-31-21-83 software]# tar -zxvf azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz -C ../

(可左右滑动)

将解压的目录重名

[root@ip-172-31-21-83 azkaban]# mv azkaban-db-0.1.0-SNAPSHOT azkaban-db

[root@ip-172-31-21-83 azkaban]# mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server

[root@ip-172-31-21-83 azkaban]# mv azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT azkaban-hadoop-security-plugin

[root@ip-172-31-21-83 azkaban]# mv azkaban-solo-server-0.1.0-SNAPSHOT azkaban-solo-server

[root@ip-172-31-21-83 azkaban]# mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server

(可左右滑动)

6.创建Azkaban数据库及初始化表结构

由于Azkaban目前只支持MySQL数据库,所以这里需要安装MySQL,具体的安装过程这里就不在描述了,需要修改MySQL的/etc/my.cnf文件,增加如下配置:

max_allowed_packet = 20M

(可左右滑动)

保存配置后,然后重启MySQL

[root@ip-172-31-21-83 ~]# systemctl restart mariadb

[root@ip-172-31-21-83 ~]#

(可左右滑动)

使用root用户登录MySQL,执行如下命令创建Azkaban库及访问数据库的用户

create database azkaban default character set utf8;

CREATE USER 'azkaban'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON azkaban.* TO 'azkaban'@'%';

FLUSH PRIVILEGES;

(可左右滑动)

初始化Azkaban表结构,在上一步我们将Azkaban-db部署在/opt/cloudera/azkaban/azkaban-db目录下,在该目录下找到create-all-sql-0.1.0-SNAPSHOT.sql文件

在命令行执行如下命令导入SQL文件

mysql -uazkaban -p --database=azkaban < /opt/cloudera/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql

(可左右滑动)

验证表结构是否导入成功:

3.配置Azkaban-web-server

在前面环境准备阶段,Fayson已经将编译好的压缩包azkaban-web-server-0.1.0-SNAPSHOT.tar.gz部署/opt/cloudera/azkaban/目录下。

1.将/opt/cloudera/azkaban/azkaban-solo-server目录下的conf、plugins目录拷贝至/opt/cloudera/azkaban/azkaban-web-server目录下

[root@ip-172-31-21-83 azkaban]# scp -r azkaban-solo-server/conf/ azkaban-solo-server/plugins/ azkaban-web-server/

[root@ip-172-31-21-83 azkaban]# cd azkaban-web-server/

[root@ip-172-31-21-83 azkaban-web-server]# ll

(可左右滑动)

2.进入azkaban-web-server/conf目录下,修改azkaban.properties文件

该配置文件主要定义Azkaban-web-server服务的基本信息、数据库信息、监听端口、Executor设置以及插件目录配置等。

# Azkaban Personalization Settings

azkaban.name=CDH_Azkaban

azkaban.label=My CDH Azkaban

azkaban.color=#FF3601

azkaban.default.servlet.path=/index

web.resource.dir=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

azkaban.project.dir=projects

database.type=mysql

mysql.port=3306

mysql.host=localhost

mysql.database=azkaban

mysql.user=azkaban

mysql.password=password

mysql.numconnections=100

# Velocity dev mode

velocity.dev.mode=false

# Azkaban Jetty server properties.

jetty.use.ssl=false

jetty.maxThreads=25

jetty.port=8081

# Azkaban Executor settings

executor.port=12321

# mail settings

mail.sender=

mail.host=

# User facing web server configurations used to construct the user facing server URLs. They are useful when there

is a reverse proxy between Azkaban web servers and users.

# enduser -> myazkabanhost:443 -> proxy -> localhost:8081

# when this parameters set then these parameters are used to generate email links.

# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.

# azkaban.webserver.external_hostname=myazkabanhost.com

# azkaban.webserver.external_ssl_port=443

# azkaban.webserver.external_port=8081

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

viewer.plugin.dir=plugins/viewer

(可左右滑动)

3.azkaban-web-server/conf目录下的azkaban-users.xml文件主要定义登录用户账号密码及权限,这里我们使用默认的配置信息

(可左右滑动)

4.在azkaban-web-server/conf目录下新增log4j.properties文件,内容如下:

[root@ip-172-31-21-83 conf]# vim 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.在azkaban-web-server目录下执行如下命令创建目录

创建第三方依赖包部署目录extlib

mkdir /opt/cloudera/azkaban/azkaban-web-server/extlib

(可左右滑动)

创建服务日志存放目录logs

mkdir /opt/cloudera/azkaban/azkaban-web-server/logs

(可左右滑动)

创建azkaban-web-server服务的第三方插件视图目录与azkaban.properties配置文件中的viewer.plugin.dir配置路径一致

mkdir /opt/cloudera/azkaban/azkaban-web-server/plugins/viewer

(可左右滑动)

4.配置Azkaban-executor-server

在前面环境准备阶段,Fayson已经将编译好的压缩包azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz部署/opt/cloudera/azkaban/目录下。

1.将/opt/cloudera/azkaban/azkaban-solo-server目录下的conf、plugins目录拷贝至/opt/cloudera/azkaban/azkaban-exec-server目录下

[root@ip-172-31-21-83 azkaban]# cd azkaban-solo-server/

[root@ip-172-31-21-83 azkaban-solo-server]# scp -r conf/ plugins/ /opt/cloudera/azkaban/azkaban-exec-server/

(可左右滑动)

2.在azkaban-exec-server/conf目录下修改azkaban.properties文件,内容如下:

该配置文件主要定义Azkaban-exec-server服务的基本信息、数据库信息、监听端口及插件目录配置等。

# Azkaban Personalization Settings

default.timezone.id=Asia/Shanghai

# Loader for projects

executor.global.properties=conf/global.properties

azkaban.project.dir=projects

database.type=mysql

mysql.port=3306

mysql.host=localhost

mysql.database=azkaban

mysql.user=azkaban

mysql.password=password

mysql.numconnections=100

# Azkaban Executor settings

executor.maxThreads=50

executor.port=12321

executor.flow.threads=30

# JMX stats

jetty.connector.stats=true

executor.connector.stats=true

# Azkaban plugin settings

azkaban.jobtype.plugin.dir=plugins/jobtypes

(可左右滑动)

3.在conf目录下新增log4j.properties配置文件内容如下

[root@ip-172-31-21-83 conf]# vim 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

(可左右滑动)

4.在azkaban-exec-server目录下执行如下命令创建目录

创建第三方依赖包部署目录extlib

mkdir /opt/cloudera/azkaban/azkaban-exec-server/extlib

(可左右滑动)

创建服务日志存放目录logs

mkdir /opt/cloudera/azkaban/azkaban-exec-server/logs

(可左右滑动)

创建azkaban-exec-server服务的第三方插件目录与azkaban.properties配置文件中的azkaban.jobtype.plugin.dir配置路径一致

5.启停Azkaban的Executor和Web服务

这里在启停服务的时候需要注意,如果直接进入到相应服务的bin目录下启动会导致服务启动时找不到相应的配置文件,所以我们需要在相应服务的HOME目录执行命令启停服务。

1.启停Azkaban-executor服务执行如下命令

cd /opt/cloudera/azkaban/azkaban-exec-server/

bin/azkaban-executor-shutdown.sh #停止azkaban-executor服务

bin/start-exec.sh #启动azkaban-executor服务并输出日志到logs目录

(可左右滑动)

查看Azkaban-executor服务的log

有如上截图显示,则表示Azkaban executor服务启动成功。

2.启停Azkaban-web服务执行如下命令

cd /opt/cloudera/azkaban/azkaban-web-server/

bin/azkaban-web-shutdown.sh #停止Azkaban-web服务

bin/start-web.sh #启动Azkaban-web服务并输出日志到./logs目录

(可左右滑动)

查看web服务的log日志

有如上日志显示则表示Azkaban Web服务启动成功。

6.Azkaban访问及测试

1.在浏览器输入http://${hostname}:8081访问web界面,输入用户名和密码,在Azkaban-web-server/conf目录的azkaban-users.xml配置文件中,默认为azkaban/azkaban

登录成功后显示主页如下

2.创建一个test-azkaban工程

3.创建两个测试脚本

在本地创建foo.job文件,内容如下:

# foo.job

type=command

command=echo foo

(可左右滑动)

在本地创建bar.job文件,内容如下:

# bar.job

type=command

dependencies=foo

command=echo bar

(可左右滑动)

bar.job作业依赖foo.job作业,将两个文件压缩为zip包

4.上传job压缩包

5.运行工作流

点击“Executor”执行

如上图所示可以看到作业执行成功。

7.常见问题汇总

1.azkaban-web-server服务启动正常,访问服务的web界面是报如下异常

java.lang.RuntimeException: JarResourceLoader : JAR path must start with jar: -> see java.net.JarURLConnection for information

at org.apache.velocity.runtime.resource.loader.JarResourceLoader.loadJar(JarResourceLoader.java:143)

at org.apache.velocity.runtime.resource.loader.JarResourceLoader.init(JarResourceLoader.java:118)

at org.apache.velocity.runtime.resource.ResourceManagerImpl.initialize(ResourceManagerImpl.java:143)

at org.apache.velocity.runtime.RuntimeInstance.initializeResourceManager(RuntimeInstance.java:730)

at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:263)

at org.apache.velocity.runtime.RuntimeInstance.requireInitialization(RuntimeInstance.java:302)

at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1531)

at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:343)

at azkaban.webapp.servlet.Page.render(Page.java:67)

(可左右滑动)

异常原因:在azkaban-web-server服务没有安装viewer plugin时可能会导致该异常

解决方法:在plugins/viewer目录下添加插件即可。

异常参考:https://github.com/azkaban/azkaban/issues/327

8.总结

Azkaban安装部署前需要自己编译,根据生产环境作业调度情况来选择不通的部署模式

Azkaban默认支持Java、Command和Linux命令

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

上海测量软件

光学影像测量机

影像测量仪系统

上海光学影像测量机服务好

相关内容

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至举报,一经查实,本站将立刻删除。
上一篇: 【推荐】01月28日有6家基金公司旗下6位基金经理离任谈洁颖基金 下一篇: 【推荐】0223强势股脱水研报明日周四超短策略微策略股票资讯

相关资讯