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