gsutil 无法验证 Kafka Connect S3 上传的文件的哈希值

Posted

技术标签:

【中文标题】gsutil 无法验证 Kafka Connect S3 上传的文件的哈希值【英文标题】:gsutil unable to validate hashes for file uploaded by Kafka Connect S3 【发布时间】:2019-12-02 18:23:08 【问题描述】:

我正在尝试使用 gsutil 将一些文件从 Kafka s3 接收器传输到 Google Cloud Storage 存储桶。因为 Kafka-Connect 到 S3 进行多部分上传,所以上传文件的 Etag(即使它们很小)不是导致 gsutil 抛出完整性检查警告的 MD5 哈希。我想知道在这种情况下是否有办法处理完整性检查,或者我应该忽略警告?

我尝试了 cp 和 rsync 命令,它们的行为相同。

gsutil -m cp -r s3://somebucket/folder gs://somebucket/folder
gsutil -m rsync -r s3://somebucket/folder gs://somebucket/folder

key 存在非 MD5 etag ("7dc7e8a64434da88964f3d65f1e05c6b-1"),无法进行数据完整性检查。

警告:找不到哈希来验证从 s3://source-bucket/source-folder-avro/2019/07/04/22/source-file-avro+0+0000038153.avro 下载并上传到 gs 的对象://target_bucket/2019/07/04/22/target-file-avro+0+0000038153.avro。没有哈希就无法保证完整性。

【问题讨论】:

【参考方案1】:

S3 分段上传没有记录的方法来计算哈希;我相信你能做的最好的事情是this reverse-engineered answer,这需要你知道原始上传的部分大小。您或许可以从您的 Kafka-S3 configuration 中收集到这些信息,并按照该流程验证完整性。

除非 S3 更改此行为,否则如果您不知道原始部件尺寸,那么您将永远无法验证多部件上传的 S3 对象的完整性(通过gsutil 或任何其他应用程序)。因此,在这种情况下,我认为您能做的最好的事情就是承担风险并根据您对数据类型的了解执行任何其他可能的验证。

【讨论】:

以上是关于gsutil 无法验证 Kafka Connect S3 上传的文件的哈希值的主要内容,如果未能解决你的问题,请参考以下文章

为 Kerberos 身份验证配置 Kafka Connect HDFSinkNode

Kafka Connect 访问模式注册表的基本身份验证

无法在 kafka connect docker 映像中运行 kafka connect datagen

无法在启用 SSL 的 Kafka 集群中注册 Debezium (Kafka-Connect) 连接器

设置 Kafka Connect,无法重命名组 ID

Kafka Connect - 无法提交偏移量和刷新