使用HDFS for Nuodb作为存储。这会对性能产生影响吗?
如果我理解正确的话,HDFS更适合于批处理模式或一次写入并多次读取的应用程序类型。如果需要从存储中读取记录,它不会增加读取记录的延迟吗?
在HDFS块大小概念的基础上,保持较小的文件大小,这会在获取数据时增加网络流量。我是不是漏掉了什么?请指出同样的问题。
Nuodb将如何管理这些延迟陷阱?
发布于 2013-01-30 07:54:50
下午好,
我叫Elisabete,是NuoDB的技术支持工程师。我相信我可能已经通过你在我们自己的论坛上的帖子回答了这个问题,但我也在这里回应其他感兴趣的人。
优先...关于NuoDB架构/布局的迷你课程:
最基本的NuoDB设置包括:
Broker Agents跟踪域中的所有移动部分(托管NuoDB进程的机器集合),并为客户端应用程序提供下一个可用的事务引擎的连接信息。
SQL 处理传入的请求并管理事务。
存储管理器从“磁盘”(存档目录)读取和写入数据
所有这些组件都可以驻留在一台机器上,但最优的设置将使它们分布在多个主机上(允许每个进程充分利用主机的可用CPU/RAM)。此外,虽然可以只使用每个组件中的一个组件运行,但在这种情况下,肯定是越多越好。额外的代理提供了弹性,额外的TE提高了性能/速度,额外的SM确保了耐用性。
好了,现在让我们来谈谈存储:
这是您的存储管理器正在写入的“归档目录”。目前,我们支持三种存储模式:
因此,为了详细说明NuoDB如何与HDFS一起工作...它不知道HDFS层正在写入的多台机器。就SM而言,它是在单个目录中读取和写入数据原子。HDFS层决定如何将数据分发到它所在的机器集群,以及如何从它所在的机器集群检索数据。
现在终于要解决延迟问题了:
事情是这样的,当我们引入远程存储设备时,我们不可避免地引入了一些额外的延迟,因为SM现在在向/从内存读取/写入原子时需要走得更远。HDFS可能会添加更多,因为现在它需要完成神奇的数据分配、分发、检索和重组。增加了网络速度等方面的差异。
我认为获得的磁盘空间超过了旅行时间的成本,但这是您必须根据具体情况来决定的。
现在,所有这些都表明...我没有提到TE和SM都有能力将数据缓存到本地内存中。这个缓存的大小是您可以在启动每个进程时设置的。NuoDB使用多版本并发控制和所有进程之间几乎不变的通信流相结合,以确保缓存中的数据与系统中发生的所有更改保持最新。当缓存增长到接近极限时,垃圾收集也会启动并以最近最少使用的顺序清除原子。
所有这些都有助于减少延迟,因为TE可以保留它们最常引用的数据,并从兄弟TE中抓取它们没有的数据的副本。当它们求助于向SM请求数据时,SM(或其兄弟SM之一)有可能在本地缓存中拥有所请求数据的副本,从而省去了自己去存档目录的路程。
呼..。这是很多,我绝对润饰了不止几个概念。这些主题通过我们主网站上的new suite of white papers (and the new "green book")进行了更深入的讨论。我目前也在做一些视觉指南,以帮助解释这一切。
如果你想了解更多关于NuoDB的信息,或者我没有完全回答你的问题……请通过NuoDB Community Forums直接联系我(我在那里回复帖子,速度更快)。
谢谢你,Elisabete
NuoDB的技术支持工程师
https://stackoverflow.com/questions/14552091
复制相似问题