对于是否使用分布式缓存分发文件,有什么指导原则吗?我有一个86746785大小的文件(我使用 hadoop dfs -dus -不知道这是不是在 bytes 或者什么)。分发这个文件是个好主意吗?
hadoop dfs -dus
bytes
dddzy1tm1#
唯一可行的答案是“视情况而定”。关于使用分布式缓存,您必须考虑的是文件被复制到任务中涉及的每个节点,这显然需要占用带宽。另外,通常如果您希望文件在分布式缓存中,您会将文件保存在内存中,因此您必须考虑到这一点。至于你的情况——是的,那些是字节。大小大约为86MB,这对于分布式缓存来说非常合适。几百兆以内的任何东西都应该是。
f4t66c6m2#
默认情况下,分布式缓存的大小为10gb。但最好在分布式缓存中保留几MB的数据,否则会影响应用程序的性能。
djmepvbi3#
除了tc1的答案外,还要考虑:何时/何地使用这些文件?群集有多大?在许多Map器、单个缩减器(或少量)的场景中,您只需要缩减器中的文件,我建议您不要这样做,因为您也可以自己在缩减器中下拉文件(设置方法),而不是不必要地为每个任务节点运行Map程序-尤其是如果文件很大(这取决于集群中有多少节点)你要把多少文件放到缓存里?如果出于某种原因,您有100个文件要分发,那么您最好对它们进行tar处理,并将tar文件放在分布式缓存的归档集中(dist缓存将负责为您解开文件)。这里要避免的是,如果您没有将它们放在dist缓存中,而是直接从hdfs加载它们,那么您可能会遇到这样的情况:有1000个Map器和/或还原器试图打开同一个文件,这可能会导致名称节点和数据节点出现太多打开的文件问题
3条答案
按热度按时间dddzy1tm1#
唯一可行的答案是“视情况而定”。
关于使用分布式缓存,您必须考虑的是文件被复制到任务中涉及的每个节点,这显然需要占用带宽。另外,通常如果您希望文件在分布式缓存中,您会将文件保存在内存中,因此您必须考虑到这一点。
至于你的情况——是的,那些是字节。大小大约为86MB,这对于分布式缓存来说非常合适。几百兆以内的任何东西都应该是。
f4t66c6m2#
默认情况下,分布式缓存的大小为10gb。但最好在分布式缓存中保留几MB的数据,否则会影响应用程序的性能。
djmepvbi3#
除了tc1的答案外,还要考虑:
何时/何地使用这些文件?群集有多大?
在许多Map器、单个缩减器(或少量)的场景中,您只需要缩减器中的文件,我建议您不要这样做,因为您也可以自己在缩减器中下拉文件(设置方法),而不是不必要地为每个任务节点运行Map程序-尤其是如果文件很大(这取决于集群中有多少节点)
你要把多少文件放到缓存里?
如果出于某种原因,您有100个文件要分发,那么您最好对它们进行tar处理,并将tar文件放在分布式缓存的归档集中(dist缓存将负责为您解开文件)。这里要避免的是,如果您没有将它们放在dist缓存中,而是直接从hdfs加载它们,那么您可能会遇到这样的情况:有1000个Map器和/或还原器试图打开同一个文件,这可能会导致名称节点和数据节点出现太多打开的文件问题