1. 程式人生 > >編譯oozie-4.1.0之中遇到的問題彙總

編譯oozie-4.1.0之中遇到的問題彙總

背景

2016年4月的第三週,我一直在調查Falcon這個資料管理平臺,但卻在調查的過程中發現,當自己在Firefox中輸入http://localhost:15443/public後,在接下來的設定中,需要用到Oozie。鑑於之前編譯falcon的經驗來看,還是自行編譯Oozie原始碼為好。為此,就遇到了各種各樣曾經困擾自己的問題,現在問題解決了,為了梳理自己過去一週自己的思路,打算將遇到的問題一一記錄下來,以備以後遇到類似的問題,優化思路,提高解決問題的效率。

Apache Oozie

Oozie是什麼,這個我現在也敢說百分之百的理解。但根據自己在設定Falcon以及最後在Oozie web介面看到的資訊來看,Oozie是一個根據時間來排程作業的一個workflow引擎。 可以看看Oozie在falcon框架中的位置就一目瞭然了。

遇到的問題

問題1
編譯Oozie中,遇到最大的,也是最耗時的問題,就是codehaus repository這個資料倉無法下載的問題,或者說原始碼pom.xml檔案中指定的URL不穩定,中途一次是可以下載的,但之後就不行了。

分析
  1. 第一次使用maven,對裡面一些的實際應用不是很清楚,當發生上面的問題後,質疑是網速的問題導致的,僥倖的以為多試幾次應該是可以解決的。導致浪費了大量的時間,也沒有最終解決問題。
  2. 質疑是Oozie的一個BUG,查看了Oozie buglist中,也有人提及到這個問題,但最終確認不是,而是指定的資料倉庫不穩定或者是無法訪問之類的。
  3. 排除了這些後,跟JC組的人聊怎麼提高虛擬機器的網速的問題時,想到了可以試試去找找有沒有對應的備用的資料倉庫,這下才找到解決方案了。
解決策       在網上找到了替換Codehaus repository的URL,如下所示:
<repositories>
     <repository>
       <id>Codehaus repository</id>
       <name>codehaus-mule-repo</name>
       <url>https://repository-master.mulesoft.org/nexus/content/groups/public/
       </url>
       <layout>default</layout>
     </repository>
   </repositories>

如果你是使用Oozie的原始碼直接編譯的話,直接換成上面的URL地址。 如果你是使用Falcon中package.sh一起來編譯falcon和Oozie的話,只需要在~/.m2/settings.xml只追加上面的內容即可。 問題2
當編譯成功後,由於急於求成,沒有仔細的閱讀Oozie官網上關於啟動Oozie的教程,導致發生了Web console is disabled問題。再者,在使用bin/oozie-setup.sh prepare-war libext/命令的時候,忽視了console中輸出的一條[INFO]EXTJS is disabled的資訊,以為只是一條INFO,連個WARN都不是,應該不影響應用,但坑還是自己要踩的。最終在firefox裡輸入http://localhost:11000/oozie後,就出現了Web console is disabled的資訊。
分析
  1. 自己對問題的認識不足,web extjs只是當需要使用web介面的時候,才會影響web介面的顯示,因為缺少相應的js檔案,但對Ooize在linux下使用命令來執行是絲毫沒有影響的。
  2. 登入http://localhost:11000/oozie後,發現web介面不能正確顯示,檢視oozie官網,最終發現【If using the ExtJS library copy the ZIP file to the libext/ directory.】,本來看到這句話,應該就直接可以解決問題了,但又參考了一下網上其他的資訊,將下載的ext-2.3.zip檔案直接解壓,將解壓後的檔案拷貝到了libext,折騰了好久。還是沒有解決問題
  3. 對指令碼oozie-setup.sh沒有仔細的閱讀,順帶吐槽一下,Oozie官網以及oozie的原始碼READ.txt中都沒有提及,oozie-setup.sh中硬編碼了ext的版本號,直接指定了ext-2.2.zip,導致自己最後即使將ext-2.3.0.zip檔案拷貝過去後,也沒有直接解決。【其實最後反思,製藥將shell中的ext指定為ext-2.3.o.zip,應該也是可以解決的】
解決策
  1. 下載ext-2.2.zip,將其拷貝紙libext/下,執行。bin/oozie-setup.sh prepare-war -d libext/,然後執行./bin/oozied.sh run以demon形式啟動Oozie服務。
  2. 如果已經下載ext-2.3.0.zip的話,只需將oozie-setup.sh中ext的版本換成自己現有的,然後的操作跟接下來1中 一樣。
PS:啟動Oozie服務的官網連結:https://oozie.apache.org/docs/4.2.0/DG_QuickStart.html @2016/4/24 1:04 --over--