使用HDFS存储不同大小的文件

Using HDFS to store files of different sizes

我有一个比较理论化的问题。

我的团队正在开发和支持中型 java 应用程序(目前 40 万行),该应用程序处理大量二进制文件。目前我们将所有数据存储在 FS 存储上。我们开发了一个小的 "framework",这将允许我们在未来扩展文件存储,但是,我强烈怀疑将我们的数据存储在 Windows/Linux 文件系统上仍然是一个瓶颈(不用说在分布式数据处理中重新发明一个轮子然后依赖它似乎不是一个很好的解决方案:))。

我们处理的数据大小从每个文件 1-2mb 到数百 mb(很少是千兆字节)不等,并且经常访问。但我想强调的是,这些文件大部分都很小。同时考虑到我们转向大数据和 ML 分析的长期计划,我正在研究将 Hadoop 生态系统集成到我们的应用程序中的可能性。

我目前的问题是 HDFS 和 HBase 是否可以在我们的环境中运行良好?据我所知,HDFS 的设计目的是存储非常大的二进制数据,但也许使用 HBase 和一些配置调整可以使它工作于更小的数据?我还必须提到,性能对读取和写入文件都很重要

我很想听听您对我提到的技术的体验,也许任何人都可以推荐解决该问题的任何替代解决方案(Apache Parquet?)。

此外,我们的团队没有 Hadoop 提供的分布式大数据解决方案方面的经验,因此如果您认为这些框架可能适用于我们的案例,也许您可​​以就它们的集成或任何提示提供反馈从哪里开始我的调查。感谢您的关注。 :)

P.S。除了 FS,我们还使用 S3 来归档旧数据和存储大型 (> 1gb) 二进制文件,因此从这个角度来看,引入单一存储系统也很酷。

经过一番调查,我了解到分布式文件存储,如 HDFS 和 noSQL 存储不太适合以低延迟为目标的应用程序。

这些系统设计用于在大数据世界中运行,在大数据世界中,高整体吞吐量比延迟更有价值,而且二进制文件的大小非常大。

对于大多数与真实用户交互或为此类应用程序提供服务的基于云的应用程序,最合适的数据存储是对象存储,例如 Amazon S3。它们提供方便 API、合理的延迟、高可用性和几乎无限。最重要的是,它们通常 由第 3 方管理 ,这消除了开发人员方面的大量工作和顾虑。