1

是否有关于是否使用分布式缓存分发文件的指南?

我有一个大小为 86746785 的文件(我使用hadoop dfs -dus- 不知道这是在里面bytes还是什么)。分发这个文件是个好主意吗?

4

3 回答 3

3

唯一可行的答案是“视情况而定”。

关于使用分布式缓存,您必须考虑的是文件被复制到您的任务中涉及的每个节点,这显然会占用带宽。此外,通常如果您希望文件在分布式缓存中,您会将文件保存在内存中,因此您必须考虑到这一点。

至于你的情况——是的,那些是字节。大小约为 86 MB,非常适合分布式缓存。几百 MB 以内的任何东西都应该是。

于 2013-04-05T10:38:01.320 回答
1

除了 TC1 的回答,还要考虑:

  • 您打算何时/何地使用这些文件以及您的集群有多大?
    • 在许多映射器、单个减速器(或少数)场景中,您只需要减速器中的文件,我建议您不要这样做,因为您不妨自己在减速器(设置方法)中拉下文件,而不是不必要地对于您的映射器运行的每个任务节点 - 特别是如果文件很大(这取决于您的集群中有多少节点)
  • 您将多少文件放入缓存中?
    • 如果由于某种原因您有 100 多个文件要分发,您最好将它们打包并将 tar 文件放入分布式缓存的档案集中(dist 缓存会为您解压缩文件)。您在这里要避免的事情是,如果您没有将它们放在 dist 缓存中而是直接从 HDFS 加载它们,您可能会遇到这样一种情况,即您有 1000 个映射器和/或减速器试图打开同一个文件可能导致名称节点和数据节点的打开文件过多问题
于 2013-04-05T12:07:18.650 回答
0

分布式缓存的大小默认为 10GB。但最好在分布式缓存中保留几 MB 的数据。否则会影响应用程序的性能。

于 2013-04-05T11:06:46.273 回答