任务调度系统。
azkaban是任务调度系统,可以调度、启动、监视各类数据运算任务,(spark任务,hive任务,MR任务,等其他一切可以由脚本执行的任务)。
准备好运算任务所需要的资源(jar包,shell文件),然后编写job配置文件,最后把所有的打成zip压缩包,上传到azkaban的控制台,并配置调度任务。
azkaban遇到任务失败的策略?
finish current running、cancel all、finish all possible
- 只运行完正在运行的job,并不会启动新的job
- 立刻杀掉所有正在运行的任务,并立刻失败整个flow;
- 保持那些依赖的job依旧是OK的job继续运行,直到遇到因job失败而运行不下去的那个job
ubantu
如果默认是图形界面时:
Root模式下:vi /etc/default/grub
非Root模式下:sudo vi /etc/default/grub
可以看到这里default=”quiet splash”,就是图像界面方式启动ubuntu
注释掉这行,使用”text”这行,如果没有这行则添加一行,具体快捷键操作请参考文章下方,保存并退出(按Esc+:wq!+回车)
Root模式下:update-grub
非Root模式下:sudo update-grub
Root模式下:reboot
非Root模式下:sudo reboot
重启后就进入到了命令行方式启动ubuntu
反之从命令行方式转换到图形界面方式,步骤一致,将text注释掉,启用default=”quiet splash”行。
## 微服务设计原则
架构稳定
高内聚 实现一组功能;
松耦合
开闭原则; 一个更改影响一个服务;
核心类、通用类、支持类
身份验证微服务 修改找回;
机构、外部机构
角色、用户、外部角色
## 泳道图
泳道图也叫作跨职能流程图;主要的作用是明确流程
分为三个未付组织机构维度、阶段维度和流程维度。
## 为什么需要工作流调度系统
1. 一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等
2. 各任务单元之间存在时间先后及前后依赖关系
3. 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;
4. 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
1. 通过Hadoop先将原始数据同步到**HDFS**上;
2. 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张**Hive**表中;
3. 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
4. 将明细数据进行复杂的统计分析,得到结果报表信息;
5. 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
## 1.2 工作流调度实现方式
简单的任务调度:直接使用linux的crontab来定义;
复杂的任务调度:开发调度平台
或使用现成的**开源调度系统**,比如ooize、azkaban等
前一个工作单元的结果作为后一个工作单元的输入;
## solo server mode(单机模式)
该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。
## cluster server mode(集群模式)
该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。
SLA:Service-Level Agreement的缩写,意思是服务等级协议。是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语。
```powershell
获取任务信息; 代码;
执行工作流
存储工作流运行日志;
如果一个工作流在不沟通的执行器上运行,他将从DB中获取状态;
服务等级协议。
分布式模式:集群内应当安装三个exec-server和一个web-server,相关组件分配如下:
bigdata243 azkaban-exec
bigdata244 azkaban-exec
bigdata245 azkaban-web-server azkaban-exec-server mysql
bin 启动脚本存放目录