(40)Azkaban调度

2024-01-22 23:08
文章标签 调度 40 azkaban

本文主要是介绍(40)Azkaban调度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.Azkaban安装,上网搜,有很多可以操作的博客

2 创建 MySQL 数据库和表
1 )创建 gmall_report 数据库
:SQL 语句
CREATE DATABASE `gmall_report`
CHARACTER SET 'utf8' COLLATE
'utf8_general_ci';
2 )创建表
1 )创建用户主题表
DROP TABLE IF EXISTS `ads_user_topic`;
CREATE TABLE `ads_user_topic` (
`dt` date NOT NULL,
`day_users` bigint(255) NULL DEFAULT NULL,
`day_new_users` bigint(255) NULL DEFAULT NULL,
`day_new_payment_users` bigint(255) NULL DEFAULT NULL,
`payment_users` bigint(255) NULL DEFAULT NULL,
`users` bigint(255) NULL DEFAULT NULL,
`day_users2users` double(255, 2) NULL DEFAULT NULL,
`payment_users2users` double(255, 2) NULL DEFAULT NULL,
`day_new_users2users` double(255, 2) NULL DEFAULT NULL,
PRIMARY KEY (`dt`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT
= Compact;
2 )创建地区主题表
DROP TABLE IF EXISTS `ads_area_topic`;
CREATE TABLE `ads_area_topic` (
`dt` date NOT NULL,
`id` int(11) NULL DEFAULT NULL,
`province_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci
NULL DEFAULT NULL,
`area_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
DEFAULT NULL,
`iso_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT
NULL,
`region_id` int(11) NULL DEFAULT NULL,
`region_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci
NULL DEFAULT NULL,
`login_day_count` bigint(255) NULL DEFAULT NULL,
`order_day_count` bigint(255) NULL DEFAULT NULL,
`order_day_amount` double(255, 2) NULL DEFAULT NULL,
`payment_day_count` bigint(255) NULL DEFAULT NULL,
`payment_day_amount` double(255, 2) NULL DEFAULT NULL,
PRIMARY KEY (`dt`, `iso_code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT
= Compact;
3 )其余 ads 层表(略)
3 Sqoop 导出脚本
1 )编写 Sqoop 导出脚本
/home/atguigu/bin 目录下创建脚本 hdfs_to_mysql.sh
[atguigu@hadoop102 bin]$ vim hdfs_to_mysql.sh
在脚本中填写如下内容
#!/bin/bash
hive_db_name=gmall
mysql_db_name=gmall_report
export_data() {
/opt/module/sqoop/bin/sqoop export \
-Dmapreduce.job.queuename=hive \
--connect
"jdbc:mysql://hadoop102:3306/${mysql_db_name}?useUnicode=true&characterEn
coding=utf-8" \
--username root \
--password 000000 \
--table $1 \
--num-mappers 1 \
--export-dir /warehouse/$hive_db_name/ads/$1 \
--input-fields-terminated-by "\t" \
--update-mode allowinsert \
--update-key $2 \
--input-null-string '\\N' \
--input-null-non-string '\\N'
}
case $1 in
"ads_uv_count")
export_data "ads_uv_count" "dt"
;;
"ads_user_action_convert_day")
export_data "ads_user_action_convert_day" "dt"
;;
"ads_user_topic")
export_data "ads_user_topic" "dt"
;;
"ads_area_topic")
export_data "ads_area_topic" "dt,iso_code"
;;
"all")
export_data "ads_user_topic" "dt"
export_data "ads_area_topic" "dt,iso_code"
# 其余表省略未写
;;
esac
关于导出 update 还是 insert 的问题
--update-mode
updateonly 只更新,无法插入新数据
allowinsert 允许新增
--update-key :允许更新的情况下,指定哪些字段匹配视为同一条数据,进行更新而
不增加。多个字段用逗号分隔。
--input-null-string --input-null-non-string
分别表示,将字符串列和非字符串列的空串和 “null” 转义。
官网地址: http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html
Sqoop will by default import NULL values as string null. Hive is however
using string \N to denote NULL values and therefore predicates dealing
with NULL(like IS NULL) will not work correctly. You should append
parameters --null-string and --null-non-string in case of import job or -
-input-null-string and --input-null-non-string in case of an export job if
you wish to properly preserve NULL values. Because sqoop is using those
parameters in generated code, you need to properly escape value \N to \\N :
Hive 中的 Null 在底层是以“ \N ”来存储,而 MySQL 中的 Null 在底层就是 Null ,为了
保证数据两端的一致性。在导出数据时采用 --input-null-string --input-null-non-string 两个参
数。导入数据时采用 --null-string --null-non-string
3 )执行 Sqoop 导出脚本
[atguigu@hadoop102 bin]$ chmod 777 sqoop_export.sh
[atguigu@hadoop102 bin]$ sqoop_export.sh all
4 会员主题指标获取的全调度流程
8.4.1 数据准备
1 )用户行为数据准备
1 )修改 /opt/module/applog 下的 application.properties
# 业务日期
mock.date=2020-06-26
注意:分发至其他需要生成数据的节点
[atguigu@hadoop102 applog]$ xsync application.properties
2 )生成数据
[atguigu@hadoop102 bin]$ lg.sh
注意:生成数据之后,记得查看 HDFS 数据是否存在!
3 )观察 HDFS /origin_data/gmall/log/topic_log/2020-06-26 路径是否有数据

 

2 )业务数据准备
1 )修改 /opt/module/db_log 下的 application.properties
[atguigu@hadoop102 db_log]$ vim application.properties
# 业务日期
mock.date=2020-06-26
2 )生成数据
[atguigu@hadoop102 db_log]$ java -jar gmall2020-mock-db-2020-04-01.jar
3 )观察 SQLyog order_infor 表中 operate_time 中有 2020-06-26 日期的数据

 

3.  编译写 Azkaban 工作流程配置文件
1 )编写 azkaban.project 文件,内容如下
azkaban-flow-version: 2.0
2 )编写 gmall.flow 文件,内容如下

 

 

3)将 azkaban.project、gmall.flow 文件压缩到一个 zip 文件,文件名称必须是英文。
4)在 WebServer 新建项目: http://hadoop102:8081/index

 

 

 

 

 

3 Azkaban Executor 模式下注意事项
Azkaban Executor 模式是指,在集群中多个节点部署 Executor 。在这种模式下,
Azkaban web Server 会根据策略,选取其中一个 Executor 去执行任务。
由于我们需要交给 Azkaban 调度的脚本,以及脚本需要的 Hive Sqoop 等应用只在
hadoop102 部署了,为保证任务顺利执行,我们须在以下两种方案 任选其一,推荐使用方案
二。
方案一:指定特定的 Executor hadoop102 )去执行任务。
1 )在 MySQL azkaban 数据库 executors 表中,查询 hadoop102 上的 Executor id
mysql> use azkaban;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from executors;
+----+-----------+-------+--------+
| id | host | port | active |
+----+-----------+-------+--------+
| 1 | hadoop103 | 35985 | 1 |
| 2 | hadoop104 | 36363 | 1 |
| 3 | hadoop102 | 12321 | 1 |
+----+-----------+-------+--------+
2 )在执行工作流程时加入 useExecutor 属性,如下

 

方案二:在 Executor 所在所有节点部署任务所需脚本和应用。
1 )分发脚本、 hive sqoop spark my_env.sh
[atguigu@hadoop102 ~]$ xsync /home/atguigu/bin/
[atguigu@hadoop102 ~]$ xsync /opt/module/hive
[atguigu@hadoop102 ~]$ xsync /opt/module/sqoop
[atguigu@hadoop102 ~]$ xsync /opt/module/spark
[atguigu@hadoop102
~]$
sudo /home/atguigu/bin/xsync
/etc/profile.d/my_env.sh

这篇关于(40)Azkaban调度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634533

相关文章

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

【Linux】探索进程优先级的奥秘,解锁进程的调度与切换

目录 进程优先级: 是什么? 为什么存在进程优先级的概念呢? Linux为什么调整优先级是要受限制的? PRI vs NICE Linux的调度与切换 概念准备: 那我们到底怎样完成进程的调度和切换呢? 区分:寄存器VS寄存器的内容 Linux实现进程调度的算法,需要考虑优先级,考虑进程饥饿问题,考虑效率问题。 解决优先级问题: 解决进程饥饿问题: 解决效率的问题:

科研小白成长记40——第三个五年计划

小gap期间,拼命玩和拼命休息的同时,仔细思考了下我期望的五年之后的样子,gap结束,算是目标愈发清晰起来。曾经,读博的目标是成为一名independent researcher,并且具备发至少一篇顶会的能力。而现在,希望五年后的自己,成为一名good independent researcher。当然,这里的good,根据现阶段的科研榜样,已经有了具体的metrics。 首先是随时在线的深度理解

k8s调度(pod亲和、反亲和、污点、容忍度)

pod亲和性 针对对象为Pod,目的是实现,新建Pod和目标Pod调度到一起,在同一个Node上。 示例: apiVersion: v1kind: Podmetadata:name: testpod01labels:app: myapp01env: test1spec:containers:- name: testpod01image: nginx:1.23.2---apiVersio

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

javaweb-day02-2(00:40:06 XML 解析 - Dom4j解析开发包)

导入dom4j开发包:dom4j-1.6.1.jar   在工程下建一个文件夹lib,将dom4j-1.6.1.jar拷到里边。右键add to build path。  dom4j-1.6.1\lib文件夹下还有一些jar包,是开发过程中dom4j所需要依赖的jar包,如开发过程中报错,则需导入。   用dom4j怎么做呢? 只要是开源jar包提供给你的时候,它会在开源包里面提供

RMS调度详解

1.RMS调度简介 任务按单调速率优先级分配(RMPA)的调度算法,称为单调速率调度(RMS)。RMPA是指任务的优先级按任务周期T来分配。它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级,周期长的任务优先级低。 2.RMS调度实现介绍 SylixOS目前关于RMS调度分为创建、删除、调度三个部分组成。创建和删除就不予介绍。重点关注下调度算法的实现。调度