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