我一直在使用 Kafka Connect 和 Secor 等服务将 Parquet 文件保存到 S3。我对 HDFS 或 Hadoop 不是很熟悉,但似乎这些服务通常会在批量写入 s3 之前将临时文件写入本地内存或磁盘。 s3n/s3a 文件系统是在本地虚拟化 HDFS 样式的文件系统,然后按配置的时间间隔推送,还是在写入 s3n/s3a 和写入 s3 之间存在一对一的对应关系?
我不确定我在这里问的问题是否正确。任何指导将不胜感激。
最佳答案
S3A/S3N 只是针对远程对象存储实现 Hadoop 文件系统 API,包括假装它具有您可以重命名和删除的目录。
它们历来保存您写入本地磁盘的所有数据,直到您close()
输出流,此时开始上传(这可能很慢)。这意味着您必须拥有与计划创建的最大对象一样多的临时空间。
Hadoop 2.8 有一个快速上传流,它在文件写入时以 5+MB 的 block 上传文件,然后在最后的 close()
中使其在对象存储中可见。当在单个流中生成大量数据时,这明显更快。这也避免了需要太多磁盘空间。
关于hadoop - s3n/s3a如何管理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43282279/