阿里云DataWorks实践:数据集成+数据开发


简介

  • 什么是DataWorks:html

  • 学习路径:java

  • 实践案例目标:将MongoDB数据库中的目标日志集合同步至阿里云DataWorks中,在DataWorks中进行日志解析处理后,将处理后的新数据同步到MongoDB数据库的新集合中,整个业务流程的执行间隔尽可能缩短。数据库

  • 实践案例步骤:编程

    1. 准备阿里云帐号并登陆
    2. 建立并配置工做空间
    3. 购买独享数据集成资源组并绑定
    4. 建立并配置数据源
    5. 配置并建立MaxCompute表
    6. 建立业务流程
    7. 建立并配置离线数据增量同步节点
    8. 下载IntelliJ IDEA的MaxCompute Studio插件并配置
    9. 使用MaxCompute Studio开发MapReduce功能的Java程序
    10. 将MapReduce功能程序打包上传为资源
    11. 建立并配置ODPS MR节点
    12. 关联各个节点
    13. 提交业务流程并查看运行结果

步骤


1、准备阿里云帐号并登陆

Ⅰ、注册阿里云帐号

  • 官方文档:准备阿里云帐号浏览器

  • 步骤图示:安全

    1. 官网首页点击右上角"当即注册"。网络

      阿里云当即注册

    2. 选择注册方式进行注册。intellij-idea

      阿里云注册方式

    3. 注册完成后,官网首页右上角可登陆帐号。app

      阿里云登陆入口

    4. 登陆成功后,点击右上角"个人阿里云"图标,会出现帐户信息边栏。运维

      首页个人阿里云图标

    5. 在边栏中点击"帐号管理",进入帐号管理页面。

      个人阿里云边栏

    6. 在帐号管理页面完成实名认证。

      实名认证

    7. 完成实名认证后,鼠标箭头悬停在页面右上角的头像上,在出现的悬浮框中点击"AccessKey管理",进入AccessKey管理页面。

      AccessKey管理

    8. 目前阿里云官方建议禁用主帐号的AccessKey,使用RAM子用户AccessKey来进行API调用,所以点击"开始使用子用户AccesssKey",进入RAM访问控制页面,进行下一步:建立RAM子帐号。

      开始使用子用户AccesssKey

Ⅱ、建立RAM子帐号

  • 官方文档:准备RAM用户

  • 步骤图示:

    1. 在RAM访问控制页面,点击"建立用户"按钮,进入建立用户页面。

      RAM访问控制

    2. 在建立用户页面,填写帐户信息,勾选"控制台访问"与"编程访问",下面的密码选项根据需求自主选择,完成后点击"肯定",建立成功后,及时保存AccessKey相关信息(下载CSV文件)。

      RAM用户建立

    3. 选择RAM访问控制页面左侧菜单栏的"人员管理"中的"用户组"标签,在切换后的页面中点击"建立用户组",完善用户组信息后,点击"肯定"按钮,完成用户组的建立。

      建立用户组

    4. 选中建立好的用户组,点击"添加组成员",在弹出的边栏中,选中刚才建立好的RAM用户,点击"肯定",将RAM用户绑定到用户组。

      添加用户到组

    5. 选中刚才的用户组,点击"添加权限",会出现"添加权限"右侧边栏。在边栏中,根据需求选择"受权范围";在"选择权限"模块下,根据需求尽可能选择小权限添加,当前先在搜索栏中搜索"DataWorks",点选添加DataWorks使用权限,以后有别的权限需求再进行添加。选择好权限后,点击"肯定"完成。

      用户组添加权限

    6. 完成权限添加后,点击右上角"个人阿里云"图标,在出现帐户信息边栏下方,点击退出登陆,退出当前阿里云帐号。

      退出登陆

    7. 退出登陆后,点击阿里云首页右上方"登陆",在登陆页面中点击"RAM用户登陆",使用RAM帐号进行登陆。遵循阿里云安全最佳实践,以后均使用RAM帐号进行DataWorks开发操做,在须要添加权限、购买阿里云产品等特殊状况时,再使用阿里云主帐户进行操做(不一样的浏览器能够分别登陆不一样帐号)。

      RAM用户登陆


2、建立并配置工做空间

  • 官方文档:建立工做空间

  • 步骤图示:

    1. RAM帐号登陆成功后,在阿里云首页右上方点击"控制台",进入管理控制台页面。

      控制台入口

    2. 在管理控制台页面,点击左上角的菜单按钮,会出现侧边菜单栏,点击"DataWorks"标签,页面会切换到对应的DataWorks页面,点击"免费开通基础版",进入DataWorks购买页面,购买完成后要回到此页面。

      开通DataWorks基础版

    3. 在DataWorks购买页面,根据本身需求选择地域(能够选择离本身最近的地域),版本选择基础版(其余版本须要付费)便可知足本次实践需求,而后勾选赞成服务协议,点击"确认订单并支付",完成DataWorks基础版的开通。

      购买DataWorks

    4. 完成DataWorks基础版的开通后,回到刚才的管理控制台页,从新点击"DataWorks"标签,能够进入新的DataWorks控制台页,点击左侧菜单栏的"工做空间列表",切换到工做空间列表页,点击"建立工做空间"按钮,准备建立一个新的工做空间。

      点击建立工做空间按钮

    5. 点击"建立工做空间"按钮后,页面右侧会弹出边栏,填写工做空间名称等信息,为简化操做流程,本次实践选择"简单模式"进行演示,完成后点击"下一步",将选择工做空间引擎。

      填写工做空间基本信息

    6. 进入选择引擎页面,须要选择计算引擎服务为MaxCompute,此时还未开通MaxCompute服务,点击"MaxCompute"标签里的"按量付费"选项后的"去购买"连接,跳转到MaxCompute购买页面,购买完成后要回到此页面。

      MaxCompute开通入口

    7. 进入MaxCompute购买页面,商品类型选择"按量计费",区域根据本身的需求选择,规格类型选择"标准版",而后点击"当即购买",完成MaxCompute服务的激活。

      购买MaxCompute

    8. MaxCompute服务激活后,回到建立工做空间的选择引擎页面,选中"MaxCompute"标签里的"按量付费"选项(若页面没有刷新,没法选中,点一下"上一步",再点一下"下一步"来刷新页面),而后点击"下一步",准备配置引擎详情。

      选择MaxCompute按量付费

    9. 进入引擎详情页面,自主填写实例显示名称和MaxCompute项目名称,其余配置选项保持默认便可,而后点击"建立工做空间",完成工做空间的建立。

      配置MaxCompute引擎详情


3、购买独享数据集成资源组并绑定

  • 注意:因为本人在其余业务流程中使用了数据集成中"一键实时同步至MaxCompute的功能"(不支持MongoDB数据源),而实时同步功能仅支持运行在独享数据集成资源组上,所以购买了独享数据集成资源组。而本次实践中也就使用了以前购买的独享数据集成资源组(不用白不用)。而本次实践因为只使用了离线同步功能,也可以使用公共资源组(免费)进行数据集成,如要使用公共资源组,可跳过此步骤。

  • 官方文档:新增和使用独享数据集成资源组

  • 步骤图示:

    1. 进入DataWorks控制台页面,在左侧菜单栏切换到"工做空间列表"页面,点击页面右上角的"购买独享资源组",打开DataWorks独享资源购买页面。

      购买独享资源组入口

    2. 进入DataWorks独享资源购买页面,根据本身的需求选择地域和可用区(要与工做空间所在的地域相同),独享资源类型选择"独享数据集成资源",本次实践只需购买最低限度的独享集成资源,所以下面选项依次选择"4 vCPU 8 GiB"、"1"、"1个月",而后点击"当即购买",完成独享数据集成资源的购买。

      购买独享数据集成资源组

    3. 完成独享数据集成资源组的购买后,进入DataWorks控制台页面,在左侧菜单栏切换到"资源组列表"页面,而后点击"建立独享资源组",会出现右侧边栏。资源组类型选择"独享数据集成资源组",资源组名称自主填写,资源组备注自主填写,订单号选择刚才购买的独享数据集成资源的订单号,而后点击"肯定",完成独享数据集成资源组的建立。

      建立独享数据集成资源组

    4. 建立好独享数据集成资源组后,在资源组列表页面中,点击刚建立完成的资源组右端的"修改归属工做空间"连接,会出现修改归属工做空间的弹出框,选择刚才建立的工做空间,点击右端对应的"绑定",完成独享数据集成资源组与工做空间的绑定。

      资源组绑定工做空间


4、建立并配置数据源

  • 官方文档:配置数据源

  • 步骤图示:

    1. 在DataWorks控制台的工做空间列表页面中,点击目标工做空间右端"操做"列中的"进入数据集成"连接,打开数据集成页面。

      进入数据集成

    2. 进入数据集成页面中,点击展开左侧菜单栏中的"数据源"项,在其展开的子菜单中,点击"数据源列表",打开数据源管理页面。

      打开数据源列表

    3. 进入数据源管理页面中,点击页面右上角的"新增数据源",会出现新增数据源的弹出框。本次实践的目标数据源为MongoDB数据库,所以在弹出框中找到"NoSQL"标签下"MongoDB"图标,点击该图标,会出现新的"新增MongoDB数据源"弹出框。

      选择新增数据源

    4. 在新增MongoDB数据源的弹出框中,须要填写数据源相关信息。本次实践的MongoDB数据源为阿里云云数据库MongoDB版,因此数据源类型选择"阿里云实例模式",自主填写数据源名称和数据源描述,地域选择数据源所在地域,实例ID填写数据源的实例ID(经过后面的问号图标,可进入MongoDB管理控制台的实例列表,复制"实例ID"填写),自主填写正确的数据库名、用户名、密码。而后点击下面表格中"独享数据集成资源组"这一行的"测试连通性",此时会连通失败,须要添加独享数据集成资源绑定的交换机网段至数据库的白名单内(若使用的是公共资源组,则须要添加DataWorks工做空间所在区域的白名单IP至数据库的白名单内)。所以下一步要打开DataWorks控制台的"资源组列表"页面去找到相关信息。

      MongoDB数据源填写信息

    5. 进入"资源组列表"页面中,点击目标独享数据集成资源组的"操做"列中的"查看信息"连接,会出现"独享资源组"的弹出框,复制"EIP地址"和"网段"的内容,下一步打开MongoDB管理控制台,准备添加数据库的IP白名单。

      独享集成资源组网段

    6. 进入MongoDB管理控制台,选择"副本集实例列表",找到目标MongoDB实例的行,展开后面的"操做"列,点击"管理"选项,打开目标MongoDB实例的管理页面。

      MongoDB管理入口

    7. 进入MongoDB实例的管理页面中,在左侧菜单栏点击"白名单设置"切换到对应页面。点击页面中的"添加白名单分组"按钮,会出现右侧"添加白名单分组"边栏。在边栏中自主填写分组名,并将刚才独享资源组的"EIP地址"和"网段"的内容填写到"容许访问IP名单"文本框中,用英文逗号分隔,而后点击"肯定",完成将独享资源组网段添加到数据源白名单的操做,下一步回到新增MongoDB数据源的页面。

      MongoDB加白名单

    8. 在新增MongoDB数据源的页面中,再次点击"测试连通性",此时连通状态变为"可连通",而后点击"完成",完成MongoDB数据源的建立。

      数据源测试连通成功

    9. 同理,也建立一个新的MaxCompute数据源(默认的MaxCompute数据源"odps_first"直接用来运行任务会出问题)。在数据源管理页面中,点击"新增数据源",会出现"新增MaxCompute(ODPS)数据源"弹出框。在弹出框中,自主填写"数据源名称"、"数据源描述","网络链接类型"选择"阿里云VPC","地域"勾选"与当前DataWorks同region","ODPS项目名称"填写当前的DataWorks工做空间名称,"AccessKey ID"填写当前登陆的RAM帐号的AccessKey ID,"AccessKey Secret"填写当前登陆的RAM帐号的AccessKey Secret。而后一样点击下面表格中"独享数据集成资源组"这一行的"测试连通性",确认"连通状态"为"可连通"。点击"完成",完成MaxCompute数据源的建立。

      新建MaxCompute数据源


5、配置并建立MaxCompute表

  • 官方文档:建立MaxCompute表

  • 步骤图示:

    1. 在DataWorks控制台的工做空间列表页面中,点击目标工做空间所在行的"操做"列中的"进入数据开发"连接,打开"DataStudio(数据开发)"页面。

      进入数据开发

    2. 进入"DataStudio(数据开发)"页面中,点击左侧菜单栏中的"表管理"项,切换到表管理页面。而后点击表管理菜单中的新建按钮,会出现"新建表"弹出框,准备新建一张输入表用于保存来自数据源的离线同步日志数据。在弹出框中选择引擎类型为"MaxCompute",自主填写表名,而后点击新建,会出现MaxCompute表的编辑页面。

      新建MaxCompute表

    3. 在MaxCompute表的编辑页面,"基本属性"模块中,自主填写"中文名"与"描述"。"物理模型设计"模块中,"分区类型"选择"分区表","生命周期"自主勾选(超过生命周期的未更新数据会被清除),"表类型"选择"内部表"。"表结构设计"模块中,自主添加字段,分区添加日、时、分三种粒度的分区,其中日级分区的"日期分区格式"能够填写日期格式(例如:yyyymmdd)。也能够使用DDL模式设置表结构。设置完表结构后,点击"提交到生产环境",完成"输入表"的建立。同理,自主建立一张相似的"输出表",用于保存这次实践中日志解析完成后产生的数据。至此完成两张MaxCompute表的建立。

      配置MaxCompute表


6、建立业务流程

  • 官方文档:建立业务流程

  • 步骤图示:

    1. 在DataStudio(数据开发)页面,点击左侧菜单栏中的"数据开发"项,切换到数据开发页面。而后点击数据开发菜单中的新建按钮展开子菜单,点击子菜单中的"业务流程",会出现"新建业务流程"弹出框。

      新建业务流程

    2. 在"新建业务流程"弹出框中,自主填写"业务名称"与"描述",而后点击"新建",新建业务流程成功,自动进入该业务流程管理页面。

      新建业务流程成功


7、建立并配置离线数据增量同步节点

  • 官方文档:配置离线同步任务

  • 步骤图示:

    1. 在业务流程管理页面中,点击左侧节点列表中"数据集成"下的"离线同步"项,会出现"新建节点"弹出框。在弹出框中自主填写"节点名称",而后点击"提交",完成离线同步节点的新建。

      新建离线同步节点

    2. 离线同步节点新建完成后,业务流程管理页面中会出现此节点,双击该节点图标,会进入该离线同步节点的配置页面。

      双击离线同步节点

    3. 进入离线同步节点配置页面中,展开"01选择数据源"模块中"数据来源"下"数据源"的下拉菜单,找到并选中"MongoDB"项,选中后会看到提示:此数据源不支持向导模式,须要使用脚本模式配置同步任务,点击转换为脚本。因为离线同步节点配置向导还不支持MongoDB数据源的同步,所以点击"点击转换为脚本"连接,节点配置页面会从向导模式转换为脚本模式。

      离线同步转换为脚本模式

    4. 在离线同步节点脚本模式配置页面中,点击上方菜单栏中的导入模板按钮,会出现"导入模板"弹出框。在弹出框中,选择"来源类型"为"MongoDB",自主选择目标MongoDB的"数据源";选择"目标类型"为"ODPS",自主选择目标ODPS的"数据源"。而后点击"确认",配置页面中会自动生成脚本的代码模板,下一步在代码模板的基础上进行脚本的完善。

      离线同步节点脚本模式

    5. 在离线同步节点脚本模式配置页面中,因为要从MongoDB同步到MaxCompute,根据MongoDB ReaderMaxCompute 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数据源。完成脚本的编辑后,下一步进行此离线同步节点的调度配置。

      离线同步脚本注意事项

    6. 在调度配置边栏中,对该离线同步节点的调度配置进行完善。在"基础属性"模块中,"责任人"选择当前登陆的RAM帐号;自主填写"描述";"参数"的填写内容上一步中已完成,再也不赘述。在"时间属性"模块中,自主选择"生成实例方式",为方便后面快速测试,这次实践选择"发布后即时生成";"时间属性"选择"正常调度";自主选择"重跑属性",一般选择"运行成功后不可重跑,运行失败后能够重跑";勾选"出错自动重跑",自主选择"出错自动重跑次数"、"出错自动重跑间隔",这次实践使用其默认配置的次数与间隔;自主选择"生效日期",这次实践使用其默认配置,让同步任务一直保持生效状态;因为这次实践但愿整个业务流程的运行周期间隔尽可能短一些,因此设置"调度周期"为"分钟","开始时间"设置为"00:00"(被限制只能设置整时),"时间间隔"设置为最短的"05","结束时间"设置为"23:59"(被限制只能设置小时),以确保该节点跨天也会每五分钟运行一次;自主选择"超时时间",这次实践选择"系统默认";不勾选"依赖上一周期",这样某一周期运行出错不会影响以后的运行周期。"资源属性"模块的"调度资源组"选择默认的"公共调度资源组"便可。"调度依赖"模块暂时不进行配置。"节点上下文"模块在这次实践中不须要配置。完成以上调度配置后,下一步对该节点进行数据集成资源组配置。

      离线同步节点调度配置

    7. 点击页面右端菜单栏的"数据集成资源组配置"项,将右边边栏切换到"数据集成资源组配置"页面。在边栏中,"方案"项选择"独享数据集成资源组",而后"独享数据集成资源组"项自主选择独享数据集成资源组。若要使用公共数据集成资源组,"方案"项选择"公共资源组"便可。数据集成资源组配置完成后,点击页面上方菜单栏的保存按钮,完成对离线同步节点的建立与配置。

      离线同步节点数据集成资源组配置

    8. 同理,再建立一个相似的离线同步节点,用于将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到MongoDB


8、下载IntelliJ IDEA的MaxCompute Studio插件并配置

  • 官方文档:安装MaxCompute Studio

  • 步骤图示:

    1. 打开IntelliJ IDEA的主界面,展开上方菜单栏的"File"项,点击展开的子菜单中的"Settings...",会出现Settings弹出框。

      IDEA进入Settings

    2. 在Settings弹出框中,点击左侧菜单栏中的"Plugins",使弹出框切换到插件页面。在插件页面中,点击上方的"Marketplace"标签,而后再搜索框中输入"MaxCompute Studio",搜索框下方会出现搜索结果。点击MaxCompute Studio阿里云官方插件的"Install"按钮,开始插件的安装。

      安装MaxCompute Studio

    3. 插件安装完成后,会出现"Restart IDE"按钮,点击该按钮重启IDEA,便可使用MaxCompute Studio插件。下一步准备在IDEA中建立MaxCompute Studio项目,并链接到DataWorks中的MaxCompute项目。

      插件安装后重启IDEA

    4. 重启IDEA后,展开上方菜单栏的"File"项,在"File"项的子菜单中再次展开"New"项,点击"New"项的子菜单中的"Project..."项,会出现"New Project"弹出框。

      新建Project

    5. 在"New Project"弹出框的左侧菜单栏中点击"MaxCompute Studio",而后点击"Next"按钮,下一步设置项目名称和路径。

      建立MaxCompute Studio项目

    6. 自主填写项目名称到"Project name"中,自主选择项目保存路径到"Project location"中,而后点击"Finish"按钮,完成建立MaxCompute Studio项目,下一步将此项目链接到DataWorks中的MaxCompute项目。

      设置MaxCompute项目名称路径

    7. 在IntelliJ IDEA的主界面,展开上方菜单栏的"View"项,在"View"项的子菜单中再次展开"Tool Windows"项,点击"Tool Windows"项的子菜单中的"Project Explorer"项,会出现"Project Explorer"左侧边栏。

      打开Project Explorer

    8. 在侧边栏中,点击左上角的"+"图标,会出现"Add MaxCompute project"弹出框。在弹出框中,将正在使用的RAM帐号的AccessKey ID填入"Access Id"中,将正在使用的RAM帐号的AccessKey Secret填入"Access Key"中,将DataWorks工做空间名称填入"Project Name"中,而后点击"OK",完成MaxCompute项目的链接。成功链接后,即可以在IDEA界面左侧的"Project Explorer"边栏中查看链接到的MaxCompute项目的详情。

      链接到MaxCompute项目

    9. 在IntelliJ IDEA的主界面,展开上方菜单栏的"File"项,在"File"项的子菜单中再次展开"New"项,点击"New"项的子菜单中的"Module..."项,会出现"New Module"弹出框。

      建立JAVA Module入口

    10. 在"New Module"弹出框的左侧菜单中,点击"MaxCompute Java",在弹出框主页面中自主设置"Module SDK"为1.8版本的JDK,而后点击"Next",下一步设置Module名称。

      JAVA Module设置JDK

    11. 在"Module name"中自主填写模块名称,而后点击"Finish",完成MaxCompute Java模块的建立,在IDEA的"Project"侧边栏中会出现对应的目录结构。至此完成MaxCompute Studio插件的下载与配置。

      设置JAVA Module名称


9、使用MaxCompute Studio开发MapReduce功能的Java程序

  • 官方文档:开发MapReduce功能的Java程序

  • 步骤图示:

    1. 在IntelliJ IDEA主界面左侧菜单栏中点击"Project",展开"Project"侧边栏。在侧边栏中展开MaxCompute Studio项目的目录结构,找到MaxCompute Java模块的目录项,依次展开其下的"src"、"main"目录项,选中"main"目录结构下的"java"目录项,鼠标右击调出右键菜单。在右键菜单中展开"New"项,点击"New"项的子菜单中的"MaxCompute Java"项,会出现"Create new MaxCompute java class"弹出框。

      建立Driver入口

    2. 在"Create new MaxCompute java class"弹出框下方的菜单中点选"Driver"项,而后在弹出框的"Name"文本框中自主输入Driver名称(例如:MainDriver),按"Enter"键完成Driver文件的建立。

      建立Driver

    3. Driver建立完成后,在"Project"侧边栏中找到Driver文件,双击打开其编辑页面。在编辑页面中,能够看到自动生成了一些Java代码模板,而该Driver类中只有一个main方法,代表此Driver类是整个MapReduce功能的Java程序的入口。咱们用与建立Driver类一样的方式,建立Mapper类与Reducer类,而后根据MapReduce示例程序的官方文档,自主完成Driver类、Mapper类、Reducer类的开发,实现所需的功能(例如本次实践中进行了日志解析功能的实现),这里不深刻展开详细的过程。开发结束前,请自主进行本地测试,使程序经过本地编译和测试,确保功能可用。

      编辑Driver


10、将MapReduce功能程序打包上传为资源

  • 官方文档:打包、上传Java程序

  • 步骤图示:

    1. 完成MapReduce功能的Java程序开发后,要对程序进行打包得到JAR包。在IntelliJ IDEA主界面的"Project"侧边栏中选中Driver文件,鼠标右击调出右键菜单。在右键菜单中点击"Deploy to server...",会出现"Package a jar and submit resource"弹出框。

      打开Deploy to server

    2. 在"Package a jar and submit resource"弹出框中,因为以前已经配置过MaxCompute项目的链接,此时会自动填写各项参数,只需点击"OK"按钮,便可完成打包,下一步要将JAR包上传为资源。

      打包上传资源

    3. 在"Project"侧边栏中展开MaxCompute Java模块下的"target"目录项,在"target"目录结构中选中上一步生成的JAR包。而后展开主界面上方菜单栏中的"MaxCompute"项,点击展开的子菜单中的"添加资源",会出现"Add Resource"弹出框。

      IDEA添加资源

    4. 在"Add Resource"弹出框中,由于刚才选中了生成的JAR包,此时会自动填写各项参数,只需点击"OK"按钮,便可将JAR包添加为阿里云MaxCompute项目中的资源,下一步要将此资源添加到业务流程的资源文件夹中。

      IDEA添加资源确认

    5. 打开阿里云的"DataStudio(数据开发)"页面,展开页面左侧菜单栏中的"MaxCompute"项,点击"MaxCompute"菜单下的"MaxCompute资源",菜单栏右边的页面会切换到"MaxCompute资源"编辑页面。在"MaxCompute资源"编辑页面中选中刚才上传的JAR包资源,而后点击页面下方的"添加到数据开发"按钮,会出现"新建资源"弹出框。在"新建资源"弹出框中,参数"目标文件夹"里自主选择以前建立的业务流程,而后点击"新建"按钮,成功将Jar包添加到业务流程的资源中,下一步将资源进行提交。

      资源导入业务流程中

    6. 在DataWorks的"数据开发"页面中,展开当前业务流程的列表,在列表中依次展开"MaxCompute"、"资源"项,双击刚添加的JAR包资源,进入该资源的编辑页面,而后点击页面上方菜单栏中的提交按钮,会出现"提交新版本"弹出框。

      提交资源

    7. 在"提交新版本"弹出框中,自主填写"变动描述",而后点击"确认",完成资源的提交。资源提交成功后,在业务流程正式运行的时候,节点才能找到此资源。

      确认提交资源


11、建立并配置ODPS MR节点

  • 官方文档:建立ODPS MR节点

  • 步骤图示:

    1. 在阿里云的"DataStudio(数据开发)"页面中,点击左侧菜单栏中的"数据开发"项,菜单栏右边的页面会切换到"数据开发"页面。在"数据开发"页面中,展开"业务流程"列表,在"业务流程"列表中,双击目标业务流程,打开目标业务流程的编辑页面。在业务流程编辑页面的左侧菜单栏中双击"ODPS MR"项,会出现"新建节点"弹出框。在"新建节点"弹出框中,自主填写"节点名称",而后点击"提交"按钮,完成ODPS MR节点的建立。

      新建ODPS MR节点

    2. 完成ODPS MR节点的建立后,在业务流程的编辑页面中,双击刚建立的ODPS MR节点,进入ODPS MR节点的编辑页面。

      双击ODPS MR节点

    3. 在ODPS MR节点的编辑页面中,编辑区域的末尾添加一行代码:--@resource_reference{""}。并将光标放到两个双引号之间,下一步准备引入刚添加的资源。

      MR节点引用资源代码

    4. 在ODPS MR节点编辑页面左边的"数据开发"页面中,展开当前业务流程的列表,在列表中依次展开"MaxCompute"、"资源"项,选中刚添加的JAR包资源,鼠标右击调出右键菜单。在右键菜单中点击"引用资源",刚才ODPS MR节点编辑区域的光标所在位置就会自动添加引用资源的名称,并在编辑区域的开头自动生成一行代码,下一步准备添加一行调用JAR包资源运行的代码。

      MR节点引入资源

    5. 在编辑区域末尾,再添加一行调用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节点的代码编辑后,下一步准备进行其调度配置。

      MR节点编辑运行命令

    6. 在调度配置边栏中,对该ODPS MR节点的调度配置进行完善。在"基础属性"模块中,"责任人"选择当前登陆的RAM帐号;自主填写"描述";"参数"的填写内容上一步中已完成,再也不赘述。在"时间属性"模块中,自主选择"生成实例方式",为方便后面快速测试,这次实践选择"发布后即时生成";"时间属性"选择"正常调度";自主选择"重跑属性",一般选择"运行成功后不可重跑,运行失败后能够重跑";勾选"出错自动重跑",自主选择"出错自动重跑次数"、"出错自动重跑间隔",这次实践使用其默认配置的次数与间隔;自主选择"生效日期",这次实践使用其默认配置,让同步任务一直保持生效状态;因为这次实践但愿整个业务流程的运行周期间隔尽可能短一些,因此设置"调度周期"为"分钟","开始时间"设置为"00:00"(被限制只能设置整时),"时间间隔"设置为最短的"05","结束时间"设置为"23:59"(被限制只能设置小时),以确保该节点跨天也会每五分钟运行一次;自主选择"超时时间",这次实践选择"系统默认";不勾选"依赖上一周期",这样某一周期运行出错不会影响以后的运行周期。"资源属性"模块的"调度资源组"选择默认的"公共调度资源组"便可。"调度依赖"模块暂时不进行配置。"节点上下文"模块在这次实践中不须要配置。完成以上调度配置后,点击页面上方菜单栏的保存按钮,完成对ODPS MR节点的建立与配置。

      MR节点调度配置


12、关联各个节点

  • 官方文档:配置节点的调度和依赖属性

  • 步骤图示:

    1. 目前业务流程里总共建立并配置了三个节点:一个从MongoDB表到MaxCompute表的离线同步节点,用于获取日志数据,每次同步执行时间往前五分钟到执行时间的数据;一个从MaxCompute表到MaxCompute表的ODPS MR节点,用于解析日志数据,每次同步执行时间往前十分钟到执行时间往前五分钟的数据;一个从MaxCompute表到MongoDB表的离线同步节点,用于输出日志数据,每次同步执行时间往前十五分钟到执行时间往前十分钟的数据。本次实践中,这三个节点在业务流程中并行运行,互相之间不存在上下游关系,所以将这三个节点的父节点均设置为工做空间根节点便可。下面进行步骤演示,对三个节点执行一样的操做便可。首先选中一个节点双击,进入节点编辑页面。

      双击进入节点

    2. 在节点编辑页面右端展开"调度配置"边栏,而后在调度配置边栏的"调度依赖"模块下的参数项"依赖的上游节点"后面点击"使用工做空间根节点"按钮,下面的父节点列表中会自动添加一条工做空间根节点数据。而后点击页面上方菜单栏的提交按钮,会出现"请注意"弹出框。

      节点绑定工做空间根节点

    3. 在"请注意"弹出框中,点击"确认"保存修改。保存成功后,会出现"提交新版本"弹出框。

      节点提交确认保存

    4. 在"提交新版本"弹出框中,自主填写"变动描述",而后点击"确认",完成节点的提交。节点提交后,该节点就会正式运行,开始进行周期调度。至此完成将三个节点绑定到工做空间根节点下的操做,并将三个节点成功进行了提交。

      节点提交新版本


十3、提交业务流程并查看运行结果

  • 官方文档:节点运行及排错

  • 步骤图示:

    1. 上一步中,业务流程中的三个节点已经成功进行了提交并开始运行,而在业务流程编辑页面中,点击上方菜单栏的提交按钮,也能够对节点进行统一提交。

      业务流程提交

    2. 业务流程提交并运行后,咱们能够点击页面上方菜单栏中的前往运维按钮,或者页面右上角的"运维中心"连接,打开DataWorks的"运维中心(工做流)"页面,准备查看各个节点周期任务的运行结果。

      前往运维中心

    3. 在"运维中心(工做流)"页面左侧菜单栏中展开"周期任务运维"项,在子菜单中点击"周期实例",切换到周期实例列表页面。在周期实例列表页面上方搜索栏中,搜索条件的"业务日期"(业务日期为实际运行日期的前一天)选择"所有",勾选"个人出错节点",自主调整其余搜索选项,点击搜索栏右下角的"刷新"能够更新搜索结果。在下方周期实例列表中点选一个出错实例,列表右侧会出现该出错实例的详情页面。在详情页面中,点选目标出错节点,页面右下角会出现该节点信息的弹出框。在弹出框中点击查看日志,能够打开该出错节点运行时的日志详情页面。根据异常日志内容,咱们就能够找到出错缘由,进行对应的调整,确保整个业务流程的正常运行。

      查看出错节点


结语

  • 本次实践中,虽然购买使用了独享数据集成资源组,实际上使用公共数据集成资源组也可实现本实践的功能需求。若没有购买独享数据集成资源组,能将整个业务流程的成本降到最低,只需支付MaxCompute服务的流量费用。
  • 本次实践仅使用了阿里云的离线同步、离线计算功能,若是要使用实时同步、实时计算功能,一般须要购买开通相应的服务。
  • 使用RAM帐号操做过程当中,常常会出现权限不足的状况,这时候使用另外一种浏览器登陆主帐户,便可较为方便地在一台电脑上进行受权或购买阿里云服务,避免在一个浏览器上来回登陆。
  • 在实践过程当中常常会出现陌生的术语,或者找不到某一个需求对应的模块在哪里,或者操做过程当中遇到了错误进行不下去,能够多在阿里云关键字搜索页面中思考关键字查询对应的文档,实在解决不了,就提交工单咨询阿里云的技术人员便可。
相关文章
相关标签/搜索