从以下几段文字——(http://developer.yahoo.com/hadoop/tutorial/module2.html),提到顺序可读的大文件不适合本地缓存。但我不明白这里的本地是什么意思......
我认为有两种假设:一种是Client缓存来自HDFS的数据,另一种是datanode将hdfs数据缓存在其本地文件系统或内存中以供Client快速访问。有没有人可以解释更多?非常感谢。
但是,虽然 HDFS 具有很强的可扩展性,但其高性能设计也将其限制在特定类别的应用程序中;它不像 NFS 那样通用。使用 HDFS 做出了大量额外的决定和权衡。尤其:
假设使用 HDFS 的应用程序从文件中执行长的顺序流式读取。HDFS 进行了优化以提供流式读取性能;这是以文件中任意位置的随机寻道时间为代价的。
数据会一次写入HDFS,然后多次读取;不支持在文件关闭后更新文件。(Hadoop 的扩展将支持将新数据附加到文件的末尾;它计划包含在 Hadoop 0.19 中,但尚不可用。)
由于文件的大小和读取的顺序性,系统不提供本地缓存数据的机制。缓存的开销足够大,数据应该简单地从 HDFS 源重新读取。
假设单个机器经常发生故障,无论是永久性的还是间歇性的。集群必须能够承受多台机器的完全故障,可能同时发生许多故障(例如,如果一个机架一起发生故障)。虽然性能可能会与丢失的机器数量成比例地下降,但整个系统不应变得过于缓慢,也不应丢失信息。数据复制
策略可以解决这个问题。