2013-04-25 143 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正是您想要將「全局」配置放入的位置。