Kafka Connect相关插件配置文档之五

269 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Kafka Connect相关插件配置文档之一

Kafka Connect相关插件配置文档之二

Kafka Connect相关插件配置文档之三

Kafka Connect相关插件配置文档之四

1.5.7 Schema

schema.compatibility

连接器观察架构更改时要使用的架构兼容性规则。支持的配置为NONE,BACKWARD,FORWARD和FULL。

  • 类型:字符串
  • 默认值:无
  • 重要性:高

1.6 格式和分区

如果要将其他格式写入HDFS或使用其他分区程序format.classpartitioner.class则需要指定和。以下示例配置演示了如何编写Parquet格式和使用每小时分区程序:

format.class=io.confluent.connect.hdfs.parquet.ParquetFormat
partitioner.class=io.confluent.connect.hdfs.partitioner.HourlyPartitioner

注意:

如果要使用字段分区器,则还需要指定partition.field.name 配置以指定记录的字段名称。

1.7 蜂巢整合

至少,你需要指定hive.integrationhive.metastore.urisschema.compatibility整合蜂巢时。这是一个示例配置:

hive.integration=true
hive.metastore.uris=thrift://localhost:9083 # FQDN for the host part
schema.compatibility=BACKWARD

您应该hive.metastore.uris根据您的Hive配置进行调整。

注意

如果您未指定hive.metastore.uris,则连接器将在运行连接器的目录中将本地元存储与Derby一起使用。您需要在此目录中运行Hive才能查看Hive元数据的更改。

注意

由于连接器任务长时间运行,因此与Hive Metastore的连接将保持打开状态,直到任务停止为止。在默认的Hive配置中,重新连接到Hive Metastore将创建一个新连接。当任务数量很大时,重试可能导致打开的连接数超过操作系统中允许的最大连接数。因此建议设置hcatalog.hive.client.cache.disabledtruein hive.xml

此外,为了支持模式演变的schema.compatibilityBACKWARDFORWARDFULL。这样可以确保Hive可以使用最新的Hive表架构查询使用不同架构写入HDFS的数据。有关架构兼容性的更多信息,请参见Schema Evolution

1.8 安全的HDFS和Hive Metastore

要使用安全的HDFS和蜂巢metastore工作,你需要指定hdfs.authentication.kerberosconnect.hdfs.principalconnect.keytabhdfs.namenode.principal

hdfs.authentication.kerberos=true
connect.hdfs.principal=connect-hdfs/_HOST@YOUR-REALM.COM
connect.hdfs.keytab=path to the connector keytab
hdfs.namenode.principal=namenode principal

您需要通过Kerberos创建Kafka连接主体和密钥表文件,并将密钥表文件分发给运行连接器的所有主机,并确保只有连接器用户具有对密钥表文件的读取访问权限。

注意

当启用安全,您需要使用的FQDN的主机部分 hdfs.urlhive.metastore.uris

注意

当前,连接器要求在运行连接器的所有主机上,主体和密钥表路径必须相同。hdfs.namenode.prinicipal需求的主机部分必须是Namenode主机的实际FQDN,而不是_HOST占位符。

1.9 模式演变

重要

仅当使用默认命名策略()生成记录时,方案演化才有效TopicNameStrategy。如果使用其他命名策略,则可能会发生错误。这是因为记录彼此不兼容。如果使用其他命名策略,schema.compatibility则应设置为NONE。这可能会导致目标文件较小,因为每次模式ID在记录之间更改时,接收器连接器都会创建一个新文件。有关命名策略的更多信息,请参见主题名称策略

HDFS连接器支持架构演变,并根据schema.compatibility配置对数据的架构更改做出反应 。在本部分中,我们将说明连接器如何在不同的值下对架构演变做出反应schema.compatibility。的 schema.compatibility可设置为NONEBACKWARDFORWARDFULL,这意味着没有兼容性,向后兼容性,前向兼容性和FULL兼容性分别。

  • 否兼容性:默认情况下,schema.compatibility设置为NONE。在这种情况下,连接器确保每个写入HDFS的文件都具有正确的架构。当连接器观察到数据中的架构更改时,它会为受影响的主题分区提交当前文件集,并将具有新架构的数据写入新文件中。

  • 向后兼容性:如果以向后兼容的方式发展模式,我们总是可以使用最新的模式统一查询所有数据。例如,删除字段是对模式的向后兼容更改,因为当我们遇到使用旧模式编写的包含这些字段的记录时,我们可以忽略它们。添加具有默认值的字段也向后兼容。

    如果BACKWARD在中指定schema.compatibility,则连接器将跟踪用于将数据写入HDFS的最新模式,并且如果到达具有比当前最新模式更大的模式版本的数据记录,则连接器将提交当前文件集并写入数据记录与新架构的新文件。对于使用较早版本的架构在以后到达的数据记录,连接器将数据记录投影到最新的架构,然后再写入HDFS中的同一组文件。

  • FORWARD兼容性:如果以向前兼容的方式发展模式,我们总是可以使用最早的模式统一查询所有数据。删除具有默认值的字段是向前兼容的,因为缺少该字段时,旧模式将使用默认值。

    如果FORWARD在中指定schema.compatibility,则连接器会将数据投影到最早的架构,然后再写入HDFS中的同一组文件。

  • 完全兼容性:完全兼容性意味着可以使用新架构读取旧数据,也可以使用旧架构读取新数据。

    如果FULL在中指定schema.compatibility,则连接器执行与相同的操作BACKWARD

如果蜂巢集成启用时,我们需要指定schema.compatibilityBACKWARDFORWARDFULL。这样可以确保Hive表架构能够查询使用不同架构编写的主题下的所有数据。如果将schema.compatibility设置为BACKWARDFULL,则主题的Hive表架构将等同于该主题下的HDFS文件中的最新架构,该架构可以查询该主题的整个数据。如果将schema.compatibility设置为FORWARD,则主题的Hive表架构等同于该主题下的HFDS文件的最早架构,该架构可以查询该主题的整个数据。