分布式计算(四)Azkaban安装
Azkaban是一个批量工作流任务调度器,使用Java语言开发。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
目录
一、Azkaban优点
二、Azkaban安装模式
三、Azkaban安装
1. 准备
2. 下载源码
3. 编译源码
4. 配置数据库
5. 配置web-server
6. 配置exec-server
四、Azkaban启动
一、Azkaban优点
提供功能清晰,简单易用的Web UI界面
提供job配置文件快速建立任务和任务之间的依赖关系
提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
基于Java开发,代码结构清晰,易于二次开发
二、Azkaban安装模式
Azkaban 有三种部署方式:单服务模式、2个服务模式、分布式多服务模式
solo server model(单服务模式):该模式中 webServer 和 executorServer 运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。此模式合适个人试用使用。它也可以用在小规模的使用案例中。
two server model(2个服务模式):数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行,这种模式下,管理服务器和执行服务器互不影响。适用在较重的生成环境中。
multiple-executor(分布式多服务模式):存放元数据的数据库为MySQL,采用主从设置进行备份,管理服务器(webServer)和执行服务器(executorServer)在不同进程中运行。多个 Executor 模式为最重的生产环境。
接下来安装two server model
三、Azkaban安装
1. 准备
Ubuntu版本:16.04
JDK版本:1.8
MySQL版本:5.7.25
Azkaban版本:3.70.0
2. 下载源码
下载稳定的release版本,这里选择的是3.70.0版本
# wget https://github.com/azkaban/azkaban/archive/3.70.0.tar.gz
3. 编译源码
# tar xvzf azkaban-3.70..tar.gz
# cd azkaban-3.70.
# ./gradlew build installDist -x test
编译过程会下载依赖包,时间可能会比较长。编译完成后会在对应的路径下生成可运行的文件,如下:
solo server model(单服务模式): azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.-SNAPSHOT.tar.gz
two server model(2个服务模式)和multiple-executor(分布式多服务模式): azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.-SNAPSHOT.tar.gz 和 azkaban-web-server/build/distributions/azkaban-web-server-0.1.-SNAPSHOT.tar.gz
Azkaban SQL: azkaban-db/build/distributions/azkaban-db-0.1.-SNAPSHOT.tar.gz
由于这次安装的two server model,将azkaban-db-0.1.0-SNAPSHOT.tar.gz、azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz和azkaban-web-server-0.1.0-SNAPSHOT.tar.gz解压到指定的目录azkaban
# mkdir ~/azkaban
# cd ~/azkaban
# tar xvzf azkaban-web-server-0.1.-SNAPSHOT.tar.gz
# tar xvzf azkaban-exec-server-0.1.-SNAPSHOT.tar.gz
# tar xvzf azkaban-db-0.1.-SNAPSHOT.tar.gz
# mv azkaban-web-server-0.1.-SNAPSHOT azkaban-web-server
# mv azkaban-exec-server-0.1.-SNAPSHOT azkaban-exec-server
# mv azkaban-db-0.1.-SNAPSHOT azkaban-db
# ls azkaban-db -l
total
-rw-rw-r-- root root Mar : create.active_executing_flows.sql
-rw-rw-r-- root root Mar : create.active_sla.sql
-rw-r--r-- root root Apr : create-all-sql-0.1.-SNAPSHOT.sql
-rw-rw-r-- root root Mar : create.execution_dependencies.sql
-rw-rw-r-- root root Mar : create.execution_flows.sql
-rw-rw-r-- root root Mar : create.execution_jobs.sql
-rw-rw-r-- root root Mar : create.execution_logs.sql
-rw-rw-r-- root root Mar : create.executor_events.sql
-rw-rw-r-- root root Mar : create.executors.sql
-rw-rw-r-- root root Mar : create.project_events.sql
-rw-rw-r-- root root Mar : create.project_files.sql
-rw-rw-r-- root root Mar : create.project_flow_files.sql
-rw-rw-r-- root root Mar : create.project_flows.sql
-rw-rw-r-- root root Mar : create.project_permissions.sql
-rw-rw-r-- root root Mar : create.project_properties.sql
-rw-rw-r-- root root Mar : create.projects.sql
-rw-rw-r-- root root Mar : create.project_versions.sql
-rw-rw-r-- root root Mar : create.properties.sql
-rw-rw-r-- root root Mar : create.quartz-tables-all.sql
-rw-rw-r-- root root Mar : create.triggers.sql
-rw-rw-r-- root root Mar : database.properties
-rw-rw-r-- root root Mar : upgrade.3.20..to.3.22..sql
-rw-rw-r-- root root Mar : upgrade.3.43..to.3.44..sql
-rw-rw-r-- root root Mar : upgrade.3.68..to.3.69..sql
-rw-rw-r-- root root Mar : upgrade.3.69..to.3.70..sql
4. 配置数据库
以root用户登录MySQL数据库,并执行SQL
# 建用户 建库 授权 刷新权限
mysql> CREATE DATABASE azkaban;
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
# 创建Azkaban表
mysql> source /root/azkaban/azkaban-db/create-all-sql-0.1.-SNAPSHOT.sql
5. 配置web-server
# vi azkaban-web-server/conf/azkaban.properties # 修改时区
default.timezone.id=Asia/Shanghai
# Azkaban mysql settings by default. Users should configure their own username and password.
# 数据库类型
database.type=mysql
# 数据库端口
mysql.port=
# 数据库地址
mysql.host=localhost
# 数据库名称
mysql.database=azkaban
# 数据库用户
mysql.user=azkaban
# 数据库密码
mysql.password=azkaban
mysql.numconnections=
#Multiple Executor
azkaban.use.multiple.executors=true
其他配置保持默认。
6. 配置exec-server
# vi azkaban-exec-server/conf/azkaban.properties # 修改时区
default.timezone.id=Asia/Shanghai
# Azkaban mysql settings by default. Users should configure their own username and password.
# 数据库类型
database.type=mysql
# 数据库端口
mysql.port=
# 数据库地址
mysql.host=localhost
# 数据库名称
mysql.database=azkaban
# 数据库用户
mysql.user=azkaban
# 数据库密码
mysql.password=azkaban
mysql.numconnections=
其他配置保持默认。
四、Azkaban启动
先启动executorServer:
# cd azkaban-exec-server
# ./bin/start-exec.sh
再启动webServer:
# cd azkaban-web-server
# ./bin/start-web.sh
**Note:**启动executorServer时会将executorServer的host,port同步到mysql的executors表中
启动webServer时会出现如下错误,是因为自动同步到executors表中的executor默认是未激活,需要在数据库中update:
// ::06.044 + INFO [ExecutorManager] [Azkaban] Initializing executors from database.
// ::06.045 + ERROR [ExecutorManager] [Azkaban] No active executors found
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] Exception in thread "main"
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] azkaban.executor.ExecutorManagerException: No active executors found
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ActiveExecutors.setupExecutors(ActiveExecutors.java:)
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.setupExecutors(ExecutorManager.java:)
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.initialize(ExecutorManager.java:)
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.executor.ExecutorManager.start(ExecutorManager.java:)
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.launch(AzkabanWebServer.java:)
// ::06.046 + ERROR [StdOutErrRedirect] [Azkaban] at azkaban.webapp.AzkabanWebServer.main(AzkabanWebServer.java:)
mysql> update executors set active=1 where id=2;
update之后就可以正常启动web-server了。
想要启动分布式多服务模式也很简单,多服务模式是多个executorServer分布在 不同服务器上,只需要将/root/azkaban/azkaban-exec-server拷贝到不同机器上即可组成分布式。
启动成功,访问http://node01:8081/
分布式计算(四)Azkaban安装的更多相关文章
- 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
一 概述1.1 为什么需要工作流调度系统1.2 常见工作流调度系统1.3 各种调度工具特性对比1.4 Azkaban 与 Oozie 对比二 Azkaban(阿兹卡班) 介绍三 Azkaban 安装部 ...
- AIX下RAC搭建 Oracle10G(四)安装CRS
AIX下RAC搭建系列 AIX下RAC搭建Oracle10G(四)安装CRS 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 主机名 AIX2 ...
- Azkaban安装部署
在root的用户下搭建的 • Azkaban安装部署(可参照:http://azkaban.github.io/azkaban/docs/latest/) 1):前提 安装JDK,安装Hadoop,H ...
- azkaban安装使用
本文记录azkaban的安装和 一些报错处理(文章末尾). AzKaban组成 MySQL数据库,azkaban-server (web端),azkaban-executor (执行job) 1.下载 ...
- Azkaban安装及分布式部署(multiple-executor)
参考文章:https://blog.csdn.net/weixin_35852328/article/details/79327996 官网:https://azkaban.readthedocs.i ...
- 孤荷凌寒自学python第四天 安装python的其它IDE环境
孤荷凌寒自学python第四天 安装python的其它IDE环境 (完整学习过程屏幕记录视频地址在文末) 因为是完全的新手,对python环境搭建完全一无所知,因此,可真是大费周章才配置了其它多个Id ...
- azkaban(安装配置加实战)
为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成:shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 各任务单元之间存在时间先后及前后依赖关 ...
- 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装
标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...
- 细说Mysql四种安装方法及自动化部署
一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...
随机推荐
- 【Java基础】15、负数的二进制表示方法
在计算机中,负数以其正值的补码形式表达. 什么叫补码呢?这得从原码,反码说起. 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码. 比如 00000000 00000000 00000000 ...
- Vue 系列之 渲染与事件处理
渲染相关 列表渲染 与 条件渲染 Vue 中的常见的渲染有 列表渲染 和 条件渲染 所谓条件渲染,则是通过添加一定的逻辑条件来进行 Dom 元素的操作 v-if v-else v-else-if &l ...
- LoadRunner接口测试标准模板
Action() { int nHttpRetCode; // 默认最大长度为256,get请求需注意缓存问题,需要根据content-length进行修改 web_set_max_html_para ...
- c语言学习笔记-break
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.break使用中的注意事项 1.break如果用于循环,用来终止循环. 2.break如果用于switch,则用于终止swi ...
- 洛谷P3346 [ZJOI2015]诸神眷顾的幻想乡(广义后缀自动机)
题意 题目链接 Sol 广义SAM的板子题. 首先叶子节点不超过20,那么可以直接对每个叶子节点为根的子树插入到广义SAM中. 因为所有合法的答案一定是某个叶子节点为根的树上的一条链,因此这样可以统计 ...
- excel单元格内换行的方法
方法一:调整单元格格式换行 选定单元格,选择“格式→单元格”,在弹出的对话框中单击“对齐”,选中“自动换行”,单击[确定]按钮即可. 方法二:Alt+Enter键(使用强行换行时,系统会同时选择自动换 ...
- Flutter 依赖的那些事儿
Flutter 里面有2种库一样的东西, Package -creating a pure Dart component. like a new Widget. 这种是纯Dart,相当于你自己写的组件 ...
- Expo大作战(三十二)--expo sdk api之Noifications
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- (网页)备注在HTML页面的放置的小技巧(title属性)
其实很简单,就是title这个属性:(字符多余的剪切,title显示完整的字符) 下面是代码: <ul> <li title="江南style.江南style.江南styl ...
- 慕学在线网0.4_xadmin后台管理
admin是基于Django开发的后台管理框架,方便,快捷,而且简单: 而xadmin就相当于admin的升级版,更加强大. 1.安装xadmin(源码安装方式) 教程 PS: - 卸载pip安装的x ...