9

分布式缓存实际上是什么意思?在分布式缓存中拥有一个文件意味着它在每个数据节点中都可用,因此该数据不会有节点间通信,还是意味着文件在每个节点的内存中?如果没有,我可以通过什么方式在整个作业的内存中保存一个文件?这可以同时为 map-reduce 和 UDF 完成吗?

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

谢谢和问候, Dhruv Kapur。

4

1 回答 1

20

DistributedCache 是 Map-Reduce 框架提供的一种工具,用于缓存应用程序所需的文件。一旦你为你的工作缓存了一个文件,hadoop 框架就会让它在你运行 map/reduce 任务的每个数据节点(在文件系统中,而不是在内存中)上可用。然后,您可以在 Mapper 或 Reducer 作业中将缓存文件作为本地文件访问。现在您可以轻松地读取缓存文件并在代码中填充一些集合(例如数组、哈希图等)。

参考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/

-阿什什

于 2014-05-20T08:09:39.297 回答