ambari是一个Hadoop套件的管理工具,可以方便部署、管理及监控。最初开发时使用的就是RH系的Linux,只支持RHEL、CentOS5/6、OEL、SLES暂不支持Ubuntu;可我的需求就是在ubuntu系统中使用,我认为在ambari完全使用开源软件堆积,想兼容Debian系的系统不会太难,而且看了一下文档,大概了解了编译时会生成rpm包,而ubuntu又是有办法解压rpm的,理论上说没有问题,于是决定自己实践一把。

后记:在追查代码的过程中发现,目前在开发的ambari版本已经开始支持ubuntu12;

主要步骤都参考官方cwiki:Ambari 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

相关文章: