2016-04-27 54 views
0

我有一个对象:在群集模式使用DistributedCached

class Cache { 
    Map<K,V> map; 
} 

我用DistributedCache指定URI包含此对象,然后在每个映射任务的设置()函数,我加载处理此高速缓存对象特别是使用Cache对象在每个地图任务中存储一些值。

我的问题是,当我们在集群模式下运行hadoop时,每个datanode中的地图内容将与其他地方的内容不同。这样对吗?因为当我以本地模式开发时,地图的内容包含整个数据集的结果。

回答

0

保存在DN上的数据将具有相同的格式,并且映射器将处理相同格式的文件。在驱动程序代码中,您必须定义输入和格式类型。在这种情况下,上下文将相同。如果地图任务将在任意数量的DN上运行,那么地图上下文将相同。

现在在分布式缓存中,您将使用DistributedCache API添加文件。在设置方法中,您将检查您想要在Path对象数组中处理的文件。

+0

感谢您的回答,但我的意思是,map'p的内容会不一样或不一样?例如:节点1包含A,B,C,节点2包含D,E,F ...,则节点1中的缓存文件包含节点2中的(A,B,C)和缓存文件(D,E,F) ? – nd07

+0

如果您正在编写Map Reduce应用程序,您希望在Hadoop集群中的所有节点上共享某些文件。它可以是简单的属性文件或可以是可执行的jar文件。 Hadoop Map Reduce Project为我们提供了一种名为DistributedCache的功能。 此分布式缓存配置了作业配置,它的作用是向群集上的所有机器提供只读数据。 –