《大型综合项目-基于大数据平台的数据仓库》学习笔记(14):任务脚本篇兼任务调度篇

本项目教程笔记源自多易教育《Titan综合数据仓库与数据运营系统》,在CSDN学院有相关视频教程购买链接,大数据企业级项目实战–Titan大型数据运营系统
本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。


一、任务脚本篇

1、Spark任务】调度脚本开发

# 预处理任务脚本示例:
#!/bin/bash

############################################
#
#   author: hunter.d
#   date  : 2019-11-28  
#   desc  : 预处理spark任务提交到yarn计算脚本
#
############################################  

SPARK_HOME=/opt/app/spark-2.4.0

# 获取当前时间的前一天日期
DT=`date -d'-1 day' +'%Y-%m-%d'`

# 如果脚本传入了参数,则计算参数所指定的日期
if [ $1 ]
then
 DT=$1
fi


${SPARK_HOME}/bin/spark-submit  \
 --master yarn \
 --deploy-mode cluster \
 --num-executors 3 \
 --executor-memory 1g \
 --executor-cores 1 \
 --class cn.doitedu.titan.dw.pre.AppEventLogPreprocess \
 /root/dw.jar /titan/applog/${DT} /titan/areadict /titan/output/applog/${DT} yarn


if [ $? -eq 0 ]
then 
 echo "任务执行成功....."
else
 echo "出了点莫名其妙的问题......"
fi
 
#可能遇到的问题:
#  集群时间不同步,提交失败
#  yarn的resourcemanager宕机,提交失败
#  hdfs工作状态不正常,提交失败
#  没指定队列或指定的队列不存在,提交失败
#提交虽然成功,但运行错误:
#  appmaster就失败: NoClassDefineFound
#  executor失败:	NoClassDefineFound

《详见项目代码》

2、【Sql任务】调度脚本开发

# sql运算任务脚本示例:
#!/bin/bash

############################################
#
#   author: hunter.d
#   date  : 2019-11-28  
#   desc  : ADS_USR_ITV 访问间隔分布统计报表
#
############################################  

HIVE_HOME=/opt/app/hive-2.1.0

# 获取当前时间的前一天日期
DT=`date -d'-1 day' +'%Y-%m-%d'`

# 如果脚本传入了参数,则计算参数所指定的日期
if [ $1 ]
then
DT=$1
fi

echo "准备计算的日期: $DT  ...................."

SQL="
with tmp1 AS(
SELECT
1,
datediff(if(end_dt='9999-12-31','${DT}',end_dt),if(start_dt=date_sub('${DT}',30)
),
tmp2 AS(
SELECT
datediff(lead(start_dt,1,null) over(partition by gid order by start_dt),end_dt) as itv_days,
1 as cnts
FROM titan.DWS_USR_CAC WHERE dt='${DT}' and end_dt>=date_sub('${DT}',30)
)

INSERT INTO TABLE titan.ADS_USR_ITV
SELECT
'${DT}'  as dt,
1 as itv_days,
sum(cnts) as cnts
FROM tmp1

UNION ALL

SELECT
'${DT}'  as dt,
itv_days,
sum(cnts) as cnts
FROM tmp2 WHERE itv_days is not null
group by itv_days
;
"
echo "准备执行SQL  ...................."

${HIVE_HOME}/bin/hive -e "${SQL}"

if [ $? -eq 0 ]
then 
 echo "任务执行成功....."
else
 echo "出了点莫名其妙的问题......"
fi

《详见项目代码》

3、【Sqoop任务】调度脚本开发

# sqoop数据抽取脚本示例:
#!/bin/bash

############################################
#
#   author: hunter.d
#   date  : 2019-11-28  
#   desc  : 订单主要信息表sqoop抽取任务
#
############################################  

SQOOP_HOME=/opt/app/sqoop-1.4.7

# 获取当前时间的前一天日期
DT=`date -d'-1 day' +'%Y-%m-%d'`

# 如果脚本传入了参数,则计算参数所指定的日期
if [ $1 ]
then
DT=$1
fi

echo "准备抽取日期: $DT  ...................."


$SQOOP_HOME/bin/sqoop import \
--connect jdbc:mysql://h3:3306/ry \
--username root \
--password haitao.211123 \
--table doit_jw_stu_zsgl \
--target-dir '/sqoopdata/doit_jw_stu_zsgl'  \
--incremental lastmodified \
--check-column stu_updatetime \
--last-value "${DT} 23:59:59"  \
--fields-terminated-by ',' \
--merge-key id   \
-m 1 

if [ $? -eq 0 ]
then 
 echo "任务执行成功....."
else
 echo "出了点莫名其妙的问题......"
fi

《详见项目代码》

二、任务调度篇

1、【crontab】定时任务执行调度

crontab 是linux系统中自带的一个定时任务调度工具
它通过一个简单的配置文件,来按照需求定时执行用户所指定的程序(脚本)

示例:
crontab -e


30  0  *  *  *  sh /root/jobs/0-pre.sh
40  0  *  *  *  sh /root/jobs/1-load_data.sh
........

2、【Azkaban】定时任务执行调度

azkaban工具的使用,请参考《【多易教育-azkaban实战教程】》


本项目教程笔记源自多易教育《Titan综合数据仓库与数据运营系统》,在CSDN学院有相关视频教程购买链接,大数据企业级项目实战–Titan大型数据运营系统
本项目课程是一门极具综合性和完整性的大型大数据项目实战课程,课程项目的业务背景源自各类互联网公司对海量用户浏览行为数据和业务数据分析的需求及企业数据管理、数据运营需求。
学完本课程,你将很容易就拿到大数据数仓建设或用户画像建设等岗位的OFFER

本课程项目涵盖数据采集与预处理数据仓库体系建设、用户画像系统建设、数据治理(元数据管理、数据质量管理)、任务调度系统、数据服务层建设、OLAP即席分析系统建设等大量模块,力求原汁原味重现一个完备的企业级大型数据运营系统。

跟随项目课程,历经接近100+小时的时间,从需求分析开始,到数据埋点采集,到预处理程序代码编写,到数仓体系搭建…逐渐展开整个项目的宏大视图,构建起整个项目的摩天大厦。

你可能感兴趣的:(大数据综合实战项目)