首页 > 解决方案 > 如果在高负载情况下使用 HDFS 作为文件系统部署 PostgreSQL 会发生什么?

问题描述

这是一个故意愚蠢的问题。但我只是好奇——如果我使用 FUSE 绑定作为卷安装 HDFS 并使用存储在该 HDFS 卷上的集群启动 PostgreSQL 并开始写入大量数据和/或进行高强度读取会发生什么?

标签: postgresqlhadoophdfshigh-load

解决方案


首先,我不认为这是一个愚蠢的问题,话虽如此,让我们使用一些定义,我们可以从那一点继续:

保险丝:

FUSE 是一个用户空间文件系统框架。它由一个内核模块、一个用户空间库和一个挂载实用程序(fusermount)组成。

HDFS(Hadoop分布式文件系统):

分布在许多联网计算机或节点之间的文件系统。HDFS 具有容错性,因为它在文件系统上存储了多个文件副本,默认复制级别为 3。

所以我认为你的问题@Gill Bates 的简短版本是:HDFS 是否会影响 Postgres DB 的性能(当然假设 Postgres 集群存储在HDFS)?

简短的回答是,取决于您的配置,但很可能是的,如上所述,您可以将其HDFS视为文件系统,当然,Postgres 将数据存储在文件系统中,因此它会受到您所在文件系统的影响使用,假设您执行多个操作read/write,拥有分布式文件系统的一大优势HDFS是支持文件的多个副本,这大大减少了许多客户端访问单个文件的常见瓶颈,从而有助于更好地扩展。

所以直接回答你的问题:如果我开始写入大量数据和/或进行高强度阅读会发生什么?

无论您的文件系统是什么HDFS(这可以帮助您更好地扩展并同时为您的文件系统增加容错能力),可以直接确定/影响您的数据库在压力测试下响应的好坏的参数是:

  • 索引
  • 分区
  • 检查站
  • 真空,分析(使用填充因子)
  • 查询定义

当然,也取决于您的堆栈(您的服务器提供/主机有多好),根据我的经验,这些事实可能会影响更多您的 Postgres DB(附在一些链接下方,可能有助于澄清更多)。

希望以上内容有助于澄清!


推荐阅读