我试图用我自己的话来定义 HDFS 中的高吞吐量与低延迟意味着什么,并提出了以下定义:
HDFS 经过优化,可以更快地访问批量数据集(高吞吐量),而不是该数据集中的特定记录(低延迟)
是否有意义?:)
谢谢!
我试图用我自己的话来定义 HDFS 中的高吞吐量与低延迟意味着什么,并提出了以下定义:
HDFS 经过优化,可以更快地访问批量数据集(高吞吐量),而不是该数据集中的特定记录(低延迟)
是否有意义?:)
谢谢!
我认为您所描述的更像是针对不同访问模式(顺序、批处理与随机访问)进行优化之间的区别,而不是纯粹意义上的吞吐量和延迟之间的区别。
当我想到一个高延迟系统时,我不是在考虑我正在访问哪条记录,而是在考虑访问任何记录都会产生高昂的开销成本。即使从 HDFS 访问文件的第一个字节也可能需要大约一秒钟或更长时间。
如果您更倾向于量化,您可以考虑访问多个记录 N 所需的总时间为T(N)=aN+b
. 在这里,a
表示吞吐量,并b
表示延迟。对于像 HDFS 这样的系统,N 通常太大以至于b
变得无关紧要,并且有利于低的权衡a
是有益的。相比之下,低延迟数据存储通常每次读取只访问一条记录,然后针对低进行优化b
会更好。
话虽如此,您的陈述并没有错。确实如此,批量存取存储通常具有高延迟和高吞吐量,而随机存取存储具有低延迟和低吞吐量,但严格来说并非总是如此。
我会试试这个。
低延迟数据访问:我按下回车键(或提交按钮),我希望最多在几秒钟内得到结果。我的数据库查询时间应该是亚秒级。数据的高吞吐量:我想扫描数百万行数据并对一些子集进行计数或求和。我预计这将需要几分钟(或更长,具体取决于复杂性)才能完成。想想更多的批处理风格的工作。
警告:这实际上也是一个 map/reduce 问题。M/R 作业的设置和处理需要一些开销。现在有几个项目致力于降低延迟数据访问。
此外,HDFS 将数据存储在块中,并将它们分布在许多节点上。这意味着(几乎)总是需要一些网络数据传输才能获得最终答案,并且这会“减慢”速度,具体取决于吞吐量和各种其他因素。
希望有帮助。:)