Hadoop技術內幕——Hadoop配置信息處理

  配置系統是複雜軟件必不可少的一部分,org.apache.hadoop.conf.Configuration在Hadooop各個子項目中發揮着重要作用。

  windows系統廣泛使用一種特殊批的ASCII文件.ini作爲其主要配置文件標準,被稱爲(Initialization File)或概要文件(profile);java中JDK提供了java.util.Properties類處理簡單的配置文件。而Hadoop採用自己獨有的配置文件管理系統。

  Hadoop的配置文件的根元素是configuration,一般只包含子元素property,每個property元素就是一個配置項,配置文件不支持分層或分級。在configuration中,每個屬性都是String類型,值類型可以是多種類型。

  合併資源指交將多個配置文件合併,通過loadResources()方法實現的。如果兩個配置資源包含了相同的配置項,而且前一個沒有標記爲final,那麼後面的配置將覆蓋前面的配置。

  hadoop系統還有一個重要 功能 ,就是支持屬性擴展。如dfs.name.dir的值爲${hadoop,tmp.dir}/dfs/name。其中${hadoop,tmp.dir}會使用Configuration中的相應屬性進行擴展。

  使用Configuration類的一般過程是:構造Configuration對象 ,並通過類的addResource()方法添加需要加載的資源;然後就可以使用get*方法和set*方法訪問/設置配置項,資源會在第一次使用的時候自動加載到對象中。

  Configuration的成員變量包括:

  (1)-quietmode:boolean,用來設置加載配置的模式。默認true,在加載解析配置文件的過程中,不輸出日誌信息。

  (2)-loadDefaults:boolean,服務業確定是否加載默認資源,這些資源保存在defaultResources中。

  (3)-defaultResources:ArrayList<String>,是個靜態成員變量,通過方法addDefaultResource()可以添加系統的默認資源。

  (4)-resources:ArrayList<Object>,保存所有通過 addResource()方法添加Configuration對象的資源。

  (5)-properties:Properties,Hadoop配置文件解析後的鍵-值對都存放在properties中。

  (6)-finalParameters:Set<String>,用來保存所有配置文件中已經被聲明爲final的鍵-值對的鍵。

  (7)-overlay:Properties,用來記錄通過set()方式改變的配置項,即,是應用設置的,不是通過配置資源解析得到的。

  (8)-classLoader:ClassLoader,是一個類加載器變量,可以用來加載指定類,也可以是相關的資源。

  資源通過對象的addResource()方法或類的靜態addDefaultResource()方法添加到了Configuration對象中,添加的資源並不會立即被加載,只是通過 reloadConfiguration()方法清空properties和finalParameters。靜態方法addDefaultResource()通過 靜態成員REGISTRY來清空Configuration對象中的數據。

  Hadoop的配置文件都是古非今XML形式,JAXP(java API for XML Processing)是一種穩定、可靠的XML處理API,支持SAX(simple API for XML)和DOM兩種XML處理方法。SAX提供一種流式的、事件驅動的XML處理方式,但編寫處理邏輯比較複雜,比較適合處理大的XML文件。DOM是首先將XML文檔一次性裝入內存;然後根據文檔中定義的元素和屬性在中建立一個“樹形結構”,也就是一個文檔對象模型,將文檔對象 化,文檔中每個節點對應着模型中一個對象;然後 使用對象 提供 的編程接口,訪問XML文檔進行操作XML文檔。

  Configurable是一個簡單的接口,如果一個類實現了它,意味着這個類是可配置的。即可通過 爲這個類的對象傳入一個Configuration實例,來提供對象工作需要的一些配置信息。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章