我正在用Hadoop编写一个Java MapReduce程序,每个化简器都需要访问静态XML文件(其中包含一些关于将规则应用于值列表的业务逻辑)。我决定将此文件存储在分布式缓存中,然后利用分布式缓存 API 在每个化简器中访问它(序列化它)。我还没有实现这一点,但是在HDFS/分布式模式下使用此功能时,API似乎很简单。但是,是否可以在伪分布式独立模式下使用它进行测试?它将如何工作?
另外,在每个化简器中序列化文件是一个坏主意吗?我愿意就将"全局静态数据"分发给化简器的其他方法提出建议。
谢谢!
是的,你可以 - 它的工作方式与在真实集群中的工作方式相同。
如果未修复,最好使用分布式缓存。 另一种选择是将数据打包到包含作业代码的 jar 中,在这种情况下,当您必须更改 XML 时,它不会那么灵活(您仍然可以更改 jar,但这不是一种干净的方法)