MapReduce Executor

每次接收到事件记录时,MapReduce执行器都会在HDFS或MapR FS中启动MapReduce作业。将MapReduce执行器用作事件流的一部分。

您可以使用MapReduce执行器来启动自定义作业,例如用于比较文件中记录数的验证作业。您可以通过在执行器中配置自定义作业或使用预定义的配置对象来使用它。您还可以使用MapReduce执行器来启动预定义的作业。MapReduce执行器包括两个预定义的作业:一个将Avro文件转换为ORC文件,另一个将Avro文件转换为Parquet。

您可以以任何逻辑方式使用执行器,例如在Hadoop FS或MapR FS目标端关闭文件后运行MapReduce作业。例如,您可以在MapR FS目标端关闭文件后,使用Avro到ORC作业将Avro文件转换为ORC文件。或者,在Hadoop FS目标端关闭Hive漂移同步解决方案的一部分后,您可以使用Avro to Parquet作业将Avro文件转换为Parquet 。

注意: MapReduce执行器在外部系统中启动作业。它不监视作业或不等待作业完成。成功执行作业后,执行器即可进行其他处理。

配置MapReduce执行器时,可以指定连接信息和作业详细信息。对于预定义的作业,您可以指定Avro转换详细信息,例如输入和输出文件的位置,以及特定于ORC或Parquet的详细信息。对于其他类型的作业,您可以指定作业创建者或配置对象,以及要使用的作业配置属性。

必要时,您可以启用Kerberos身份验证并指定MapReduce用户。您还可以使用MapReduce配置文件,并根据需要添加其他MapReduce配置属性。

您还可以配置执行器以为另一个事件流生成事件。有关数据流触发器和事件框架的更多信息,请参见数据流触发器概述。

有关使用MapReduce执行器的案例研究,请参阅案例研究:Parquet转换。

先决条件

在运行包含MapReduce执行器的管道之前,必须启用MapReduce执行器才能提交作业。

您可以启用MapReduce执行器以几种不同的方式提交作业。执行以下任务之一,以使执行器可以提交作业:

配置YARN “Minimum User ID”属性min.user.id
min.user.id属性默认设置为1000。允许提交作业:

  1. 验证Data Collector用户正在使用的用户ID ,通常称为“sdc”。
  2. 在Hadoop中,配置YARN min.user.id属性。

    将该属性设置为等于或小于Data Collector用户ID。

配置YARN “Allowed System Users”属性allowed.system.users
allowed.system.users属性列出了允许的用户名。允许提交工作:

  1. 在Hadoop中,配置YARN allowed.system.users属性。

    Data Collector用户名(通常为“sdc”)添加到允许的用户列表中。

配置MapReduce执行器“MapReduce User”属性
在MapReduce执行器中,MapReduce用户属性允许您输入提交作业时要使用的阶段的用户名。允许提交工作:

  1. 在MapReduce执行器阶段,配置MapReduce用户属性。

    输入一个ID高于min.user.id属性的用户,或者输入一个在allowed.system.users属性中列出的用户名。

有关MapReduce用户属性的信息,请参阅《使用MapReduce用户》。

相关事件生成阶段

在管道的事件流中使用MapReduce执行器。MapReduce执行器旨在在写入输出文件后启动MapReduce作业。

使用MapReduce执行器对以下目标端写入的文件执行后处理:

  • Hadoop FS目标端
  • MapR FS目标端

MapReduce作业和作业配置属性

MapReduce执行器可以运行必须配置的自定义作业,也可以运行该执行器提供的预定义作业。

配置自定义作业时,可以指定作业创建者和作业配置属性,也可以使用自定义配置对象并指定作业配置属性。

使用预定义的作业时,可以指定作业,Avro转换详细信息以及与作业相关的属性。

配置作业配置属性时,可以指定键值对。您可以在键值对中使用表达式。

Parquet和ORC的预定义作业

MapReduce执行器包括两个预定义的作业:Avro到ORC和Avro到Parquet。

Avro到ORC作业将Avro文件转换为ORC文件。Avro到Parquet作业将Avro文件转换为Parquet。两个作业都会在Avro文件写入后进行处理。即,目标端完成了Avro文件的写入并生成了事件记录。事件记录包含有关文件的信息,包括文件的名称和位置。当MapReduce执行器收到事件记录时,它将启动所选的预定义MapReduce作业。

使用预定义作业时,可以配置输入文件信息和输出目录,是否保留输入文件以及是否覆盖临时文件。

默认情况下,对于输入文件,MapReduce执行器使用事件记录的“filepath”字段中的文件名和位置,如下所示:

${record:value('/filepath')}

执行器将输出文件写入指定的输出目录。执行器使用已处理的输入文件名作为输出文件名的基础,并根据作业类型添加 .parquet.orc

使用Avro到ORC作业时,可以在“Avro to ORC”选项卡上指定ORC批处理大小。要指定其他作业信息,请在“Job”选项卡上添加作业配置属性。有关您可能要使用的属性的信息,请参见Hive文档

使用Avro到Parquet作业时,可以在“Avro to Parquet”选项卡上指定作业特定的属性。您可以通过在“Job”选项卡上添加作业配置属性来指定其他作业信息。

事件生成

MapReduce执行器可以生成可在事件流中使用的事件。启用事件生成后,执行器每次启动MapReduce作业时都会生成事件。

MapReduce执行器事件可以任何逻辑方式使用。例如:

  • 使用电子邮件执行器在收到事件后发送自定义电子邮件。

    有关示例,请参阅案例研究:发送电子邮件。

  • 具有用于存储事件信息的目标端。

    有关示例,请参阅案例研究:事件存储。

有关数据流触发器和事件框架的更多信息,请参见数据流触发器概述。

事件记录

由MapReduce执行器生成的事件记录具有以下与事件相关的记录头属性。记录头属性存储为字符串值:

记录头属性 描述
sdc.event.type 事件类型。使用以下类型之一:

  • job-created – 在执行器创建并启动MapReduce作业时生成。
sdc.event.version 整数,指示事件记录类型的版本。
sdc.event.creation_timestamp 阶段创建事件的时间戳记。

MapReduce执行器生成的事件记录具有以下字段:

事件栏位名称 描述
tracking-url MapReduce作业的跟踪URL。
job-id MapReduce作业的作业ID。

Kerberos身份验证

您可以使用Kerberos身份验证连接到Hadoop服务,例如HDFS或YARN。使用Kerberos身份验证时,Data Collector使用Kerberos主体和密钥表进行身份验证。默认情况下,Data Collector使用启动它的用户帐户进行连接。

Kerberos主体和密钥表在Data Collector配置文件$SDC_CONF/sdc.properties中定义。要使用Kerberos身份验证,请在Data Collector配置文件中配置所有Kerberos属性,然后在MapReduce执行器中启用Kerberos。

有关为Data Collector启用Kerberos身份验证的详细信息,请参阅Kerberos身份验证。

使用MapReduce用户

Data Collector可以使用当前登录的Data Collector用户或在执行器中配置的用户来提交作业。

可以设置需要使用当前登录的Data Collector用户的Data Collector配置属性 。如果未设置此属性,则可以在源中指定一个用户。有关Hadoop模拟和Data Collector属性的更多信息,请参见Hadoop模拟模式。

请注意,执行器使用其他用户帐户进行连接。默认情况下,Data Collector使用启动它的用户帐户连接到外部系统。使用Kerberos时,Data Collector使用Kerberos主体。

要在执行器中配置用户,请执行以下任务:

  1. 在外部系统上,将用户配置为代理用户,并授权该用户模拟MapReduce用户。

    有关更多信息,请参见MapReduce文档。

  2. 在MapReduce执行器的MapReduce选项卡上,配置MapReduce用户属性。

配置一个MapReduce执行器

配置一个MapReduce执行器,使其在每次执行器收到事件记录时启动MapReduce作业。

  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Stage Library 您要使用的库版本。
    Produce Events 发生事件时生成事件记录。用于事件处理。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

  2. 在“MapReduce”选项卡上,配置以下属性:
    MapReduce属性 描述
    MapReduce Configuration Directory 包含Hive和Hadoop配置文件的目录的绝对路径。对于Cloudera Manager安装,请输入hive-conf。

    该阶段使用以下配置文件:

    • core-site.xml
    • yarn-site.xml
    • mapred-site.xml
    注意:配置文件中的属性被此阶段定义的单个属性覆盖。
    MapReduce Configuration

    要使用的其他属性。

    要添加属性,请单击“添加”并定义属性名称和值。使用HDFS或MapR FS期望的属性名称和值。

    MapReduce User

    用于连接到外部系统的MapReduce用户。使用此属性时,请确保正确配置了外部系统。

    未配置时,管道将使用当前登录的Data Collector用户。

    将Data Collector配置为使用当前登录的Data Collector用户时,不可配置。有关更多信息,请参阅Hadoop模拟模式。

    Kerberos Authentication 使用Kerberos凭据连接到外部系统。

    选中后,将使用Data Collector配置文件$SDC_CONF/sdc.properties中定义的Kerberos主体和密钥表。

  3. 在“Jobs选项卡上,配置以下属性:
    作业性质 描述
    Job Name MapReduce作业的显示名称。

    此名称显示在Hadoop Web应用程序和列出MapReduce作业的其他报告工具中。

    Job Type 要运行的MapReduce作业类型:

    • Custom-使用自定义作业创建者界面和作业配置属性来定义作业。
    • Configuration Object-使用配置对象和作业配置属性来定义作业。
    • Convert Avro to Parquet-使用预定义的作业将Avro文件转换为Parquet。指定Avro转换属性,并可以选择配置作业的其他作业配置属性。
    • Convert Avro to ORC-使用预定义的作业将Avro文件转换为ORC文件。指定Avro转换属性,并可以选择配置作业的其他作业配置属性。
    Custom JobCreator MapReduce Job Creator界面用于自定义作业。
    Job Configuration 配置属性的键/值对,用于定义作业。您可以在键和值中使用表达式。

    使用简单或批量编辑模式,单击添加图标以添加其他属性。

  4. 使用预定义的作业时,单击“Avro Conversion 选项卡,然后配置以下属性:
    Avro转换属性 描述
    Input Avro File 该表达式的计算结果为要处理的Avro文件的名称和位置。

    默认情况下,使用事件记录的filepath字段中指定的名称和位置处理文件。

    Keep Input File 将处理后的Avro文件保留在原位。默认情况下,执行器将在处理后删除文件。
    Output Directory 写入生成的ORC或Parquet文件的位置。使用绝对路径。
    Overwrite Temporary File 启用该选项以覆盖先前作业运行后剩余的所有现有临时文件。
  5. 要使用从Avro到Parquet作业,请单击“Avro to Parquet”选项卡,然后配置以下属性:
    Avro to Parquet属性 描述
    Compression Codec 要使用的压缩编解码器。如果您不输入压缩代码,则执行器将为Parquet使用默认的压缩编解码器。
    Row Group Size Parquet行组大小。使用-1来使用Parquet默认值。
    Page Size Parquet页面大小。使用-1来使用Parquet默认值。
    Dictionary Page Size Parquet字典页面大小。使用-1来使用Parquet默认值。
    Max Padding Size Parquet的最大填充尺寸。使用-1来使用Parquet默认值。
  6. 要使用Avro到ORC作业,请单击“Avro to ORC”选项卡,然后配置以下属性:
    Avro to ORC属性 描述
    ORC Batch Size 一次写入ORC文件的最大记录数。