
大数据开发项目实战-广电大数据用户画像——任务调度实现.pptx
79页单击此处编辑母版标题样式,单击此处编辑母版文本样,广电大数据用户画像,任务调度实现,1,调度实现,目录,调度策略,2,广电大数据用户画像项目主要包含数据采集、数据传输、大数据平台计算、用户画像可视化这,4,个模块数据采集主要是模拟生产数据到,Elasticsearch,中数据传输指将,Elasticsearch,数据传输到,Hive,中大数据平台计算包括数据预处理、,SVM,预测用户是否挽留、用户画像和,Kafka,结合,Spark Streaming,实时统计订单信息用户画像可视化指将用户画像的结果在界面中以图表的形式进行展示广电大数据用户画像系统需要定时运行模拟生产数据、数据传输、数据预处理、,SVM,预测用户是否挽留、用户画像、实时统计订单信息这,6,个任务,调度策略,模拟生产数据包括模拟生产账单数据、模拟生产订单数据和模拟生产用户收视行为数据因为账单数据是每月,1,日生成的,并且白天会有较多人不定时地使用集群,所以,为了确保集群有足够的资源运行任务,将模拟生产账单数据任务的启动时间设置在每月,1,日的,20:10:00,而订单数据和用户收视行为数据是每天都有记录产生的,因此,需要每天模拟生产新的数据。
模拟生产账单数据的任务大概需要,40min,,为确保集群有足够的资源可用,模拟生产订单数据任务可以在模拟生产账单数据任务完成之后启动,因此,将模拟生产订单数据任务的启动时间设置在每天,21:10:00,而模拟生产订单数据的任务一般在,1h,之内可以完成,因此,将模拟生产用户收视行为数据任务的启动时间设置在每天,22:10:00,调度策略,1,模拟生产数据,数据传输是指分别从,Elasticsearch,中读取,mediamatch_usermsg,、,mediamatch_userevent,、,order_index,、,mmconsume_billevents,和,media_index,数据到,Hive,中,这些都是后续进行用户画像需要使用的数据因为用户画像标签只需要一个月更新一次,所以数据传输的任务也可一个月更新一次考虑到数据量比较大,数据传输任务运行比较缓慢,并且为了保证运行数据传输任务时模拟数据生产任务已经完成,数据传输任务在模拟生产用户收视行为数据任务完成(,1h,内完成)之后启动因为数据传输任务完成时间可能需要,1,2h,,所以每个数据传输任务的启动时间最好间隔,2h,。
调度策略,2,数据传输,将从,Elasticsearch,读取,mediamatch_usermsg,数据传输到,Hive,中的任务的启动时间设置为每月,1,日,23:10:00,;,将读取,mediamatch_userevent,数据传输到,Hive,中的任务的启动时间设置为每月,2,日,1:10:00,;,将读取,order_index,数据传输到,Hive,中的任务的启动时间设置为每月,2,日,3:10:00,;,将读取,mmconsume_billevents,数据传输到,Hive,中的任务的启动时间设置为每月,2,日,5:10:00,;,因为白天有较多人不定时使用集群,所以为了错开集群使用高峰期,将读取,media_index,数据传输到,Hive,中的任务的启动时间设置为每月,2,日,20:10:00,调度策略,数据预处理任务必须在数据传输任务完成之后执行执行数据传输最后一个任务,即读取,media_index,数据传输到,Hive,中的任务,大概需要,5h,因此,数据预处理任务的启动时间可设置为每月,3,日,2:10:00,调度策略,3,数据预处理,SVM,预测用户是否挽留使用的输入数据是经过预处理的数据。
因此,SVM,预测用户是否挽留任务需要在数据预处理任务完成之后启动数据预处理任务大概需要,0.5h,,故将,SVM,预测用户是否挽留任务的启动时间设置为每月,3,日,2:40:00,调度策略,4,SVM,预测用户是否挽留,用户画像使用的输入数据是经过预处理的数据,因此用户画像任务的启动设置在数据预处理任务完成之后此外,由于,SVM,预测用户是否挽留任务需要使用集群的较多资源,为避免集群资源不足,用户画像标签计算任务与,SVM,预测用户是否挽留任务的启动时间应该错开,,SVM,预测用户是否挽留任务大概需要,16min,因此,将用户画像任务的启动时间设置为每月,3,日,3:10:00,调度策略,5,用户画像,模拟生产订单数据的定时任务总会有结束的时候,因此,实时统计订单信息任务可以定时运行依据用于模拟订单实时流的数据量和模拟速率,每月运行一次实时统计订单信息的任务比较合适考虑到集群的错峰使用,将实时统计订单信息任务的启动时间设置为每月,4,日,1:10:00,调度策略,6,实时统计订单信息,整个广电大数据用户画像系统的任务定时策略如下表调度策略,任务名称,定时策略,模拟生产账单数据,每月,1,日,20:10:00,模拟生产订单数据,每晚,21:10:00,模拟生产用户收视行为数据,每晚,22:10:00,mediamatch_usermsg,数据传输到,Hive,中,每月,1,日,23:10:00,mediamatch_userevent,数据传输到,Hive,中,每月,2,日,1:10:00,order_index,数据传输到,Hive,中,每月,2,日,3:10:00,mmconsume_billevents,数据传输到,Hive,中,每月,2,日,5:10:00,media_index,数据传输到,Hive,中,每月,2,日,20:10:00,数据预处理,每月,3,日,2:10:00,SVM,预测用户是否挽留,每月,3,日,2:40:00,用户画像,每月,3,日,3:10:00,实时统计订单信息,每月,4,日,1:10:00,所有任务的输入输出参数设置,如下表。
调度策略,任务名称,输入,输出,模拟生产账单数据,Hive,的,user_profile,库中的,mmconsume_billevents,Elasticsearch,集群中的,mmconsume_billevents/doc,模拟生产订单数据,Hive,的,user_profile,库中的,order_index_v3,Elasticsearch,集群中的,order_index_v3/doc,模拟生产用户收视行为数据,Hive,的,user_profile,库中的,media_index,Elasticsearch,集群中的,media_indexyyyyww/doc,mediamatch_usermsg,数据传输到,Hive,中,Elasticsearch,集群中的,mediamatch_usermsg/doc,Hive,的,user_profile,库中的,mediamatch_usermsg,mediamatch_userevent,数据传输到,Hive,中,Elasticsearch,集群中的,mediamatch_userevent/doc,Hive,的,user_profile,库中的,mediamatch_userevent,order_index,数据传输到,Hive,中,Elasticsearch,集群中的,order_index_v3/doc,Hive,的,user_profile,库中的,order_index_v3,mmconsume_billevents,数据传输到,Hive,中,Elasticsearch,集群中的,mmconsume_billevents/doc,Hive,的,user_profile,库中的,mmconsume_billevents,media_index,数据传输到,Hive,中,Elasticsearch,集群中的,media_indexyyyyww/doc,Hive,的,user_profile,库中的,media_index,(续表),调度策略,任务名称,输入,输出,数据预处理,Hive,的,user_profile,库中的,mediamatch_usermsg,、,mediamatch_userevent,、,order_index_v3,、,mmconsume_billevents,、,media_index,Hive,的,user_profile,库中的,mediamatch_usermsg_process,、,mediamatch_userevent_process,、,order_index_process,、,mmconsume_billevent_process,、,media_index_process,SVM,预测用户是否挽留,Hive,的,user_profile,库中的,mediamatch_usermsg_process,、,mediamatch_userevent_process,、,order_index_process,、,mmconsume_billevent_process,、,media_index_process,Hive,的,user_profile,库中的,svm_activate,、,svm_prediction,用户画像,Hive,的,user_profile,库中的,mediamatch_usermsg_process,、,mediamatch_userevent_process,、,order_index_process,、,mmconsume_billevent_process,、,media_index_process,、,svm_prediction,MySQL,的,user_profile,库中的,user_label,实时统计订单信息,node4,节点的,/data/order.csv,文件,Redis,的,db0,中的各键值对,1,调度实现,目录,调度策略,2,XXL-JOB,是一个轻量级分布式任务调度平台,该平台的核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。
XXL-JOB,分布式任务调度平台已在,GitHub,上开源关于,XXL-JOB,分布式任务调度平台的相关介绍及使用,可以参考,XXL,开源社区中,XXL-JOB,分布式任务调度平台的快速入门、任务详解、任务管理的相关内容,快速构建实战环境调度实现,1,调度系统配置及二次开发,XXL-JOB,分布式任务调度平台的后台有多个模块,本节主要简单介绍和广电大数据用户画像项目相关的几个核心模块(详细设计请参考,XXL,开源社区中的相关内容)在本项目的工程代码中,已将,XXL-JOB,分布式任务调度平台加入工程,如下图调度实现,分布式任务调度平台分为,3,个模块:,任务调度中心(,timer-job-admin,)模块;,任务核心(,timer-job-core,,主要是任务处理器,即,JobHandler,)模块;,执行器模块其中,执行器模块包含,timer-job-java-executor,(,Java,执行器)和,timer-job-shell-executor,(,Shell,执行器)调度实现,任务调度中心是一个,Web,工程,提供图形化用户界面,用户可以在任务调度中心的界面中进行任务创建、配置、执行、定时调度、日志查看、监控等操作。
任务核心模块可以理解为一个中间件或基础模块,供其他模块调用,不需要部署(任务核心模块的部分代码已在原,GitHub,基础上经过调整,以适应本项目)执行器模块作为客户端执行具体任务,是一个,Spring Boot,工程,可直接使用,JDK,运行调度实现,在,Linux,中部署,XXL-JOB,,需要先在,GitHub,上下载源码,部署的工程有,timer-job-admin,(,WAR,包方式)、,timer-job-shell-executor,(,JAR,包方式)、,timer-。
