什么是DataWorks:html
学习路径:java
实践案例目标:将MongoDB数据库中的目标日志集合同步至阿里云DataWorks中,在DataWorks中进行日志解析处理后,将处理后的新数据同步到MongoDB数据库的新集合中,整个业务流程的执行间隔尽可能缩短。数据库
实践案例步骤:编程
官方文档:准备阿里云帐号浏览器
步骤图示:安全
官网首页点击右上角"当即注册"。网络
选择注册方式进行注册。intellij-idea
注册完成后,官网首页右上角可登陆帐号。app
登陆成功后,点击右上角"个人阿里云"图标,会出现帐户信息边栏。运维
在边栏中点击"帐号管理",进入帐号管理页面。
在帐号管理页面完成实名认证。
完成实名认证后,鼠标箭头悬停在页面右上角的头像上,在出现的悬浮框中点击"AccessKey管理",进入AccessKey管理页面。
目前阿里云官方建议禁用主帐号的AccessKey,使用RAM子用户AccessKey来进行API调用,所以点击"开始使用子用户AccesssKey",进入RAM访问控制页面,进行下一步:建立RAM子帐号。
官方文档:准备RAM用户
步骤图示:
在RAM访问控制页面,点击"建立用户"按钮,进入建立用户页面。
在建立用户页面,填写帐户信息,勾选"控制台访问"与"编程访问",下面的密码选项根据需求自主选择,完成后点击"肯定",建立成功后,及时保存AccessKey相关信息(下载CSV文件)。
选择RAM访问控制页面左侧菜单栏的"人员管理"中的"用户组"标签,在切换后的页面中点击"建立用户组",完善用户组信息后,点击"肯定"按钮,完成用户组的建立。
选中建立好的用户组,点击"添加组成员",在弹出的边栏中,选中刚才建立好的RAM用户,点击"肯定",将RAM用户绑定到用户组。
选中刚才的用户组,点击"添加权限",会出现"添加权限"右侧边栏。在边栏中,根据需求选择"受权范围";在"选择权限"模块下,根据需求尽可能选择小权限添加,当前先在搜索栏中搜索"DataWorks",点选添加DataWorks使用权限,以后有别的权限需求再进行添加。选择好权限后,点击"肯定"完成。
完成权限添加后,点击右上角"个人阿里云"图标,在出现帐户信息边栏下方,点击退出登陆,退出当前阿里云帐号。
退出登陆后,点击阿里云首页右上方"登陆",在登陆页面中点击"RAM用户登陆",使用RAM帐号进行登陆。遵循阿里云安全最佳实践,以后均使用RAM帐号进行DataWorks开发操做,在须要添加权限、购买阿里云产品等特殊状况时,再使用阿里云主帐户进行操做(不一样的浏览器能够分别登陆不一样帐号)。
官方文档:建立工做空间
步骤图示:
RAM帐号登陆成功后,在阿里云首页右上方点击"控制台",进入管理控制台页面。
在管理控制台页面,点击左上角的菜单按钮,会出现侧边菜单栏,点击"DataWorks"标签,页面会切换到对应的DataWorks页面,点击"免费开通基础版",进入DataWorks购买页面,购买完成后要回到此页面。
在DataWorks购买页面,根据本身需求选择地域(能够选择离本身最近的地域),版本选择基础版(其余版本须要付费)便可知足本次实践需求,而后勾选赞成服务协议,点击"确认订单并支付",完成DataWorks基础版的开通。
完成DataWorks基础版的开通后,回到刚才的管理控制台页,从新点击"DataWorks"标签,能够进入新的DataWorks控制台页,点击左侧菜单栏的"工做空间列表",切换到工做空间列表页,点击"建立工做空间"按钮,准备建立一个新的工做空间。
点击"建立工做空间"按钮后,页面右侧会弹出边栏,填写工做空间名称等信息,为简化操做流程,本次实践选择"简单模式"进行演示,完成后点击"下一步",将选择工做空间引擎。
进入选择引擎页面,须要选择计算引擎服务为MaxCompute,此时还未开通MaxCompute服务,点击"MaxCompute"标签里的"按量付费"选项后的"去购买"连接,跳转到MaxCompute购买页面,购买完成后要回到此页面。
进入MaxCompute购买页面,商品类型选择"按量计费",区域根据本身的需求选择,规格类型选择"标准版",而后点击"当即购买",完成MaxCompute服务的激活。
MaxCompute服务激活后,回到建立工做空间的选择引擎页面,选中"MaxCompute"标签里的"按量付费"选项(若页面没有刷新,没法选中,点一下"上一步",再点一下"下一步"来刷新页面),而后点击"下一步",准备配置引擎详情。
进入引擎详情页面,自主填写实例显示名称和MaxCompute项目名称,其余配置选项保持默认便可,而后点击"建立工做空间",完成工做空间的建立。
注意:因为本人在其余业务流程中使用了数据集成中"一键实时同步至MaxCompute的功能"(不支持MongoDB数据源),而实时同步功能仅支持运行在独享数据集成资源组上,所以购买了独享数据集成资源组。而本次实践中也就使用了以前购买的独享数据集成资源组(不用白不用)。而本次实践因为只使用了离线同步功能,也可以使用公共资源组(免费)进行数据集成,如要使用公共资源组,可跳过此步骤。
官方文档:新增和使用独享数据集成资源组
步骤图示:
进入DataWorks控制台页面,在左侧菜单栏切换到"工做空间列表"页面,点击页面右上角的"购买独享资源组",打开DataWorks独享资源购买页面。
进入DataWorks独享资源购买页面,根据本身的需求选择地域和可用区(要与工做空间所在的地域相同),独享资源类型选择"独享数据集成资源",本次实践只需购买最低限度的独享集成资源,所以下面选项依次选择"4 vCPU 8 GiB"、"1"、"1个月",而后点击"当即购买",完成独享数据集成资源的购买。
完成独享数据集成资源组的购买后,进入DataWorks控制台页面,在左侧菜单栏切换到"资源组列表"页面,而后点击"建立独享资源组",会出现右侧边栏。资源组类型选择"独享数据集成资源组",资源组名称自主填写,资源组备注自主填写,订单号选择刚才购买的独享数据集成资源的订单号,而后点击"肯定",完成独享数据集成资源组的建立。
建立好独享数据集成资源组后,在资源组列表页面中,点击刚建立完成的资源组右端的"修改归属工做空间"连接,会出现修改归属工做空间的弹出框,选择刚才建立的工做空间,点击右端对应的"绑定",完成独享数据集成资源组与工做空间的绑定。
官方文档:配置数据源
步骤图示:
在DataWorks控制台的工做空间列表页面中,点击目标工做空间右端"操做"列中的"进入数据集成"连接,打开数据集成页面。
进入数据集成页面中,点击展开左侧菜单栏中的"数据源"项,在其展开的子菜单中,点击"数据源列表",打开数据源管理页面。
进入数据源管理页面中,点击页面右上角的"新增数据源",会出现新增数据源的弹出框。本次实践的目标数据源为MongoDB数据库,所以在弹出框中找到"NoSQL"标签下"MongoDB"图标,点击该图标,会出现新的"新增MongoDB数据源"弹出框。
在新增MongoDB数据源的弹出框中,须要填写数据源相关信息。本次实践的MongoDB数据源为阿里云云数据库MongoDB版,因此数据源类型选择"阿里云实例模式",自主填写数据源名称和数据源描述,地域选择数据源所在地域,实例ID填写数据源的实例ID(经过后面的问号图标,可进入MongoDB管理控制台的实例列表,复制"实例ID"填写),自主填写正确的数据库名、用户名、密码。而后点击下面表格中"独享数据集成资源组"这一行的"测试连通性",此时会连通失败,须要添加独享数据集成资源绑定的交换机网段至数据库的白名单内(若使用的是公共资源组,则须要添加DataWorks工做空间所在区域的白名单IP至数据库的白名单内)。所以下一步要打开DataWorks控制台的"资源组列表"页面去找到相关信息。
进入"资源组列表"页面中,点击目标独享数据集成资源组的"操做"列中的"查看信息"连接,会出现"独享资源组"的弹出框,复制"EIP地址"和"网段"的内容,下一步打开MongoDB管理控制台,准备添加数据库的IP白名单。
进入MongoDB管理控制台,选择"副本集实例列表",找到目标MongoDB实例的行,展开后面的"操做"列,点击"管理"选项,打开目标MongoDB实例的管理页面。
进入MongoDB实例的管理页面中,在左侧菜单栏点击"白名单设置"切换到对应页面。点击页面中的"添加白名单分组"按钮,会出现右侧"添加白名单分组"边栏。在边栏中自主填写分组名,并将刚才独享资源组的"EIP地址"和"网段"的内容填写到"容许访问IP名单"文本框中,用英文逗号分隔,而后点击"肯定",完成将独享资源组网段添加到数据源白名单的操做,下一步回到新增MongoDB数据源的页面。
在新增MongoDB数据源的页面中,再次点击"测试连通性",此时连通状态变为"可连通",而后点击"完成",完成MongoDB数据源的建立。
同理,也建立一个新的MaxCompute数据源(默认的MaxCompute数据源"odps_first"直接用来运行任务会出问题)。在数据源管理页面中,点击"新增数据源",会出现"新增MaxCompute(ODPS)数据源"弹出框。在弹出框中,自主填写"数据源名称"、"数据源描述","网络链接类型"选择"阿里云VPC","地域"勾选"与当前DataWorks同region","ODPS项目名称"填写当前的DataWorks工做空间名称,"AccessKey ID"填写当前登陆的RAM帐号的AccessKey ID,"AccessKey Secret"填写当前登陆的RAM帐号的AccessKey Secret。而后一样点击下面表格中"独享数据集成资源组"这一行的"测试连通性",确认"连通状态"为"可连通"。点击"完成",完成MaxCompute数据源的建立。
官方文档:建立MaxCompute表
步骤图示:
在DataWorks控制台的工做空间列表页面中,点击目标工做空间所在行的"操做"列中的"进入数据开发"连接,打开"DataStudio(数据开发)"页面。
进入"DataStudio(数据开发)"页面中,点击左侧菜单栏中的"表管理"项,切换到表管理页面。而后点击表管理菜单中的新建按钮,会出现"新建表"弹出框,准备新建一张输入表用于保存来自数据源的离线同步日志数据。在弹出框中选择引擎类型为"MaxCompute",自主填写表名,而后点击新建,会出现MaxCompute表的编辑页面。
在MaxCompute表的编辑页面,"基本属性"模块中,自主填写"中文名"与"描述"。"物理模型设计"模块中,"分区类型"选择"分区表","生命周期"自主勾选(超过生命周期的未更新数据会被清除),"表类型"选择"内部表"。"表结构设计"模块中,自主添加字段,分区添加日、时、分三种粒度的分区,其中日级分区的"日期分区格式"能够填写日期格式(例如:yyyymmdd)。也能够使用DDL模式设置表结构。设置完表结构后,点击"提交到生产环境",完成"输入表"的建立。同理,自主建立一张相似的"输出表",用于保存这次实践中日志解析完成后产生的数据。至此完成两张MaxCompute表的建立。
官方文档:建立业务流程
步骤图示:
在DataStudio(数据开发)页面,点击左侧菜单栏中的"数据开发"项,切换到数据开发页面。而后点击数据开发菜单中的新建按钮展开子菜单,点击子菜单中的"业务流程",会出现"新建业务流程"弹出框。
在"新建业务流程"弹出框中,自主填写"业务名称"与"描述",而后点击"新建",新建业务流程成功,自动进入该业务流程管理页面。
官方文档:配置离线同步任务
步骤图示:
在业务流程管理页面中,点击左侧节点列表中"数据集成"下的"离线同步"项,会出现"新建节点"弹出框。在弹出框中自主填写"节点名称",而后点击"提交",完成离线同步节点的新建。
离线同步节点新建完成后,业务流程管理页面中会出现此节点,双击该节点图标,会进入该离线同步节点的配置页面。
进入离线同步节点配置页面中,展开"01选择数据源"模块中"数据来源"下"数据源"的下拉菜单,找到并选中"MongoDB"项,选中后会看到提示:此数据源不支持向导模式,须要使用脚本模式配置同步任务,点击转换为脚本。因为离线同步节点配置向导还不支持MongoDB数据源的同步,所以点击"点击转换为脚本"连接,节点配置页面会从向导模式转换为脚本模式。
在离线同步节点脚本模式配置页面中,点击上方菜单栏中的导入模板按钮,会出现"导入模板"弹出框。在弹出框中,选择"来源类型"为"MongoDB",自主选择目标MongoDB的"数据源";选择"目标类型"为"ODPS",自主选择目标ODPS的"数据源"。而后点击"确认",配置页面中会自动生成脚本的代码模板,下一步在代码模板的基础上进行脚本的完善。
在离线同步节点脚本模式配置页面中,因为要从MongoDB同步到MaxCompute,根据MongoDB Reader和MaxCompute Writer的官方文档,自主修改完善脚本。在编写脚本时要注意,因为离线同步任务的最小执行间隔为5分钟一次,因此这次实践要在每次离线同步任务定时运行时,获取MongoDB中,定时任务执行时间往前五分钟内的数据,塞入MaxCompute输入表对应的分区中。所以参考DataWorks调度参数的官方文档,在页面右端展开"调度配置"边栏,而后在调度配置边栏的"基础属性"模块下的"参数"文本框中输入:yyyy_mm_dd_min=$[yyyy-mm-dd-5/24/60] yyyy_mm_dd_max=$[yyyy-mm-dd] yyyymmdd_min=$[yyyymmdd-5/24/60] hh_mi_min=$[hh24:mi-5/24/60] hh_mi_max=$[hh24:mi] hh_min=$[hh24-5/24/60] mi_min=$[mi-5/24/60]
。接下来在脚本代码中,在"Reader"部分的"query"项(用于对MongoDB数据进行时间范围筛选)中填写内容:{'date':{'$gte':ISODate('${yyyy_mm_dd_min}T${hh_mi_min}:00.000+0800'),'$lt':ISODate('${yyyy_mm_dd_max}T${hh_mi_max}:00.000+0800')}}
。此处"${yyyymmdd_min}"等是引用刚才设置的DataWorks调度参数,而"$gte"、"$lt"、"ISODate()"是MongoDB支持的条件操做符号和函数,将获取数据的时间范围限制为执行时间往前五分钟内。下一步,要在脚本代码中的"Writer"部分的"partition"项(分区)中填写内容:partition_day=${yyyymmdd_min},partition_hour=${hh_min},partition_minute=${mi_min}
。此处也是引用刚才设置的DataWorks调度参数,设置数据塞入MaxCompute表的分区为执行时间往前五分钟的时间分区。另外,"Writer"部分的"datasource"项注意要设置为本身新建的MaxCompute数据源。完成脚本的编辑后,下一步进行此离线同步节点的调度配置。
在调度配置边栏中,对该离线同步节点的调度配置进行完善。在"基础属性"模块中,"责任人"选择当前登陆的RAM帐号;自主填写"描述";"参数"的填写内容上一步中已完成,再也不赘述。在"时间属性"模块中,自主选择"生成实例方式",为方便后面快速测试,这次实践选择"发布后即时生成";"时间属性"选择"正常调度";自主选择"重跑属性",一般选择"运行成功后不可重跑,运行失败后能够重跑";勾选"出错自动重跑",自主选择"出错自动重跑次数"、"出错自动重跑间隔",这次实践使用其默认配置的次数与间隔;自主选择"生效日期",这次实践使用其默认配置,让同步任务一直保持生效状态;因为这次实践但愿整个业务流程的运行周期间隔尽可能短一些,因此设置"调度周期"为"分钟","开始时间"设置为"00:00"(被限制只能设置整时),"时间间隔"设置为最短的"05","结束时间"设置为"23:59"(被限制只能设置小时),以确保该节点跨天也会每五分钟运行一次;自主选择"超时时间",这次实践选择"系统默认";不勾选"依赖上一周期",这样某一周期运行出错不会影响以后的运行周期。"资源属性"模块的"调度资源组"选择默认的"公共调度资源组"便可。"调度依赖"模块暂时不进行配置。"节点上下文"模块在这次实践中不须要配置。完成以上调度配置后,下一步对该节点进行数据集成资源组配置。
点击页面右端菜单栏的"数据集成资源组配置"项,将右边边栏切换到"数据集成资源组配置"页面。在边栏中,"方案"项选择"独享数据集成资源组",而后"独享数据集成资源组"项自主选择独享数据集成资源组。若要使用公共数据集成资源组,"方案"项选择"公共资源组"便可。数据集成资源组配置完成后,点击页面上方菜单栏的保存按钮,完成对离线同步节点的建立与配置。
同理,再建立一个相似的离线同步节点,用于将MaxCompute输出表的数据同步到MongoDB的集合中。在编写此脚本时一样有几点要注意,在调度配置边栏的"基础属性"模块下的"参数"文本框中输入:p_yyyymmdd=$[yyyymmdd-15/24/60] p_hh=$[hh24-15/24/60] p_mi=$[mi-15/24/60]
。在脚本的"Reader"部分的"partition"项中填写内容:partition_day=${p_yyyymmdd}/partition_hour=${p_hh}/partition_minute=${p_mi}
。在调度配置边栏的"时间属性"模块下,"调度周期"设置"分钟","开始时间"设置"00:00","时间间隔"设置"05","结束时间"设置"23:59"。这样该离线同步节点每次运行时会去同步MaxCompute输出表中十五分钟前的时间分区的数据。至此完成两个离线同步节点的建立与配置,下一步准备开发DataWorks的MapReduce功能的JAR包,用于对日志数据进行解析。
官方文档:安装MaxCompute Studio
步骤图示:
打开IntelliJ IDEA的主界面,展开上方菜单栏的"File"项,点击展开的子菜单中的"Settings...",会出现Settings弹出框。
在Settings弹出框中,点击左侧菜单栏中的"Plugins",使弹出框切换到插件页面。在插件页面中,点击上方的"Marketplace"标签,而后再搜索框中输入"MaxCompute Studio",搜索框下方会出现搜索结果。点击MaxCompute Studio阿里云官方插件的"Install"按钮,开始插件的安装。
插件安装完成后,会出现"Restart IDE"按钮,点击该按钮重启IDEA,便可使用MaxCompute Studio插件。下一步准备在IDEA中建立MaxCompute Studio项目,并链接到DataWorks中的MaxCompute项目。
重启IDEA后,展开上方菜单栏的"File"项,在"File"项的子菜单中再次展开"New"项,点击"New"项的子菜单中的"Project..."项,会出现"New Project"弹出框。
在"New Project"弹出框的左侧菜单栏中点击"MaxCompute Studio",而后点击"Next"按钮,下一步设置项目名称和路径。
自主填写项目名称到"Project name"中,自主选择项目保存路径到"Project location"中,而后点击"Finish"按钮,完成建立MaxCompute Studio项目,下一步将此项目链接到DataWorks中的MaxCompute项目。
在IntelliJ IDEA的主界面,展开上方菜单栏的"View"项,在"View"项的子菜单中再次展开"Tool Windows"项,点击"Tool Windows"项的子菜单中的"Project Explorer"项,会出现"Project Explorer"左侧边栏。
在侧边栏中,点击左上角的"+"图标,会出现"Add MaxCompute project"弹出框。在弹出框中,将正在使用的RAM帐号的AccessKey ID填入"Access Id"中,将正在使用的RAM帐号的AccessKey Secret填入"Access Key"中,将DataWorks工做空间名称填入"Project Name"中,而后点击"OK",完成MaxCompute项目的链接。成功链接后,即可以在IDEA界面左侧的"Project Explorer"边栏中查看链接到的MaxCompute项目的详情。
在IntelliJ IDEA的主界面,展开上方菜单栏的"File"项,在"File"项的子菜单中再次展开"New"项,点击"New"项的子菜单中的"Module..."项,会出现"New Module"弹出框。
在"New Module"弹出框的左侧菜单中,点击"MaxCompute Java",在弹出框主页面中自主设置"Module SDK"为1.8版本的JDK,而后点击"Next",下一步设置Module名称。
在"Module name"中自主填写模块名称,而后点击"Finish",完成MaxCompute Java模块的建立,在IDEA的"Project"侧边栏中会出现对应的目录结构。至此完成MaxCompute Studio插件的下载与配置。
官方文档:开发MapReduce功能的Java程序
步骤图示:
在IntelliJ IDEA主界面左侧菜单栏中点击"Project",展开"Project"侧边栏。在侧边栏中展开MaxCompute Studio项目的目录结构,找到MaxCompute Java模块的目录项,依次展开其下的"src"、"main"目录项,选中"main"目录结构下的"java"目录项,鼠标右击调出右键菜单。在右键菜单中展开"New"项,点击"New"项的子菜单中的"MaxCompute Java"项,会出现"Create new MaxCompute java class"弹出框。
在"Create new MaxCompute java class"弹出框下方的菜单中点选"Driver"项,而后在弹出框的"Name"文本框中自主输入Driver名称(例如:MainDriver),按"Enter"键完成Driver文件的建立。
Driver建立完成后,在"Project"侧边栏中找到Driver文件,双击打开其编辑页面。在编辑页面中,能够看到自动生成了一些Java代码模板,而该Driver类中只有一个main方法,代表此Driver类是整个MapReduce功能的Java程序的入口。咱们用与建立Driver类一样的方式,建立Mapper类与Reducer类,而后根据MapReduce示例程序的官方文档,自主完成Driver类、Mapper类、Reducer类的开发,实现所需的功能(例如本次实践中进行了日志解析功能的实现),这里不深刻展开详细的过程。开发结束前,请自主进行本地测试,使程序经过本地编译和测试,确保功能可用。
官方文档:打包、上传Java程序
步骤图示:
完成MapReduce功能的Java程序开发后,要对程序进行打包得到JAR包。在IntelliJ IDEA主界面的"Project"侧边栏中选中Driver文件,鼠标右击调出右键菜单。在右键菜单中点击"Deploy to server...",会出现"Package a jar and submit resource"弹出框。
在"Package a jar and submit resource"弹出框中,因为以前已经配置过MaxCompute项目的链接,此时会自动填写各项参数,只需点击"OK"按钮,便可完成打包,下一步要将JAR包上传为资源。
在"Project"侧边栏中展开MaxCompute Java模块下的"target"目录项,在"target"目录结构中选中上一步生成的JAR包。而后展开主界面上方菜单栏中的"MaxCompute"项,点击展开的子菜单中的"添加资源",会出现"Add Resource"弹出框。
在"Add Resource"弹出框中,由于刚才选中了生成的JAR包,此时会自动填写各项参数,只需点击"OK"按钮,便可将JAR包添加为阿里云MaxCompute项目中的资源,下一步要将此资源添加到业务流程的资源文件夹中。
打开阿里云的"DataStudio(数据开发)"页面,展开页面左侧菜单栏中的"MaxCompute"项,点击"MaxCompute"菜单下的"MaxCompute资源",菜单栏右边的页面会切换到"MaxCompute资源"编辑页面。在"MaxCompute资源"编辑页面中选中刚才上传的JAR包资源,而后点击页面下方的"添加到数据开发"按钮,会出现"新建资源"弹出框。在"新建资源"弹出框中,参数"目标文件夹"里自主选择以前建立的业务流程,而后点击"新建"按钮,成功将Jar包添加到业务流程的资源中,下一步将资源进行提交。
在DataWorks的"数据开发"页面中,展开当前业务流程的列表,在列表中依次展开"MaxCompute"、"资源"项,双击刚添加的JAR包资源,进入该资源的编辑页面,而后点击页面上方菜单栏中的提交按钮,会出现"提交新版本"弹出框。
在"提交新版本"弹出框中,自主填写"变动描述",而后点击"确认",完成资源的提交。资源提交成功后,在业务流程正式运行的时候,节点才能找到此资源。
官方文档:建立ODPS MR节点
步骤图示:
在阿里云的"DataStudio(数据开发)"页面中,点击左侧菜单栏中的"数据开发"项,菜单栏右边的页面会切换到"数据开发"页面。在"数据开发"页面中,展开"业务流程"列表,在"业务流程"列表中,双击目标业务流程,打开目标业务流程的编辑页面。在业务流程编辑页面的左侧菜单栏中双击"ODPS MR"项,会出现"新建节点"弹出框。在"新建节点"弹出框中,自主填写"节点名称",而后点击"提交"按钮,完成ODPS MR节点的建立。
完成ODPS MR节点的建立后,在业务流程的编辑页面中,双击刚建立的ODPS MR节点,进入ODPS MR节点的编辑页面。
在ODPS MR节点的编辑页面中,编辑区域的末尾添加一行代码:--@resource_reference{""}
。并将光标放到两个双引号之间,下一步准备引入刚添加的资源。
在ODPS MR节点编辑页面左边的"数据开发"页面中,展开当前业务流程的列表,在列表中依次展开"MaxCompute"、"资源"项,选中刚添加的JAR包资源,鼠标右击调出右键菜单。在右键菜单中点击"引用资源",刚才ODPS MR节点编辑区域的光标所在位置就会自动添加引用资源的名称,并在编辑区域的开头自动生成一行代码,下一步准备添加一行调用JAR包资源运行的代码。
在编辑区域末尾,再添加一行调用JAR包资源的Driver类的main方法的代码,格式相似于jar -resources *-*.*-snapshot.jar -classpath ./*-*.*-snapshot.jar *.*Driver <in_table>[|<partition_key>=<val>[/<partition_key>=<val>...]] <out_table>[|<partition_key>=<val>[/<partition_key>=<val>...]]
。此行代码的前半部分("in_table"以前的部分),用于指定调用的JAR包资源的名称和位置,以及其中的Driver类的全类名;代码的后半部分("in_table"之后的部分),是Driver类中main方法的入参(对应形参String[] args),所以后半部分MaxCompute输入表与输出表的代码格式,是根据以前自主编写Driver类时main方法中的解析方式来填写的,上面的示例代码仅供参考,请自主完善。本次实践中,MaxCompute输入表或输出表须要指定时间分区,也跟以前同样使用调度参数动态指定,所以在调度配置边栏的"基础属性"模块下的"参数"文本框中输入:p_yyyymmdd=$[yyyymmdd-10/24/60] p_hh=$[hh24-10/24/60] p_mi=$[mi-10/24/60]
,在MaxCompute输入表与输出表指定分区的代码部分填写内容:partition_day=${p_yyyymmdd}/partition_hour=${p_hh}/partition_minute=${p_mi}
。完成ODPS MR节点的代码编辑后,下一步准备进行其调度配置。
在调度配置边栏中,对该ODPS MR节点的调度配置进行完善。在"基础属性"模块中,"责任人"选择当前登陆的RAM帐号;自主填写"描述";"参数"的填写内容上一步中已完成,再也不赘述。在"时间属性"模块中,自主选择"生成实例方式",为方便后面快速测试,这次实践选择"发布后即时生成";"时间属性"选择"正常调度";自主选择"重跑属性",一般选择"运行成功后不可重跑,运行失败后能够重跑";勾选"出错自动重跑",自主选择"出错自动重跑次数"、"出错自动重跑间隔",这次实践使用其默认配置的次数与间隔;自主选择"生效日期",这次实践使用其默认配置,让同步任务一直保持生效状态;因为这次实践但愿整个业务流程的运行周期间隔尽可能短一些,因此设置"调度周期"为"分钟","开始时间"设置为"00:00"(被限制只能设置整时),"时间间隔"设置为最短的"05","结束时间"设置为"23:59"(被限制只能设置小时),以确保该节点跨天也会每五分钟运行一次;自主选择"超时时间",这次实践选择"系统默认";不勾选"依赖上一周期",这样某一周期运行出错不会影响以后的运行周期。"资源属性"模块的"调度资源组"选择默认的"公共调度资源组"便可。"调度依赖"模块暂时不进行配置。"节点上下文"模块在这次实践中不须要配置。完成以上调度配置后,点击页面上方菜单栏的保存按钮,完成对ODPS MR节点的建立与配置。
官方文档:配置节点的调度和依赖属性
步骤图示:
目前业务流程里总共建立并配置了三个节点:一个从MongoDB表到MaxCompute表的离线同步节点,用于获取日志数据,每次同步执行时间往前五分钟到执行时间的数据;一个从MaxCompute表到MaxCompute表的ODPS MR节点,用于解析日志数据,每次同步执行时间往前十分钟到执行时间往前五分钟的数据;一个从MaxCompute表到MongoDB表的离线同步节点,用于输出日志数据,每次同步执行时间往前十五分钟到执行时间往前十分钟的数据。本次实践中,这三个节点在业务流程中并行运行,互相之间不存在上下游关系,所以将这三个节点的父节点均设置为工做空间根节点便可。下面进行步骤演示,对三个节点执行一样的操做便可。首先选中一个节点双击,进入节点编辑页面。
在节点编辑页面右端展开"调度配置"边栏,而后在调度配置边栏的"调度依赖"模块下的参数项"依赖的上游节点"后面点击"使用工做空间根节点"按钮,下面的父节点列表中会自动添加一条工做空间根节点数据。而后点击页面上方菜单栏的提交按钮,会出现"请注意"弹出框。
在"请注意"弹出框中,点击"确认"保存修改。保存成功后,会出现"提交新版本"弹出框。
在"提交新版本"弹出框中,自主填写"变动描述",而后点击"确认",完成节点的提交。节点提交后,该节点就会正式运行,开始进行周期调度。至此完成将三个节点绑定到工做空间根节点下的操做,并将三个节点成功进行了提交。
官方文档:节点运行及排错
步骤图示:
上一步中,业务流程中的三个节点已经成功进行了提交并开始运行,而在业务流程编辑页面中,点击上方菜单栏的提交按钮,也能够对节点进行统一提交。
业务流程提交并运行后,咱们能够点击页面上方菜单栏中的前往运维按钮,或者页面右上角的"运维中心"连接,打开DataWorks的"运维中心(工做流)"页面,准备查看各个节点周期任务的运行结果。
在"运维中心(工做流)"页面左侧菜单栏中展开"周期任务运维"项,在子菜单中点击"周期实例",切换到周期实例列表页面。在周期实例列表页面上方搜索栏中,搜索条件的"业务日期"(业务日期为实际运行日期的前一天)选择"所有",勾选"个人出错节点",自主调整其余搜索选项,点击搜索栏右下角的"刷新"能够更新搜索结果。在下方周期实例列表中点选一个出错实例,列表右侧会出现该出错实例的详情页面。在详情页面中,点选目标出错节点,页面右下角会出现该节点信息的弹出框。在弹出框中点击查看日志,能够打开该出错节点运行时的日志详情页面。根据异常日志内容,咱们就能够找到出错缘由,进行对应的调整,确保整个业务流程的正常运行。