Azkaban 环境搭建及executor became inactive问题
背景
技术调研三个任务调度框架 ElasticJob、XXL-Job,这周轮到 Azkaban 了。按照官方操作文档编译部署,最后启动一个任务还是很波折,不是 Preparing 就是 Killing ,还有一种 Failed 状态,就是没有 Success 。
根源竟然是没有对 Executor 执行 active 请求,官方文档上是有一句激活执行器的请求,看文档的时候还纳闷,如果不执行会怎么样呢?也不知道执行器端口,就没执行,结果真的掉坑了。
编译
第一步,下载源码,最新版本 4.0.0 ,上传到 Linux 服务器上。
第二步,执行编译命令 ./gradlew installDist
等待编译完成,真的很慢,要超级有耐心呐!
部署中心和执行器启动
第一步,部署 azkaban-web-server
和 azkaban-exec-server
,将编译后的 build/install
下的这两个模块的内容上传到某个 Linux 服务器上。
第二步,数据库环境准备,在 MySQL 数据库中创建数据库 azkaban
,并将 azkaban-db
目录下的 SQL 文件导入到该数据库中。
第三步,修改 azkaban-exec-server
的配置文件 azkaban.properties
,数据库连接、时区【很重要】、控制中心地址【这个貌似没有用】。
default.timezone.id=Asia/Shanghai
azkaban.webserver.url
database.type=mysql
mysql.port=3306
mysql.host=XX
mysql.database=azkaban
mysql.user=root
mysql.password=XX
启动执行器并激活
./bin/start-exec.sh
执行器启动后,数据库的 executors 表会多一条记录,active 状态为 0,记录中有 host 和 port 信息,根据这两项信息发起 REST 激活请求:
curl http://localhost:port/executor?action=activate
第四步,修改 azkaban-web-server
的配置文件 azkaban.properties
,数据库连接、时区【很重要】启动
azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
default.timezone.id=Asia/Shanghai
jetty.port=8092
database.type=mysql
mysql.port=3306
mysql.host=XX
mysql.database=azkaban
mysql.user=root
mysql.password=XX
jetty 默认端口可能被其他应用占据,换一个端口,filters 中去掉中间那个 MinXXX 那个策略,否则任务一直处于 Preparing 状态。
进入根目录,启动 web-server :
./bin/start-web.sh
查看 logs 目录下的日志,有 Server started
说明启动成功:
测试任务执行
创建了一个很简单的 job 之后,一直报错,有大量异常
调度中心异常日志显示:
Caused by: java.io.IOException: executor became inactive before setting up the flow 27
azkaban.executor.ExecutorManagerException: azkaban.executor.ExecutorManagerException: executor became inactive before setting up the flow 27
手动激活执行器后:
curl http://localhost:46352/executor?action=activate
异常消失:
包含子流的任务
一个 Project 只能上传一个 .zip 文件,但是文件中可以通过 type=flow
定义多个流:
创建子工作流的流程参考资料。
思考问题:包含子流的那个工作流在调度执行子流时,是否需要按照调度周期执行呢?
测试结论:流 d 到达调度时间后,会执行依赖的 flow c ,即使还没有到达 c 的调度时间。此外, c 也按自己的调度周期,每隔五分钟执行一次:
Azkaban 的并行调度策略
同一个 flow 如果正在执行,而下一轮调度周期又到达了,那么任务的调度会如何处理呢?执行策略有三种,即并行配置:
Azkaban 的疑惑
多执行器部署场景下,是否支持任务分片执行呢?
Right click on the jobs to disable and enable jobs in the flow. 右键 Disable all 了之后会怎么样呢?对应任务就不会执行了吗?
Azkaban 执行任务流很流畅,貌似不能对任务进行分片。
每次环境部署都不会很顺畅,虽然按照官方文档操作,总是会遇到一些小问题,也是真够神奇的!
主要是三个小问题:
- web-server 端口问题,默认端口被其他应用占据了。
- 执行器和调度中心的启动顺序,如果一个激活状态的执行器都没有,web-server 就无法启动成功。直接改 executors 表的 active 字段虽然能让 web-server 正确启动,但是后面调度任务的时候会提示没有激活的执行器。
- 执行器启动后需要通过 REST 请求激活
Azkaban 的任务调度器竟然不会自动激活,这一点真的太不友好了。
ElasticJob 和 XXL-Job 都有自动注册上下线的功能,而 Azkaban 启动执行器的时候,只会添加一条 executors 记录,但是状态为 0 ,不知道为何这样设计?这个小问题导致一个简单的 Job 一直得不到正确调度。
Azkaban 环境搭建及executor became inactive问题相关推荐
- Apache AzKaban 环境搭建与入门使用
1.azkaban的环境搭建 要求:由于这里azkaban要调度hive作业,可能存在调度sqoop等作业,因此需要安装在有这些节点的机器上 1)上传jar包并解压缩(三个) mkdir /home/ ...
- 大数据单机学习环境搭建(12)Azkaban的简单使用
专题:大数据单机学习环境搭建和使用 1.登录和密码修改 2.新建工程 2.1新建工程 2.2创建zip文件 2.3添加文件到项目 3.任务执行 3.1立即执行 3.2.设置定时任务 4.依赖任务建立 ...
- 2021年大数据Spark(六):环境搭建集群模式 Standalone
目录 环境搭建-Standalone 前言 Standalone 架构 集群规划 修改配置并分发 修改slaves 分发到其他机器 修改spark-env.sh 集群启动和 ...
- Spark详解(二):Spark完全分布式环境搭建
1. 前言 本文搭建了一个由三节点(master.slave1.slave2)构成的Spark完全分布式集群,并通过Spark分布式计算的一个示例测试集群的正确性.本文将搭建一个支持Yarn的完全分布 ...
- 高并发-【抢红包案例】之一:SSM环境搭建及复现红包超发问题
文章目录 概述 抢红包案例 案例关注点 工程结构 库表设计 Domain Dao层实现 Service层实现 使用全注解搭建SSM 开发环境 Controller层 View层 运行测试 超量发送的B ...
- gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)
背景 服务和服务器开始多起来了,一个个搞效率太低,所以准备用持续集成来提高效率 原理 gitlab-ci与ci-runner的关系 push到gitlab之后,触发GitLab-CI,GitLab-C ...
- Apache Spark1.1.0部署与开发环境搭建 - Mark Lin
Spark是Apache公司推出的一种基于Hadoop Distributed File System(HDFS)的并行计算架构.与MapReduce不同,Spark并不局限于编写map和reduce ...
- Flume环境搭建_五种案例(转)
Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...
- Hadoop学习之整体介绍及环境搭建
Hadoop学习之整体介绍及环境搭建 1 大数据概述 1.1 什么是大数据 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加 工的的原始素材. 大数据:传统处理方 ...
最新文章
- NewPhy.-揭秘优势种dominant species
- jQuery序列化表单 serialize() serializeArray()
- python dict 属性_python的dir()和__dict__属性的区别
- 高清视频下如何节省带宽?
- 平均分组 java_java – 按属性分组对象列表,并计算每个对象的对象属性的平均值...
- SCNCHECKPOINT
- 感觉要火!妹子实地采访网易猪厂程序员七夕怎么过
- php 存储html 内容,HTML 本地存储
- 【数据库】mysql常用的数据类型
- PyTorch的Tensor(张量)
- 别傻了,人家离职你也离
- (转)C 语言高效编程的几招
- 文件名的查找——find
- sicp 3.9题解答
- QProcess解决无交互输入密码问题
- C#项目xxx针对的是.NETFramework,Version=vxxx之解决方案
- 测试软件测显卡有啸叫,完美解决 显卡电流声!显卡啸叫!吱吱的电流声!附解决方案!...
- 大二C#实现酒店管理系统(C端展示、前台操作、登记入住、入住管理、职位管理、公告系统等)
- 完全卸载chrome
- 新域名 @live.com 和 @windowslive.com 即将上线 (from cnbeta)