热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【数仓项目记录4】全流程调度及可视化

全流程调度器部署1.不同层数据装载脚本之间存在依赖关系2.业务数据每天都产生,因此脚本每天都要执行--定时问题可以考虑使用ooize、Azkaban,Ooize是重量级的任务调度系

全流程调度器部署

1.不同层数据装载脚本之间存在依赖关系

2.业务数据每天都产生,因此脚本每天都要执行--定时问题

可以考虑使用ooize、Azkaban,Ooize是重量级的任务调度系统,配置更复杂,配合界面UI使用


说到定时——想到linux中的crontab命令

crontab命令详解

命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。


Azkaban学习

Azkaban是一个轻量级工作流程调度器(Crontab定时的是单一的工作/任务)

工作流程:由多个相互依赖的工作单元组成

Azkaban Web Server MySQL Azkaban Executor Server

Azkaban Executor Server处理工作流和作业的实际执行

部署模型:单机模式/集群模式(Web Server和Executor Server独立部署,可部署多个Executor Server,能够起到一定的负载均衡和容灾的作用)

本项目中在hadoop102部署Web Server,在hadoop102,hadoop103,hadoop104上部署Executor Server

在hadoop102上创建azkaban用户,赋予其增删改查的权限。再创建一个azkaban的库,进行数据库初始化

下图表示hadoop102上的executor已经启动,但未激活

image

执行下面的语句后,更新表可以看到已激活

curl -G "hadoop104:12321/executor?action=activate" && echo

image


Azkaban失败重试

自动失败重试:在config中设置config: retries: 3 retry.backoff: 10000

手动失败重试:

image

手动将其设置为disable


Azkaban条件工作流

1)运行时参数案例

父Job将参数写入JOB_OUTPUT_PROP_FILE环境变量所指向的文件

子Job使用 ${jobName:param}来获取父Job输出的参数并定义执行条件

2)预定义宏案例

Azkaban中预置了几个特殊的判断条件,称为预定义宏

预定义宏会根据所有父 Job 的完成情况进行判断,再决定是否执行。可用的预定义宏如 下:

(1)all_success: 表示父 Job 全部成功才执行(默认)

(2)all_done:表示父 Job 全部完成才执行

(3)all_failed:表示父 Job 全部失败才执行

(4)one_success:表示父 Job 至少一个成功才执行

(5)one_failed:表示父 Job 至少一个失败才执行


定时任务

需求:JobA 每间隔 1 分钟执行一次;

具体步骤:

1)Azkaban 可以定时执行工作流。在执行工作流时候,选择左下角 Schedule

image

2)右上角注意时区是上海,然后在左面填写具体执行事件,填写的方法和 crontab 配置定时 任务规则一致。

image

image


邮件报警 (重要)

Azkaban默认自带支持邮件报警

1.打开邮箱的SMTP协议

2.在hadoop102中配置文件

image

3.重新登录账号,在azkaban界面-文件执行的部分设置notification

成功/失败都可以发邮件到设置的邮箱

image


电话报警

第三方告警平台集成,如 睿象云 免费试用

1.将睿象云与azkaban进行集成(选择通用集成中的Cloud Alert Email集成方式)当睿象云的邮箱接收到我们azkaban发过去的邮件,就会出发电话报警

2.利用睿象云发送电话报警

image

注意:

在测试过程中发现,如果azkaban的发件人是qq邮箱,发送到睿象云的邮件会被退回,所以只好改成其余的如126邮箱


多Excutor模式的注意事项

Azkaban 多 Executor 模式是指,在集群中多个节点部署 Executor。在这种模式下, Azkaban web Server 会根据策略,选取其中一个 Executor 去执行任务。

为确保所选的 Executor 能够准确的执行任务,我们须在以下两种方案任选其一,推荐使 用方案二。

方案一:指定特定的 Executor(hadoop102)去执行任务。

1)在 MySQL 中 azkaban 数据库 executors 表中,查询 hadoop102 上的 Executor 的 id。

image

2)在执行工作流程时加入 useExecutor 属性,如下

image

方案二:在 Executor 所在所有节点部署任务所需脚本和应用。(推荐)


在数仓项目中使用azkaban进行全流程调度

流程:

数据采集

1)用户行为日志flume-kafka-hdfs。不需要进行每日工作调度,即不需要包含在工作流程中。因为flume实时采集通道需要在启动后一直运行,不需要每天重复启动

2)业务数据。sqoop进行批量导数据,每次执行sqoop相当于执行mapreduce,因此sqoop流程需要包含在调度流程中


ads层的数据在作用于报表系统之前,会先用sqoop从hive中的数据(hdfs中)导出到mysql中

导出时只支持将hdfs文件导出到mysql

注意:

1.mysql中建表字段与ads中的字段个数、顺序、类型一致

2.由于每天都是以文件的形式全表导入,因此需要注意mysql数据的重复问题:通过建立主键和唯一键解决


全流程调度 新日期的数据准备

用户行为日志写到hdfs上,业务数据写到mysql

用户日志的生成过程:

1.启动zookeeper、kafka、flume

image

2.修改hadoop102,hadoop103上的application.yml日期

image

3.然后使用lg.sh产生日志,可以去hadoop102:9870的origin_data中查看

4.考虑到我们机器的资源不足,关闭flume、kafka

image

image

业务数据的生成:

进入/opt/module/db_log/

修改application.properties

image


azkaban中任务的流程图

image

编写azkaban.projext 和 gmall.flow

Azkaban上传文件报错:Installation Failed. java.lang.String cannot be cast to java.util.Map
可以确定是.project 文件的问题,读成了version0,所以修改.project 文件:
azkaban-flow-version: 2.0
注意2.0与:之间要两个空格

image



推荐阅读
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 【转】腾讯分析系统架构解析
    TA(TencentAnalytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • tomcat的log文件夹下有以下几种日志:1、catalina.YYYY-MM-DD.logcatalina引擎输出的日志;catalina是tomc ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • 马蜂窝数据总监分享:从数仓到数据中台,大数据演进技术选型最优解
    大家好,今天分享的议题主要包括几大内容:带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程;我个人认为数 ... [详细]
  • XTOOLS【运维平台】之本地&远程服务器磁盘容量校验(三)
    互联网爆炸时代,数据就是金钱,但过期数据如何有效定期压缩,为有效数据留下宝贵空间是很多业务遇到的问题。多数公司采用的方式如下:\x0a\x0ashell脚本以crontab的方式定 ... [详细]
  • 六、流程控制语句
    选择结构if只有条件判断结果为真时才执行相应的操作循环结构for、whileuntil反复执行相同操作时,使用循环结构分支结构case根据变量值的匹配结果执行相 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
author-avatar
qCANL
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有