2013-04-25 191 views
0

有没有什么方法可以设置/获取全局Hadoop配置对象,如下面的伪代码?当然,我可以使用静态方法创建我自己的类,这些方法可以完成我所需要的功能,但如果在Hadoop Java API中可以找到类似的东西,则不会使依赖关系更加复杂。现在我没有发现任何可用的东西。有什么建议?全局Hadoop配置存储

在某些应用程序级别配置程序中。

Configuration conf = new Configuration(); 
conf.set(...); 
<something>.SetGlobalConfig(conf); 

在较低层的客户端代码。

Configuration conf = <something>.GetGlobalConfig(); 
// ... something that needs configuration. 

更新1:我知道Hadoop的.xml配置文件,实际上它是可能的解决方案之一,但它是最好都配置在代码完成,无需外部文件。

更新2:根据提供的要点决定是否使用与工作代码一起打包的'常用'.xml配置。客户端可以通过命令行参数“调整”一些参数,这些参数由于使用了相同的工具而保持了类似于hadoop的语义。为了从Hadoop配置/用户方面中分离出其他代码,更多的应用程序代码通过特殊的COnfigurator singletone请求配置。

原来的问题被认为是解决的,虽然我不介意有用的想法。

+1

说实话,代码中的配置是不好的风格,因为你需要重新编译你的项目以便进行配置更改。如果你坚持在代码中这样做,你必须自己写,因为Hadoop不提供这种代码中的设施。 – 2013-04-25 08:06:52

+0

好的说法。也许我会采取这个解决方案,但让我有一些时间来找到有用的包装方案。 – 2013-04-25 08:11:31

+1

请记住,您可以使用'-Dfoo = bar'选项在命令行中设置这些配置设置,这是另一个不会在代码中覆盖它们的原因。 – Quetzalcoatl 2013-04-25 08:31:15

回答

1

当你调用

Configuration conf = new Configuration(); 

它会寻找到你的工程,为core-default.xmlcore-site.xml类路径。

core-site.xml正是您想要将“全局”配置放入的位置。