Hadoop FS

支持的管道类型:

  •  Data Collector

Hadoop FS源端使用Hadoop FileSystem接口从Hadoop分布式文件系统(HDFS)、Amazon S3或其他文件系统读取数据。

仅在为以下集群模式之一配置的管道中使用此源:

Cluster batch mode
集群批处理模式管道使用Hadoop FS源,并在Cloudera Hadoop发行版(CDH)或Hortonworks Data Platform(HDP)集群上运行,以使用Hadoop FileSystem接口处理来自HDFS、Amazon S3或其他文件系统的数据。
Cluster EMR batch mode
集群EMR批处理模式管道使用Hadoop FS源,并在Amazon EMR群集上运行以处理来自Amazon S3的数据。

有关集群管道的更多信息,请参见集群管道概述。要以独立执行模式从HDFS读取,请使用Hadoop FS Standalone源。

在配置Hadoop FS源时,可以为要读取的数据指定输入路径和数据格式。您可以配置源以从所有子目录读取,并为包含多个对象的记录生成单个记录。

源端基于所有Hadoop支持的压缩编解码器的文件扩展名读取压缩数据。

必要时,您可以启用Kerberos身份验证。您还可以指定一个Hadoop用户来模拟,定义Hadoop配置文件目录并根据需要添加Hadoop配置属性。

Hadoop FS源端生成记录头属性,使您能够在管道处理中使用记录的源。

从Amazon S3读取

集群批处理或集群EMR批处理管道中包含的Hadoop FS源使您可以从Amazon S3中读取。

要从Amazon S3读取,请在配置Hadoop FS源时为Amazon S3指定适当的URI。在URI中使用s3a模式。S3A是开放源代码Hadoop维护的活动连接器,并且是与Hadoop和Amazon S3一起使用的唯一连接器。

将URI配置为指向要读取的Amazon S3存储桶,如下所示:

s3a://<bucket>

例如:

s3a://WebServer

然后在Input Paths属性中,输入要在该Amazon S3存储桶中读取的数据的完整路径。您可以为“Input Paths”属性输入多个路径,如下所示:

有关使用Hadoop FS源从Amazon S3读取时的其他要求,请参阅 Amazon S3要求。

从其他文件系统读取

集群批处理管道中包含的Hadoop FS源使您可以使用Hadoop FileSystem接口从HDFS以外的文件系统读取数据。

例如,如果源系统已安装Hadoop FileSystem接口,则可以使用Hadoop FS源从Microsoft Azure Data Lake Storage中读取数据以用于集群批处理管道。

要从HDFS以外的文件系统读取,请执行以下步骤:

  1. 确保文件系统上安装了Hadoop FileSystem接口。
  2. 将所有必需的文件系统应用程序JAR文件安装为您使用的Hadoop FS阶段库的外部库。请参阅文件系统文档以获取有关要安装的文件的详细信息。有关安装外部库的说明,请参阅“安装外部库”。
  3. 配置Hadoop FS源时,请为源系统指定适当的URI。例如,可以使用adls:// <authority>代替hdfs:// <authority>来连接到Azure Data Lake Storage。

Kerberos身份验证

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

注意:从Amazon S3读取的集群EMR批处理模式管道目前不支持Kerberos身份验证。

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

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

使用Hadoop用户

Data Collector 可以使用当前登录的Data Collector用户或在 Hadoop FS来源中配置的用户来读取HDFS。

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

请注意,源端使用不同的用户帐户连接到HDFS。默认情况下,Data Collector使用启动它的用户帐户连接到外部系统。使用Kerberos时,Data Collector使用Kerberos主体。

要将Hadoop FS源中的用户配置为从HDFS读取,请执行以下任务:

  1. 在Hadoop上,将用户配置为代理用户,并授权该用户模拟Hadoop用户。

    有关更多信息,请参阅Hadoop文档。

  2. 在Hadoop FS源中的“ Hadoop FS”选项卡上,配置“Hadoop FS User”属性。

Hadoop属性和配置文件

您可以将Hadoop FS源配置为使用单个Hadoop属性或Hadoop配置文件:

Hadoop配置文件
您可以将以下Hadoop配置文件与Hadoop FS一起使用:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml
要使用Hadoop配置文件:

  1. 将文件或指向文件的符号链接存储在Data Collector资源目录中。
  2. 在Hadoop FS源中,指定文件的位置。
注意: 对于Cloudera Manager安装,Data Collector会自动创建一个名为hadoop-conf的文件符号链接 。在Hadoop FS源中文件位置处输入hadoop-conf
单个属性
您可以在源中配置各个Hadoop属性。要添加Hadoop属性,请指定确切的属性名称和值。Hadoop FS源不验证属性名称或值。

注意:各个属性会覆盖Hadoop配置文件中定义的属性。

记录头属性

Hadoop FS原始创建记录头属性,该属性包括有关记录原始文件的信息

您可以使用record:attribute或 record:attributeOrDefault函数来访问属性中的信息。有关使用记录头属性的更多信息,请参见使用头属性。

Hadoop FS源创建以下记录头属性:

  • file – 提供记录源文件路径和文件名。
  • offset – 提供文件偏移量(以字节为单位)。文件偏移量是记录在文件中的原始位置。

数据格式

Hadoop FS源根据您选择的数据格式对数据进行不同的处理。源处理以下类型的数据:

Avro
为每个Avro记录生成一条记录。每个小数字段都包含 precisionscale 字段属性。
该阶段在avroSchema 记录头属性中包括Avro模式 。您可以使用以下方法之一来指定Avro模式定义的位置:

  • Message/Data Includes Schema -在文件中使用模式。
  • In Pipeline Configuration – 使用您在阶段配置中提供的模式。
  • Confluent Schema Registry – 从Confluent Schema Registry检索模式。Confluent Schema Registry是Avro架构的分布式存储层。您可以配置阶段以通过阶段配置中指定的模式ID或主题在Confluent Schema Registry中查找模式。
在阶段配置中使用模式或从Confluent Schema Registry检索模式会覆盖文件中可能包含的任何模式,并可以提高性能。
该阶段读取不需要Avro支持的压缩编解码器压缩的文件,而无需进行其他配置。
Delimited
为每个分隔行生成一条记录。您可以使用以下分隔格式类型:

  • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
  • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
  • MS Excel CSV -Microsoft Excel逗号分隔文件。
  • MySQL CSV -MySQL逗号分隔文件。
  • Tab-Separated Values -包含制表符分隔的值的文件。
  • PostgreSQL CSV -PostgreSQL逗号分隔文件。
  • PostgreSQL Text -PostgreSQL文本文件。
  • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
  • Multi Character Delimited -使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
您可以将list或list-map根字段类型用于分隔数据,并可以选择在标题行中包括字段名称(如有)。有关根字段类型的更多信息,请参见分隔数据根字段类型。
使用标题行时,可以启用带有其他列的记录处理。其他列使用自定义的前缀和顺序递增的顺序整数,如命名 _extra_1, _extra_2。当您禁止其他列时,包含其他列的记录将发送到错误。
您也可以将字符串常量替换为空值。
当一条记录超过为该阶段定义的最大记录长度时,该阶段将根据为该阶段配置的错误处理来处理对象。
Text
根据自定义分隔符为每行文本或每段文本生成一条记录。
当一条线或一段超出为源端定义的最大线长时,源端会截断它。源端添加了一个名为Truncated的布尔字段,以指示该行是否被截断。
有关使用自定义定界符处理文本的更多信息,请参见使用自定义定界符的文本数据格式。

配置Hadoop FS源

在集群管道中配置Hadoop FS源,以使用Hadoop FileSystem接口从HDFS、Amazon S3或其他文件系统读取数据。
  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Stage Library 您要使用的库版本。
    On Record Error 该阶段的错误记录处理:

    • Discard-放弃记录。
    • Send to Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“Hadoop FS”选项卡上,配置以下属性:
    Hadoop FS属性 描述
    Hadoop FS URI 要使用的可选URI。要读取HDFS,请包括以下HDFS模式和权限: <scheme>://<authority>

    例如:

    hdfs://nameservice

    要使用Hadoop FileSystem界面从Amazon S3或其他文件系统读取数据,请为系统输入适当的URI。有关更多信息,请参阅从Amazon S3 读取或从其他文件系统读取。

    如果未配置,那么此阶段将使用core-site.xml文件中fs.defaultFS属性定义的URI。

    Input Paths 要读取的输入数据的位置。输入如下路径:/<path>

    例如:

    /user/hadoop/directory
    Include All Subdirectories 从指定输入路径内的所有目录中读取。
    Produce Single Record 当一条记录包含多个对象时,将生成一条记录。
    Kerberos Authentication 使用Kerberos凭据连接到HDFS。

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

    注意:从Amazon S3读取的群集EMR批处理模式管道目前不支持Kerberos身份验证。
    Hadoop FS Configuration Directory

    Hadoop配置文件的位置。

    对于Cloudera Manager安装,请输入 hadoop-conf。对于所有其他安装,请使用Data Collector资源目录中的目录或符号链接。

    您可以将以下文件与Hadoop FS一起使用:

    • core-site.xml
    • hdfs-site.xml
    • yarn-site.xml
    • mapred-site.xml
    注意:配置文件中的属性被阶段中定义的单个属性覆盖。
    Hadoop FS User 用于从HDFS读取的Hadoop用户。使用此属性时,请确保正确配置了HDFS。

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

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

    Hadoop FS Configuration

    要使用的其他Hadoop配置属性。要添加属性,请单击“添加”并定义属性名称和值。

    使用Hadoop期望的属性名称和值。

    Max Batch Size (records) 一次处理的最大记录数。接受的值最高为Data Collector的最大批处理大小。

    默认值是1000。

  3. 在“Data Format选项卡上,配置以下属性:
    数据格式属性 描述
    Data Format

    要读取的数据类型。使用以下选项之一:

    • Avro
    • Delimited
    • Text
  4. 对于Avro数据,在“Data Format选项卡上,配置以下属性:
    Avro属性 描述
    Avro Schema Location 处理数据时要使用的Avro模式定义的位置:

    • Message/Data Includes Schema-在文件中使用模式。
    • In Pipeline Configuration-使用阶段配置中提供的模式。
    • Confluent Schema Registry-从Confluent Schema Registry检索模式。

    在阶段配置中或在Confluent Schema Registry中使用模式可以提高性能。

    Avro Schema 用于处理数据的Avro模式定义。覆盖与数据关联的任何现有模式定义。

    您可以选择使用该 runtime:loadResource函数来加载存储在运行时资源文件中的模式定义。

    Schema Registry URLs 用于查找模式的Confluent Schema Registry URL。要添加URL,请单击添加,然后以以下格式输入URL:

    http://<host name>:<port number>
    Basic Auth User Info 使用基本身份验证时连接到Confluent Schema Registry所需的用户信息。

    schema.registry.basic.auth.user.info使用以下格式从Schema Registry中的设置中输入密钥和机密 :

    <key>:<secret>
    提示: 要保护敏感信息(例如用户名和密码),可以使用运行时资源或凭据存储。
    Lookup Schema By 在Confluent Schema Registry中查找模式的方法:

    • Subject-查找指定的Avro模式主题。
    • Schema ID-查找指定的Avro schema ID。

    覆盖与数据关联的任何现有模式定义。

    Schema Subject Avro模式需要在Confluent Schema Registry中查找。

    如果指定的主题具有多个模式版本,则源使用该主题的最新模式版本。要使用旧版本,请找到相应的模式ID,然后将“Look Up Schema By属性设置为“Schema ID”。

    Schema ID 在Confluent Schema Registry中查找的Avro模式ID。
  5. 对于分隔数据,在“Data Format选项卡上,配置以下属性:
    分隔属性 描述
    Delimiter Format Type 分隔符格式类型。使用以下选项之一:

    • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
    • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
    • MS Excel CSV -Microsoft Excel逗号分隔文件。
    • MySQL CSV -MySQL逗号分隔文件。
    • Tab-Separated Values -包含制表符分隔的值的文件。
    • PostgreSQL CSV -PostgreSQL逗号分隔文件。
    • PostgreSQL Text -PostgreSQL文本文件。
    • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
    • Multi Character Delimited-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
    Header Line 指示文件是否包含标题行以及是否使用标题行。
    Allow Extra Columns 使用标题行处理数据时,允许处理的记录列数超过标题行中的列数。
    Extra Column Prefix 用于任何其他列的前缀。额外的列使用前缀和顺序递增的整数来命名,如下所示: <prefix><integer>

    例如,_extra_1。默认值为 _extra_

    Max Record Length (chars) 记录的最大长度(以字符为单位)。较长的记录不会被读取。

    此属性可以受数据收集器解析器缓冲区大小的限制。有关更多信息,请参见最大记录大小。

    Delimiter Character 自定义分隔符格式的分隔符。选择一个可用选项,或使用“其他”输入自定义字符。

    您可以输入使用格式为Unicode控制符\uNNNN,其中N是数字0-9或字母AF十六进制数字。例如,输入 \u0000以使用空字符作为分隔符,或 \u2028使用行分隔符作为分隔符。

    默认为竖线字符(|)。

    Multi Character Field Delimiter 用于分隔多字符定界符格式的字段的字符。

    默认值为两个竖线字符(||)。

    Multi Character Line Delimiter 以多字符分隔符格式分隔行或记录的字符。

    默认值为换行符(\ n)。

    Escape Character 自定义字符或多字符分隔符格式的转义字符。
    Quote Character 自定义或多字符分隔符格式的引号字符。
    Enable Comments 自定义分隔符格式允许注释的数据被忽略。
    Comment Marker 为自定义分隔符格式启用注释时,标记注释的字符。
    Ignore Empty Lines 对于自定义分隔符格式,允许忽略空行。
    Root Field Type 要使用的根字段类型:

    • List-Map-生成数据索引列表。使您能够使用标准功能来处理数据。用于新管道。
    • List-生成带有索引列表的记录,该列表带有标头和值的映射。需要使用定界数据功能来处理数据。仅用于维护在1.1.0之前创建的管道。
    Lines to Skip 读取数据前要跳过的行数。
    Parse NULLs 将指定的字符串常量替换为空值。
    NULL Constant 用于空值替换的字符串常量。
    Charset 要处理的文件的字符编码。
    Ignore Control Characters 除去制表符,换行符和回车符以外的所有ASCII控制字符。
  6. 对于文本数据,在“Data Format选项卡上,配置以下属性:
    文本属性 描述
    Max Line Length 一行中允许的最大字符数。较长的行被截断。

    在记录中添加一个布尔字段,以指示该记录是否被截断。字段名称为“Truncated”。

    此属性可以受数据收集器解析器缓冲区大小的限制。有关更多信息,请参见最大记录大小。

    Use Custom Delimiter 使用自定义分隔符来定义记录而不是换行符。
    Custom Delimiter 用于定义记录的一个或多个字符。
    Charset 要处理的文件的字符编码。
    Ignore Control Characters 除去制表符,换行符和回车符以外的所有ASCII控制字符。
  7. 如果在集群EMR批处理或集群批处理模式管道中使用源从Amazon S3读取数据,请在S3选项卡上配置以下属性 :
    S3属性 描述
    Access Key ID AWS访问密钥ID。
    Secret Access Key AWS秘密访问密钥。

    源使用访问密钥对将凭证传递到Amazon Web Services以从Amazon S3读取。

    如果在集群EMR批处理管道中使用源,请输入在管道的“ EMR”选项卡上输入的相同访问密钥对。有关更多信息,请参阅为Amazon S3配置集群EMR批处理模式。

    提示:为了保护敏感信息,例如访问密钥对,可以使用运行时资源或凭据存储。