对于DistributedCache文件hadoop来说,有多大?

时间:2013-04-05 09:56:04

标签: hadoop

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

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

3 个答案:

答案 0 :(得分:3)

唯一可行的答案是“它取决于”。

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

至于你的情况 - 是的,那些是字节。大小约为86 MB,这对于分布式缓存来说非常好。几百MB内的任何东西都应该是。

答案 1 :(得分:1)

除TC1的答案外,还要考虑:

  • 您何时/何地使用文件以及您的群集有多大?
    • 在许多映射器中,单个reducer(或少量)场景,你只需要reducer中的文件我会建议不要你,因为你可能只是在reducer(设置方法)中自己下拉文件,而不是为你的映射器运行的每个任务节点不必要地 - 特别是如果文件很大(这取决于你的集群中有多少个节点)。
  • 您在缓存中放入了多少个文件?
    • 如果出于某种原因你要分发100个文件,你最好把它们放在tar并将tar文件放在分布式缓存的档案集中(dist cache会负责解开你的文件) 。你在这里要避免的事情是,如果你没有把它们放在dist缓存中,而是直接从HDFS加载它们,你可能会遇到这样一个场景,你有1000个映射器和或者还原器尝试打开同一个文件可能导致名称节点和数据节点太多打开文件问题

答案 2 :(得分:0)

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