全部产品
Search
文档中心

大数据开发治理平台 DataWorks:基于Lindorm计算引擎进行任务开发

更新时间:Sep 20, 2024

Lindorm计算引擎兼容CDH(Cloudera's Distribution Including Apache Hadoop)。您可在DataWorks上通过注册CDH集群并配置Lindorm计算引擎连接信息的方式,在DataWorks上基于Lindorm计算引擎进行交互式SQL查询、SQL任务开发、JAR任务执行等。本文为您介绍如何在DataWorks通过注册CDH集群来访问Lindorm计算引擎,并基于Lindorm计算引擎进行各类任务的开发、调度及运维。

背景信息

Lindorm计算引擎是基于云原生架构的分布式计算服务,支持社区版计算模型、兼容Spark接口、深度融合Lindorm存储引擎特性;能够利用底层数据存储特征及索引能力,高效地完成分布式作业任务;可用于海量数据生产、交互式分析、计算学习和图计算等场景。

前提条件

在DataWorks基于Lindorm计算引擎进行任务开发前,您需完成以下操作:

  • 已创建Lindorm实例并开通Lindorm计算引擎。DataWorks需基于该引擎执行相关任务开发操作。详情请参见开通计算引擎

  • 已创建CDH集群并注册至DataWorks。DataWorks通过注册CDH集群的方式,访问Lindorm计算引擎数据。详情请参见注册CDH或CDP集群至DataWorks

    注册CDH集群时,集群连接信息需要配置为Lindorm计算引擎的链接信息,且集群版本选择为6.3.2版本,您只需正确填写HiveServer2以及Metastore的配置信息即可,其他配置可以留空。image

  • 已创建业务流程。DataWorks的数据开发(DataStudio)基于业务流程执行不同引擎的具体开发操作,您可在业务流程中按需编排任务流,以直观查看任务间的依赖关系。详情请参见创建业务流程

步骤一:开发Lindorm计算引擎任务

本文为您介绍使用SQL方式及JAR方式进行任务开发。

SQL方式(单击即可展开查看详情)

编排任务流

双击已创建的业务流程,将所需节点拖拽至业务流程面板,配置节点基础信息并通过连线方式规划节点的上下游依赖。本文示例编排的任务流如下。image

  • 虚拟节点(Vi):作为业务流程中任务的起始节点,统一调起业务流程中的任务。

  • CDH Hive节点:本文用于基于Lindorm计算引擎执行SQL任务。

编写任务代码

示例在CDH Hive节点使用Spark SQL语法开发SQL作业。

说明

支持Serverless资源组(推荐)或旧版独享调度资源组运行CDH Hive任务。

  1. 双击业务流程中的CDH Hive节点,进入节点编辑页面。

    本文需依次单击创建的A、B、C三个节点,配置节点任务。

  2. (可选)配置引擎参数。

    Lindorm计算引擎支持自定义常用的Spark配置项,包括资源配置项、执行配置项和监控配置项。例如,SET spark.executor.cores=2;,您可根据业务需要配置相关参数。详细参数介绍,请参见作业配置说明

    说明

    引擎参数配置语句必须写在SQL任务语句之前。

  3. 编写任务代码。

    开发SQL代码:简单示例

    在CDH Hive节点的SQL编辑区域输入任务代码,示例如下。更多Lindorm支持的SQL语法,请参见Spark SQL

    CREATE TABLE test
    (
        id    INT
        ,name STRING
    );
    
    INSERT INTO test VALUES
            (1,'jack');
    
    SELECT  * from test;

    开发SQL代码:使用调度参数示例

    DataWorks提供调度参数,可实现调度场景下代码动态入参,您可在节点中通过${变量名}的方式定义代码中的变量,并在调度配置>参数处,为该变量赋值。

    select '${var}'; --可以结合调度参数使用。

    本文任务示例代码

    • 节点A的任务代码如下。image

      CREATE TABLE IF NOT EXISTS tableA (
        id INT,
        name STRING,
        data STRING
      )
      USING parquet
      PARTITIONED BY (partition_date DATE);
      
      INSERT OVERWRITE TABLE tableA PARTITION (partition_date='${var}')
      VALUES (1, 'Alice', 'Sample data 1'), (2, 'Bob', 'Sample data 2');
    • 节点B的任务代码如下。image

      CREATE TABLE  IF NOT EXISTS tableB (
          id INT,
        name STRING,
        data STRING
      )
      USING parquet
      PARTITIONED BY (partition_date DATE);
      
      INSERT OVERWRITE TABLE  tableB PARTITION (partition_date)
      SELECT * FROM tableA WHERE partition_date='${var}';
    • 节点C的任务代码如下。image

      CREATE TABLE IF NOT EXISTS tableC
      (
          id    INT
          ,name STRING
          ,data STRING
      )
      USING parquet
      PARTITIONED BY (partition_date DATE);
      
      INSERT OVERWRITE TABLE tableC PARTITION (partition_date)
      SELECT * FROM tableB WHERE partition_date='${var}';

JAR方式(单击即可展开查看详情)

示例在DataWorks Shell节点内通过Curl的方式将JAR作业提交至Lindorm Spark计算引擎上执行。

JAR作业模板

# 在Lindorm服务上提交一个作业。
curl --location --request POST 'http://ld-uf6y6d74hooeb****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/xxxxxx' --header 'Content-Type:application/json' --data '{
"owner":"root",
"name":"LindormSQL",
"mainResourceKind":"jar",
"mainClass":"your_project_main_class",
"mainResource":"hdfs:///ldps-user-resource/ldps-ldps-lindorm-spark-examples-1.0-SNAPSHOT.jar",
"mainArgs":[],
"conf":{
    }
}' 

核心参数说明如下。

参数

描述

URL

计算引擎的JAR地址。可进入Lindorm管理控制台获取,详情请参见查看连接地址

示例格式为:http://ld-uf6y6d74hooeb****-proxy-ldps.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/xxxxxx'

  • http://ld-uf6y6d74hooeb****-proxy-ldps.lindorm.aliyuncs.com:10099:表示专有网络地址。

  • xxxxxx:表示Token。

mainClass

JAR作业的程序入口类。

mainResource

JAR包存储在HDFS的路径。

mainArgs

传入mainClass参数。

conf

Spark系统参数配置。详情请参见作业配置说明

JAR作业示例

  1. 开发JAR作业。

    您可参考JAR作业开发实践进行JAR作业开发。同时,平台也为您提供了已打包好的JAR作业ldps-lindorm-spark-examples-1.0-SNAPSHOT.jar,您可直接获取进行任务测试。

  2. 上传JAR包至HDFS。

    进入Lindorm控制台,将上述JAR包上传至HDFS,详情请参见通过控制台上传文件

  3. 在DataWorks提交及查看作业。

    1. 创建Shell节点。

      右键单击创建的业务流程,选择新建节点 > 通用 > Shell,配置节点名称,单击确认

    2. 在节点编辑页面编写任务代码。

      • 通过Curl提交作业。示例代码如下。

        curl --location --request POST http://ld-bp19xymdrwxxxxx-proxy-ldps-pub.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/xxxx --header "Content-Type:application/json" --data '{
        "owner":"root",
        "name":"LindormSQL",
        "mainResourceKind":"jar",
        "mainClass":"com.aliyun.lindorm.ldspark.examples.SimpleWordCount",
        "mainResource":"hdfs:///ldps-user-resource/ldps-lindorm-spark-examples-1.0-SNAPSHOT.jar",
        "mainArgs":[],
        "conf":{
        }
        }'
      • 查看作业信息。示例代码如下。

        curl --request GET 'http://ld-bp19xymdrwxxxxx-proxy-ldps-pub.lindorm.aliyuncs.com:10099/api/v1/lindorm/jobs/xxxx'

步骤二:配置任务调度

如您需周期性执行创建的节点任务,可单击节点编辑页面右侧的调度配置,根据业务需求配置该节点任务的调度信息。详情请参见任务调度属性配置概述

说明

您需要设置节点的重跑属性依赖的上游节点,才可提交节点。

步骤三:调试任务代码

根据需要执行如下操作,查看任务是否符合预期。

说明

您也可在业务流程面板,单击image图标,调试整个业务流任务。

  1. (可选)选择运行资源组、赋值自定义参数取值。

    • 单击工具栏的高级运行图标,在参数对话框选择调试运行需使用的调度资源组。

    • 如您的任务代码中有使用调度参数变量,可在此处为变量赋值,用于调试。参数赋值逻辑,详情请参见任务调试流程

  2. 保存并运行任务代码。

    单击工具栏的保存图标,保存编写的任务代码,单击运行图标,运行创建的任务。

  3. (可选)冒烟测试。

    如您希望在开发环境进行冒烟测试,查看调度节点任务的执行是否符合预期,则可在节点提交时,或节点提交后执行冒烟测试,操作详情请参见执行冒烟测试

步骤四:提交发布任务

节点任务配置完成后,需执行提交发布操作,提交发布后,节点会根据调度配置内容进行周期性运行。

说明

您也可在业务流程面板,单击image图标,提交整个业务流任务。

  1. 单击工具栏中的保存图标,保存节点。

  2. 单击工具栏中的提交图标,提交节点任务。

    提交时需在提交对话框中输入变更描述,并根据需要选择是否在节点提交后执行代码评审。

    说明
    • 您需设置节点的重跑属性依赖的上游节点,才可提交节点。

    • 代码评审可对任务的代码质量进行把控,防止由于任务代码有误,未经审核直接发布上线后出现任务报错。如进行代码评审,则提交的节点代码必须通过评审人员的审核才可发布,详情请参见代码评审

如您使用的是标准模式的工作空间,任务提交成功后,需单击节点编辑页面右上方的发布,将该任务发布至生产环境执行,操作请参见发布任务

后续操作

任务运维

任务提交发布后,会基于节点的配置周期性运行,您可单击节点编辑界面右上角的运维,进入DataWorks的运维中心查看周期任务的调度运行情况。详情请参见查看并管理周期任务

数据管理

您可在DataWorks的数据地图,将通过Lindorm计算引擎创建的表元数据采集至DataWorks进行统一管理。

  1. 采集元数据:在数据地图查看元数据前,您需要先创建元数据采集器,详情请参见CDH Hive数据抽样采集器

  2. 查看元数据:在数据地图,您可查看元数据的基础信息、字段信息等,详情请参见查看表详情