DataWorks 提供了与CDH(Cloudera’s Distribution Including Apache Hadoop,以下简称CDH) 集群对接的能力,在保留继续使用CDH集群作为存储和计算引擎的前提下,您可以使用DataWorks的任务开发、调度、数据地图(元数据管理)和数据质量等一系列的数据开发和治理功能。本文为您介绍如何对接使用CDH。

前提条件

  • 已在阿里云ECS云服务上部署CDH集群,并配置完成CDH集群所在的VPC网络、安全组等网络配置。
  • 已开通DataWorks服务并创建好对接使用CDH的工作空间。
    说明 对接使用CDH的工作空间无需绑定计算引擎,在创建工作空间时可跳过选择引擎步骤,其他步骤的操作详情可参见创建工作空间
  • 拥有一个有工作空间的管理员权限的账号,在DataWorks中新增CDH引擎配置的操作仅空间管理员可操作。为账号授权空间管理员权限的操作可参见添加成员
  • 已购买并创建DataWorks的独享调度资源组。详情可参见独享资源组模式
在DataWorks中对接使用CDH引擎时,主要配置流程为:
  1. Step1:获取CDH集群配置信息
  2. Step2:配置网络联通
  3. Step3:在DataWorks中新增CDH集群配置

对接配置完成后,您可在DataWorks上开发CDH引擎的数据开发任务并运行,并在运行后通过DataWorks的运维中心查看任务运行情况。详情可参见使用DataWorks进行数据开发运维监控配置

同时您可使用DataWorks的数据质量、数据地图功能,进行数据和任务管理。详情可参见数据质量规则配置数据地图配置

使用限制

  • 在DataWorks中使用CDH相关功能,必须使用DataWorks的独享调度资源组。
  • DataWorks当前仅支持对接使用阿里云ECS部署的CDH集群。
  • 当前仅支持独享调度资源组与部署CDH集群的ECS绑定统一地域的同一个VPC网络。
  • 当前使用DataWorks的数据地图功能采集CDH引擎中的元数据等信息时,仅支持采集Hive数据库。

Step1:获取CDH集群配置信息

  1. 获取CDH版本信息,用于后续DataWorks中新增CDH引擎配置。
    登录Cloudera Manager,在主界面集群名称旁可查看当前部署的CDH集群版本,如下图所示。cdh版本信息
  2. 获取Host地址与组件地址信息,用于后续DataWorks中新增CDH引擎配置。
    • 方式一:使用DataWorks JAR包工具获取。
      1. 登录Cloudera Manager,下载工具JAR包。
        wget https://dataworks-public-tools.oss-cn-shanghai.aliyuncs.com/dw-tools.jar
      2. 运行工具JAR包。
        export PATH=$PATH:/usr/java/jdk1.8.0_181-cloudera/bin
        java -jar dw-tools.jar <user> <password>
        其中<user><password>分别是Cloudera Manager的用户名和密码。
      3. 在运行结果中查看并记录CDH的Host地址和组件地址信息。组件信息
    • 方式二:在Cloudera Manager页面手动查看。
      登录Cloudera Manager,在主机(Hosts)下拉菜单中选择角色(Roles),根据关键字和图标识别出需要配置的服务,然后看左侧对应的主机(Host),按照格式补全要填写的地址。默认端口号可以参考方法一的输出结果样例。方法二其中
      • HS2:HiveServer2
      • HMS:Hive Metastore
      • ID:Impala Daemon
      • RM:YARN ResourceManager
  3. 获取配置文件,用于后续上传至DataWorks。
    1. 登录Cloudera Manager。
    2. 状态页面,单击集群的下拉菜单中的查看客户端配置 URL
      配置文件
    3. 在对话框中下载YARN的配置包。
      配置文件2
  4. 获取CDH集群的网络信息,用于后续与DataWorks的独享调度资源组网络联通配置。
    DataWorks当前仅支持对接使用阿里云ECS部署的CDH集群。
    1. 登录部署CDH集群的ECS控制台
    2. 在实例列表中找到部署CDH集群的ECS实例,在实例详情中查看并记录安全组专有网络虚拟交换机信息。
      查看ECS的网络信息

Step2:配置网络联通

DataWorks的独享调度资源组购买创建完成后,默认与其他云产品网络不可达,在对接使用CDH时,您需获取部署CDH集群的网络信息,将独享调度资源组绑定至CDH集群所在的VPC网络中,保障CDH集群与独享调度资源组的网络联通。

  1. 进入独享资源组网络配置页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击资源组列表,默认进入独享资源组页签。
    3. 单击已购买的独享调度资源组后的网络设置
  2. 绑定VPC。
    专有网络绑定页签,单击新增绑定,在配置页面选择上述步骤4记录的CDH集群所在VPC、交换机、安全组。
  3. 配置Host。
    Host配置页签,单击批量修改,在对话框中配置为上述步骤2中记录的Host地址信息。host配置

Step3:在DataWorks中新增CDH集群配置

只有工作空间管理员才能进行新增CDH集群配置操作,操作时请使用拥有空间管理员权限的账号。

  1. 进入项目空间管理页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 在对应工作空间的操作列单击工作空间配置
    4. 在右侧配置页面中单击更多设置
  2. 在项目空间管理页面,单击CDH 集群配置
    cdh集群
  3. CDH集群配置页面单击立即新增,在新增CDH集群配置对话框中,填写上述步骤对接使用CDH中记录的组件地址信息。
    集群信息其中:
    • 集群名称:可自定义集群名称。
    • 版本信息:根据实际情况选择对应的CDH和组件版本。
    • 地址信息:根据上述步骤中记录的地址信息填写。其中:
      • Yarn的jobhistory.webapp.address信息:yarn.resourcemanager.address地址的端口修改为8088即为jobhistory.webapp.address
      • Presto的JDBC地址:Presto非CDH默认组件,需要根据实际部署情况填写访问地址。
  4. 上传配置文件并授权给其他工作空间。
    上传配置文件
  5. 单击确定,完成新增CDH集群配置。
    完成新增CDH集群配置后,已授权的工作空间中可新增此CDH引擎,用于后续编辑并运行数据开发等任务。

Step4:在DataWorks中新增CDH引擎

  1. 在项目空间管理页面,单击工作空间配置
  2. 计算引擎信息区域的CDH页签单击新增实例,在弹窗中配置实例信息。
    实例
    1. 填写实例显示名称
    2. 选择上述新增的CDH集群配置。
    3. 设置访问集群的认证信息。
      当前仅支持指定特定账号,建议使用admin账号,密码一般不用填写。
    4. 选择已经购买好的独享调度资源组。
    5. 单击测试连通性
      如果网络连通测试失败,可能是因为独享调度资源组没有绑定CDH集群所在的专有网络,或者独享调度资源组没有设置Host,请参见Step2:配置网络联通检查独享调度资源组的网络配置。
  3. 单击确定,创建计算引擎实例。
    此步骤会触发独享调度资源组的初始化(安装访问CDH集群的客户端以及上传配置文件),您需要等待独享资源组初始化状态准备中变成完成,CDH引擎实例才创建完成。
  4. 在创建的CDH引擎实例页面单击测试服务连通性,DataWorks会运行测试任务测试客户端和配置文件是否正确安装。
    如果测试结果显示失败,您可以查看日志并提交工单联系DataWorks技术支持。

使用DataWorks进行数据开发

完成新增CDH引擎后,您就可以在DataStudio(数据开发)中创建Hive、Spark、MapReduce、Impala或者Presto任务节点,直接运行任务或者设置周期调度运行任务。以下以创建并运行一个Hive任务为例,为您介绍在DataWorks中如何进行CDH引擎的数据开发和运行。

  1. 进入DataStudio页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 在对应工作空间的操作列单击进入数据开发
  2. 创建业务流程,根据界面提示填写业务流程信息。
  3. 单击创建好的业务流程,在CDH引擎文件夹上右键选择新建 > CDH Hive
    cdh hive
  4. 在右侧代码编辑框中编写Hive SQL,完成代码编辑后单击顶部运行运行图标,选择调度资源组并确认,运行完毕后可以查看Hive SQL的运行结果。
  5. 如果想要设置任务周期调度,单击右侧的调度配置,在弹窗中设置时间属性、资源属性和调度依赖,完成后单击提交任务,提交成功后任务就可以按照配置周期调度运行,调度配置详情可参见 基础属性
  6. 在运维中心中可以查看提交的周期任务,在周期实例中查看任务周期调度的运行情况。详细可参见查看周期任务

运维监控配置

CDH引擎的任务支持使用DataWorks运维中心的智能监控功能,通过自定义报警规则、配置任务告警,根据设置的报警规则自动触发任务运行异常报警。自定义报警规则操作可参见管理自定义规则,配置任务告警操作可参见基线管理

数据质量规则配置

在DataWorks上使用CDH引擎时,可使用DataWorks的数据质量服务进行数据查、对比、质量监控、SQL扫描和智能报警等功能,数据质量服务的详细操作可参见概述

数据地图配置

在DataWorks上使用CDH引擎时,可使用DataWorks的数据地图服务采集CDH集群中Hive数据库、表、字段、分区元数据,便于实现全局数据检索、元数据详情查看、数据预览、数据血缘和数据类目管理等功能。
说明 当前仅支持Hive数据库。
DataWorks上数据地图功能的详细介绍与配置指导可参见概述

如果要您希望可以实时感知CDH集群中Hive元数据的变更,或者要在数据地图中查看血缘和元数据变更记录,需要将DataWorks的Hive Hook 嵌入到目标集群,并通过阿里云日志服务采集Hive Hook产生的日志。

配置Hive Hook后,元数据变更消息会被记录到HS2和HMS服务器的日志文件/tmp/hive/hook.event.*.log中,使用阿里云日志服务采集后供DataWorks读取,下载DataWorks小工具dw-tools.jar,在同一目录下创建config.json文件并补全配置项的值,最后执行工具一键创建日志采集。

配置Hive Hook和采集Hive Hook日志的操作步骤如下。

  1. 配置Hive Hook。
    1. 登录HS2和HMS服务器,并进入/var/lib/hive目录,下载DataWorks Hive Hook。
      # CDH 6.x 版本下载 dataworks-hive-hook-2.1.1.jar
      wget https://dataworks-public-tools.oss-cn-shanghai.aliyuncs.com/dataworks-hive-hook-2.1.1.jar
      # CDH 5.x 版本下载 dataworks-hive-hook-1.1.0-cdh5.16.2.jar
      wget https://dataworks-public-tools.oss-cn-shanghai.aliyuncs.com/dataworks-hive-hook-1.1.0-cdh5.16.2.jar
    2. 登录Cloudera Manager首页后,进入Hive > 配置 ,把Hive辅助JAR目录配置项设置为/var/lib/hive
    3. Hive > 配置 中,将hive-site.xml的Hive服务高级配置代码段(安全阀) 配置项添加以下内容。
      <property>
        <name>hive.exec.post.hooks</name>
        <value>com.cloudera.navigator.audit.hive.HiveExecHookContext,org.apache.hadoop.hive.ql.hooks.LineageLogger,com.aliyun.dataworks.meta.hive.hook.LineageLoggerHook</value>
      </property>
    4. Hive > 配置 中,将hive-site.xml的Hive Metastore Server高级配置代码段(安全阀) 配置项添加以下内容。
      <property>
        <name>hive.metastore.event.listeners</name>
        <value>com.aliyun.dataworks.meta.hive.listener.MetaStoreListener</value>
      </property>
      <property>
        <name>hive.metastore.pre.event.listeners</name>
        <value>com.aliyun.dataworks.meta.hive.listener.MetaStorePreAuditListener</value>
      </property>
    5. 配置完成后,根据Cloudera Manager的提示部署客户端配置,然后重启Hive服务。
      说明 如果重启失败,保留日志用于排查问题,为防止影响正常作业可以先去掉上面两个步骤添加的配置再重启恢复Hive服务。如果添加配置后重启成功,查看服务器/tmp/hive/ 下是否产生名称以hook.event 开头的日志文件,例如hook.event.1608728145871.log
  2. 采集Hive Hook日志。
    1. 登录Cloudera Manager,下载工具JAR包。
      wget https://dataworks-public-tools.oss-cn-shanghai.aliyuncs.com/dw-tools.jar
    2. 在小工具所在目录创建config.json,根据以下文件内容要求修改并保存文件。
      // config.json
      {
          "accessId": "<accessId>",
          "accessKey": "<accessKey>",
          "endpoint": "cn-shanghai-intranet.log.aliyuncs.com",
          "project": "onefall-test-pre",
          "clusterId": "1234",
          "ipList": "192.168.0.1,192.168.0.2,192.168.0.3"
      }
      其中:
      • accessId:阿里云账号的AccessKey ID。
      • accessKey:阿里云账号的AccessKey Secret。
      • endpoint:填写为日志服务project的访问域名中的私网域名,详细可参见服务入口
      • project:填写为使用的阿里云日志服务的project名称,您可参见管理Project获取日志服务的project名称。
      • clusterId:填写为DataWorks生成的CDH集群ID,可以提交工单获取此ID。
      • ipList:填写为HS2和HMS的所有服务器的IP列表(即部署了DataWorks Hive Hook的所有服务器IP),多个IP使用英文逗号(,)分隔。
    3. 运行配置文件。
      java -cp dw-tools.jar com.aliyun.dataworks.tools.CreateLogConfig config.json
    4. 安装客户端。
      wget http://logtail-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/linux64/logtail.sh -O logtail.sh; chmod 755 logtail.sh; ./logtail.sh install cn-shanghai
      其中cn-shanghai改为日志服务对应的Region。
  3. 完成上述步骤后,在阿里云日志服务的指定project下会生成名为hive-event日志库、名为hive-event-config的logtail配置以及名为hive-servers的机器组。您可以查看并记录阿里云账号ID、日志服务的endpoint和project信息,将这些信息通过提交工单提供给DataWorks技术人员,由技术人员进行后续的配置。