我想让我对 hadoop 分布式缓存的理解清楚。我知道当我们将文件添加到分布式缓存时,文件会加载到集群中每个节点的磁盘上。
那么文件的数据如何传输到集群中的所有节点。是通过网络吗?如果是这样,它不会对网络造成压力吗?
我有以下想法,对吗?
如果文件很大,会不会出现网络拥塞?
如果节点数量多,即使文件是中小文件,文件的复制和传输到所有节点,会不会造成网络拥塞和内存限制?
请帮助我理解这些概念。
谢谢!!!
我想让我对 hadoop 分布式缓存的理解清楚。我知道当我们将文件添加到分布式缓存时,文件会加载到集群中每个节点的磁盘上。
那么文件的数据如何传输到集群中的所有节点。是通过网络吗?如果是这样,它不会对网络造成压力吗?
我有以下想法,对吗?
如果文件很大,会不会出现网络拥塞?
如果节点数量多,即使文件是中小文件,文件的复制和传输到所有节点,会不会造成网络拥塞和内存限制?
请帮助我理解这些概念。
谢谢!!!
是的,文件是通过网络传输的,通常是通过 HDFS。与将 HDFS 用于任何非数据本地任务相比,它不会对网络造成更大的压力。
如果文件很大,则可能会出现网络拥塞,但是您已经将 jar 推送到所有这些任务跟踪器,因此只要您的文件不比 jar 大太多,您的开销不应该是太糟糕了。
文件的复制与最终会提取该文件的任务跟踪器的数量完全分开。复制也将从一个节点链接到另一个节点,并且无论如何都是拥有容错分布式文件系统的成本。同样,假设分布式缓存中的文件与您的 jar 具有相同的大小,网络拥塞并不比将您的 jar 推送到所有任务跟踪器更成问题。
总的来说,分布式缓存的开销是微不足道的,只要它按预期使用,作为一种将相当小的缓存数据推送到执行计算的任务跟踪器的本地方式。
编辑:这是 0.20 的DistributedCache文档。请注意,这些文件是通过 url 指定的。通常你会在你的本地 hdfs:// 设置中使用一些东西。
我认为您对分布式缓存的理解是正确的。因为我也这么认为:) 也许增加分布式缓存的复制可以减少网络传输