关于Hadoop中分布式缓存的困惑

时间:2014-05-20 05:31:22

标签: caching hadoop hive distributed-cache

分发缓存实际意味着什么?将文件放在分布式缓存中意味着它在每个datanode中都可用,因此该数据不会有节点间通信,或者它是否意味着该文件在每个节点的内存中? 如果没有,通过什么方式我可以在整个工作的内存中有一个文件?这可以用于map-reduce和UDF ..

(特别是有一些配置数据,相对较小,我希望保留在内存中,因为UDF适用于配置单元查询...?)

谢谢和问候, Dhruv Kapur。

1 个答案:

答案 0 :(得分:19)

DistributedCache是​​Map-Reduce框架提供的一种工具,用于缓存应用程序所需的文件。为作业缓存文件后,hadoop框架将使映射/缩减任务正在运行的每个数据节点(在文件系统中,而不是在内存中)可用。然后,您可以在Mapper或Reducer作业中将缓存文件作为本地文件进行访问。现在,您可以轻松读取缓存文件并在代码中填充一些集合(例如Array,Hashmap等)。

参考https://hadoop.apache.org/docs/r2.6.1/api/org/apache/hadoop/filecache/DistributedCache.html

如果您还有一些问题,请告诉我。

您可以在UDF代码中将缓存文件读取为本地文件。使用JAVA API读取文件后,只需填充任何集合(在内存中)。

参考网址http://www.lichun.cc/blog/2013/06/use-a-lookup-hashmap-in-hive-script/

-Ashish