2

Nuodb 使用 HDFS 作为存储。这会对性能产生影响吗?

如果我理解正确,HDFS 更适合批处理模式或一次写入多次读取的应用程序类型。如果需要从存储中读取,它不会增加获取记录的延迟吗?

在 HDFS 块大小概念之上,保持文件大小较小,这会在获取数据时增加网络流量。我在这里错过了什么吗?请指出相同。

Nuodb 将如何管理这些延迟问题?

4

1 回答 1

4

下午好,

我叫 Elisabete,是 NuoDB 的技术支持工程师。我相信我可能刚刚通过您在我们自己的论坛上的帖子回答了这个问题,但我也在这里为任何好奇的人做出回应。

首先...关于 NuoDB 架构/布局的迷你课程:

最基本的 NuoDB 设置包括:

  • 经纪代理
  • 交易引擎 (TE)
  • 连接到存档目录的 Storage Manager (SM)

Broker Agents跟踪域中的所有移动部分(托管 NuoDB 进程的机器的集合),并为客户端应用程序提供下一个可用事务引擎的连接信息。

事务引擎处理传入的 SQL 请求并管理事务。

存储管理器从“磁盘”(存档目录)读取和写入数据

所有这些组件都可以驻留在一台机器上,但最佳设置将使它们分布在多台主机上(允许每个进程充分利用主机的可用 CPU/RAM)。此外,虽然可以仅使用每个组件中的一个来运行,但在这种情况下,肯定是更多。额外的代理提供弹性,额外的 TE 提高性能/速度,额外的 SM 确保耐用性。

好的,现在让我们谈谈存储:

这是您的存储管理员正在写入的“存档目录”。目前,我们支持三种存储模式:

  • 本地文件系统
  • Amazon Web Services:简单存储卷 (S3)、弹性块存储 (EBS)
  • Hadoop 分布式文件系统 (HDFS)

所以,要详细说明 NuoDB 如何与 HDFS 一起工作......它不知道 HDFS 层正在写入的多台机器。就 SM 而言,它正在读取数据原子并将其写入单个目录。HDFS 层决定如何在其所在的机器集群中分发和检索数据。

现在终于解决延迟问题:

事情是这样的,每当我们引入远程存储设备时,我们不可避免地会引入一些额外的延迟,因为 SM 现在在向内存读取/写入原子时需要走得更远。HDFS 可能会增加一点,因为现在它需要做的是神奇的分割、分发、检索和重组数据。再加上网络速度等方面的差异。

我想获得的磁盘空间超过了旅行时间的成本,但这是您必须根据具体情况决定的事情。

现在,所有这些都说了……我没有提到TE 和 SM 都具有将数据缓存到本地内存的能力。在启动每个进程时,您可以设置此缓存的大小。NuoDB 使用多版本并发控制 (MVCC) 和所有进程之间几乎恒定的通信流的组合,以确保缓存中的数据与系统内发生的所有更改保持同步。当缓存增长接近其限制时,垃圾收集也会以最近最少使用的顺序启动并清除原子。

所有这些都有助于减少延迟,因为 TE 可以保留他们最常引用的数据,并从兄弟 TE 那里获取他们没有的数据副本。当他们确实求助于向 SM 请求数据时,SM(或其兄弟 SM 之一)有可能在本地缓存中拥有所请求数据的副本,从而节省了前往存档目录的行程。

唷.. 这太多了,我绝对忽略了几个概念。这些主题通过我们主网站上提供的新白皮书套件(和新的“绿皮书”)进行了更深入的介绍。我目前也在制作一些视觉指南,以帮助解释所有这些。

如果您想了解更多有关 NuoDB 的信息,或者如果我没有完全回答您的问题....请直接通过NuoDB 社区论坛与我联系(我会回复那里的帖子,速度会更快一些)。

谢谢你,伊丽莎白

NuoDB 技术支持工程师

于 2013-01-29T23:54:50.377 回答