gpt4 book ai didi

hadoop - "local caching of data"在本文的上下文中是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 14:32:16 26 4
gpt4 key购买 nike

摘自以下几段文字——(http://developer.yahoo.com/hadoop/tutorial/module2.html),里面提到顺序可读的大文件不适合本地缓存。但我不明白这里的 local 是什么意思...

我认为有两种假设:一种是Client从HDFS缓存数据,另一种是datanode将hdfs数据缓存在本地文件系统或Memory中,供Clients快速访问。有没有人可以解释更多?非常感谢。


但是虽然 HDFS 的可扩展性很强,但它的高性能设计也限制了它特定类别的应用程序;它不像 NFS 那样通用。有一个大使用 HDFS 做出的额外决定和权衡的数量。特别是:

假定使用 HDFS 的应用程序从文件。 HDFS 经过优化以提供流式读取性能;这是以牺牲随机查找文件中任意位置的时间。

数据会一次写入HDFS,然后多次读取;文件更新在它们已经关闭之后不受支持。 (Hadoop 的扩展将提供支持将新数据附加到文件末尾;它计划包含在Hadoop 0.19 但尚不可用。)

由于文件很大,而且读取的顺序性质,系统不会不提供本地数据缓存的机制。缓存的开销足够大该数据应该简单地从 HDFS 源重新读取。

假设个别机器经常发生故障,无论是永久性的还是断断续续的。集群必须能够承受几个完全失败机器,可能很多同时发生(例如,如果机架一起发生故障)。虽然性能可能会随着丢失的机器数量成比例地下降,但系统作为整体不应该变得太慢,也不应该丢失信息。数据复制
解决这个问题的策略。


最佳答案

任何真正的 Mapreduce 作业可能会处理来自 HDFS 的 GB(10/100/1000 秒)数据。

因此,任何一个映射器实例很可能会按顺序处理大量数据(典型的 block 大小为 64/128/256 MB,具体取决于您的配置)(它将读取文件/ block 在其从头到尾完整。

在同一台机器上运行的另一个映射器实例也不太可能在不久的将来再次处理该数据 block ,更重要的是多个映射器实例也将在任何一个 TaskTracker 中与该映射器一起处理数据(希望有相当一部分是“本地”到数据的实际物理位置,即数据 block 的副本也存在于运行映射器实例的同一台机器上。

考虑到所有这些,缓存从 HDFS 读取的数据可能不会给您带来太多好处——您很可能不会在查询另一个 block 之前对该数据进行缓存命中,并最终将其替换在缓存中.

关于hadoop - "local caching of data"在本文的上下文中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com