[實踐] ubuntu下編譯安裝ambari


ambari是一個Hadoop套件的管理工具,可以方便部署、管理及監控。最初開發時使用的就是RH系的Linux,只支持RHEL、CentOS5/6、OEL、SLES暫不支持Ubuntu;可我的需求就是在ubuntu系統中使用,我認為在ambari完全使用開源軟件堆積,想兼容Debian系的系統不會太難,而且看了一下文檔,大概了解了編譯時會生成rpm包,而ubuntu又是有辦法解壓rpm的,理論上說沒有問題,於是決定自己實踐一把。

后記:在追查代碼的過程中發現,目前在開發的ambari版本已經開始支持ubuntu12;

主要步驟都參考官方cwiki:Build and Install Ambari 1.4.1Ambari Development

環境

ubuntu 10.04

postgresql 8.4

 

安裝Node.js

訪問http://nodejs.org/download/,下載源碼,解壓后編譯安裝:

$ ./configure
$ make
$ sudo make install

 

獲取ambari

https://dist.apache.org/repos/dist/release/incubator/ambari/下載的ambari(1.4.1及1.2.5),及從ambari github上clone出的trunk,編譯后沒有ambari-web模塊,且沒有找到有效解決方案。最后通過cwiki上開發說明提供的git鏈接找到了另一處源碼,這份源碼不僅可用,而且從腳本中可以看出開發者已經開始嘗試兼容ubuntu;

$ git clone https://git-wip-us.apache.org/repos/asf/ambari.git
$ cd ambari

ambari的代碼獲取過程一波三折,從中我發覺ambari項目的代碼及文檔都比較混亂,或許該項目的活躍度不是太高,這也是可以理解的:對於已有hadoop集群的人來說,通常會選擇自己開發管理及監控系統,而對於沒有hadoop集群的人,則可以直接通常操作系統軟件源獲取ambari的發布版。

 

安裝brunch

$ cd ambary-web
$ sudo npm install -g brunch

 

安裝rpmbuild

ambari編譯時依賴rpmbuild打包成rpm安裝包,因而需要rpm套件,很幸運,ubuntu可以安裝這一套件:

$ sudo apt-get install rpm yum

 

編譯ambari

為使得ambari支持ubuntu10,需要對源碼進行小的修改,修改ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java,為ALL_SUPPORTED_OS添加ubuntu10,patch如下:

diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
index 2305d5e..9bcfae3 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java
@@ -81,7 +81,7 @@ public class AmbariMetaInfo {
   // all the supported OS'es
   private static final List<String> ALL_SUPPORTED_OS = Arrays.asList(
       "centos5", "redhat5", "centos6", "redhat6", "oraclelinux5",
-      "oraclelinux6", "suse11", "sles11", "ubuntu12");
+      "oraclelinux6", "suse11", "sles11", "ubuntu10", "ubuntu12");
   
   public static final String SERVICE_METRIC_FILE_NAME = "metrics.json";
View Code

 

編譯如下:

$ cd ambary
$ mvn -X -B -e clean install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6"


注:需要mvn 3,mvn 3的最新版本是3.1.1,但因為maven 3.1.x與aether的某些兼容性問題,我降級使用了maven 3.0.5;

 

安裝ambari-server

$ cd ambari-server/target/rpm/ambari-server/RPMS/noarch/
$ sudo rpm -iUvh ambari-server-*.rpm --force-debian --nodeps

注:本應該這樣安裝:sudo yum install ambari-server*.rpm

但會遇到依賴問題:
Error: Missing Dependency: postgresql-server >= 8.1 is needed by package xxx

即使本地安裝了postgresql、ssh等軟件,但因為這些軟件不在yum的管理數據庫中有記錄,所以依然無法解決依賴問題,因而強制忽略依賴完成安裝。

 

安裝postgresql

$ sudo apt-get install postgresql
$ cd /etc/init.d && sudo ln -s postgresql-8.4 postgresql

注:

(1)安裝后會自動啟動postgresql服務;但我遇到這個問題:


* The PostgreSQL server failed to start. Please check the log output:
2013-11-28 11:39:15 CST LOG:  could not bind IPv6 socket: Cannot assign requested address
2013-11-28 11:39:15 CST HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2013-11-28 11:39:15 CST WARNING:  could not create listen socket for "localhost"
2013-11-28 11:39:15 CST FATAL:  could not create any TCP/IP sockets

沒有查到解決方案,最后把postgresql的配置文件/etc/postgresql/8.4/main/postgresql.conf修改了一下,把listen_addresses寫成127.0.0.1,這樣它就不會嘗試去綁定ipv6的端口,繞過這一問題;

(2)上面第二步sudo ln操作的目標在於,可以直接通過sudo service postgresql來管理psql數據庫,而不是sudo service postgresql-8.4;這對於兼容后面的部署腳本很重要;

 

設置和啟動ambari-server

對/etc/ambari-server/conf/ambari.properties進行必要的設置,比如設置java.home為已經安裝的jdk目錄(如果沒有的話,setup過程會自動下載)、設置ambari-server.user為ambari用戶;

設置完成后開始setup及start:

$ sudo ambari-server setup -v
$ sudo ambary-server start

注:強烈建議在setup時使用-v參數;雖然開發版本中已經在注意兼容ubuntu,但依然有細節做的不好,比如無法正確判斷psql數據庫是否啟動。打開verbose方便你檢查設置出錯的哪一步。

 

至此,可以訪問http://127.0.0.1:8080,使用admin:admin登錄進ambari系統了。

 

安裝ambari-agent

$ cd ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/
$ sudo rpm -ivh ambari-agent-*.rpm --force-debian --nodeps

 

設置和啟動ambari-agent

修改/etc/ambari-agent/conf/ambari-agent.ini進行必要的配置,然后啟動ambari-agent

$ sudo ambari-agent start

 

----

后記:本文原計划寫成一個系列,包括從編譯安裝到部署到對已有集群進行監控管理,雖然在前期的編譯安裝過程已經通過,但到部署時才發現,其要求所有節點可以連接外網(可我的部署環境只有內網),或自己搭建一個HDP需要的軟件倉庫鏡像,這些已經超出我的設想,因而決定不再繼續。這算是一次由於前期調研不足而導致走了彎路的失敗的實驗報告,留做記念。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM