【问题标题】:Hardware requirements for PrestoPresto 的硬件要求
【发布时间】:2013-11-20 17:54:39
【问题描述】:

我怀疑答案是“视情况而定”,但是对于计划为Presto 使用哪种硬件,是否有任何一般性指导?

由于 Presto 使用协调器和一组工作器,并且工作器使用数据运行,我想主要问题将是有足够的 RAM 用于协调器,有足够的网络带宽用于从工作器发送到协调器的部分结果等。

如果您能提供一些关于如何适当调整大小的一般想法,我很想听听他们的意见。

【问题讨论】:

标签: presto trino


【解决方案1】:

大多数人在他们已经拥有的 Hadoop 节点上运行 Trino (formerly PrestoSQL)。在 Facebook,我们通常在 Hadoop 集群中的几个节点上运行 Presto,以分散网络负载。

一般来说,对于新集群,我会采用行业标准比率:每个磁盘有 2 个内核和 2-4 gig 内存,如果您负担得起的话,可以使用 10 gigabit 网络。在您拥有几台机器(4 台以上)之后,使用您对数据的查询进行基准测试。如果您需要调整比率,这应该很明显。

在从头开始为集群调整硬件大小方面需要考虑一些事项:

  • 总数据大小将决定您需要的磁盘数量。 HDFS 的开销很大,因此您需要大量磁盘。
  • CPU 速度与磁盘的比率取决于热数据(您正在使用的数据)和冷数据(存档数据)之间的比率。如果您刚刚开始数据仓库,您将需要大量 CPU,因为所有数据都是新的和热的。另一方面,大多数物理磁盘只能如此快速地传输数据,因此在某些时候更多的 CPU 也无济于事。
  • CPU 速度与内存的比率取决于您要执行的聚合和连接的大小以及您要缓存的(热)数据量。目前,Presto 需要最终聚合结果和用于连接的哈希表以适合单台机器上的内存(我们正在积极努力消除这些限制)。如果您有大量内存,操作系统将缓存磁盘页面,这将显着提高查询性能。

2013 年,我们在 Facebook 运行 Presto 流程如下:

  • 我们使用 16 GB 堆运行 JVM,以将大部分内存留给操作系统缓冲区
  • 在我们运行 Presto 的机器上,我们没有运行 MapReduce 任务。
  • 大多数 Presto 机器都有 16 个真实内核,并使用处理器亲和性(最终是 cgroups)将 Presto 限制为 12 个内核(因此 Hadoop 数据节点进程和其他东西可以轻松运行)。
  • 大多数服务器都在 10 Gb 网络上,但我们确实有一个使用 1 Gb 的大型旧集群(运行良好)。
  • 我们为协调器和工作器使用了相同的配置。

最近,我们运行了以下内容:

  • 机器有 256 GB 内存,我们运行了 200 GB Java 堆
  • 大多数机器都有 24-32 个真实内核,Presto 分配了所有内核。
  • 这些机器只有最少的本地日志存储空间,所有表数据都是远程的(在专有的分布式文件系统中)。
  • 大多数服务器都有一个到光纤网络的 25 Gb 网络连接。
  • 协调器和工作器具有相似的配置。

【讨论】:

  • 感谢您的详细、快速的回复!
  • 感谢您的回复
  • 你有更多关于每个节点/等的最大内存设置的信息吗?
猜你喜欢
  • 2014-07-27
  • 2015-02-24
  • 2020-02-28
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多