基于ambari2.4.0进行二次开发

目录

  1. 线上修改
  2. 源码结构
  3. 技术点
  4. 编译环境的搭建
    1. 安装samba
    2. 安装编译环境
    3. 开始编译
  5. WEB内容修改

wiki:https://cwiki.apache.org/confluence/display/AMBARI/Ambari


线上修改

ambari的GUI部分分为两块:

①ambari-admin 页面

②集群管理页面(ambari-web)

从发布结果来看

目录 /var/lib/ambari-server/resources/views/work/ 下面有好多组件的view,每一个目录都是一个子站点

对应访问地址:http://[ambari-server host]:8080/views/[viewname]/[version]/[instance_name]/

viewname就是组件名

version就是大括号里的内容

instance_name是对应目录下view.xml 的auto-instance的name值

如 http://192.168.0.35:8080/views/TEZ/0.7.0.2.5.3.0-136/TEZ_CLUSTER_INSTANCE/

而我们要找的ADMIN部分就是ADMIN_VIEW。里面内容如下

集群管理部分的在 /usr/lib/ambari-server/web

如果只是想简单的改几个文字、替换几张图片的话 直接改这里面的内容就可以了。

不过都是经过合并压缩的,直接修改很不方便(主要代码都压缩到了一个app.js中,7M+)。


源码结构

为了方便了解结构树,使用了一个在线脑图来展示。

查看完整

技术点


编译环境的搭建

1.安装samba

因为需要用到nodejs、python等编译环境,并且nodejs有些库文件是需要C++ 、ruby、python等一些语言进行编译,在windows上处理会比较复杂,所以选择在Linux上搭建编译环境,并使用samba协议共享Linux中的文件,在linux上运行测试,在windows下进行代码修改。

  1. 安装samba

    #先检查是否已经安装
    #rpm -qa | grep samba
    
    #未安装的话  执行安装命令
    yum install samba
  2. 重启 SMB服务

    service smb restart
  3. 在 Linux 上建立samba用户

    useradd samba
  4. 创建 Smb 用户,此用户必须是 Linux 上已经建立的,输入密码,完成即可。

    smbpasswd -a samba
  5. 关闭防火墙
  6. 确保setlinux关闭

    setenforce 0
  7. 修改/etc/samba/smb.conf,在最后加入想要共享的文件夹:

    [samba home]
        path = /home/samba
        writeable = yes
        guest ok = no 

现在就可以在windows上访问共享的目录了  在文件资源管理器上输入 \\<samba_ip> 即可 。注意ip前面有两个反斜线

2.安装编译环境

  1. 安装JDK

    yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
    #默认安装路径: /usr/lib/jvm/java-1.7.0-openjdk
  2. 安装maven

    yum -y install mavenmvn -v #验证安装情况
  3. 安装Python

    yum -y install python
    python -V #验证安装情况
  4. 安装rpm-build

    rpm -qa | grep rpm-build #检验是否存在
    
    yum install rpm-build
  5. 安装g++

    #检测
    rpm -qa | grep gcc-c++
    
    #安装
    yum install gcc-c++
  6. 安装Nodejs
    1. 首先要选择一个nodejs版本,注意如果python是2.6以上的话,nodejs则必须是4.0以上 版本地址。我使用的7.3.0
    2. 使用 wget 下载到某目录

      wget http://nodejs.org/dist/latest-v7.x/node-v7.3.0-linux-x64.tar.gz
    3. 解压

      tar zxvf node-v7.3.0-linux-x64.tar.gz
    4. 设置 /etc/profile 中的环境变量

      ......
      export NODE_HOME="/opt/node-v7.3.0-linux-x64"
      export PATH=$PATH:$NODE_HOME/bin

      使之生效

      source /etc/profile
    5. 查看安装情况

      node -vnpm -v
  7. 安装Brunch

    npm install -g brunch
    
    brunch  #检测
  8. 安装Git(如果代码是在本地的话,可略过这一步)

    yum install git
    
    git --version #检测

    使用git下载ambari代码

3.开始编译

  1. cd 到ambari的主目录
  2. 给ambari打上版本号

    mvn versions:set -DnewVersion=2.4.2.0  #后面这是位的版本号,跟ambari版本保持一致即可
  3. 编译ambari

    mvn -B -e clean install package rpm:rpm -DnewVersion=2.4.2.0 -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl  #四位版本号 与上一步一致

    这一步会不断的下载依赖文件,时间可能会比较长 项目中需要使用nodejs中的npm管理依赖,有些依赖特别难下载,下载好之后会存放在ambari-web/node_modules中,在下次编译的时候可以对ambari-web/node_modules备份,下次编译的时候,可以先对项目进行mvn clean删除,然后再将备份的node_modules拷入项目中,重新执行mvn install操作,可以节省很多时间。

  4. 安装lodash.  cd到ambari-web/node-modules目录

    npm install lodash --save
    cd lodash
    npm install --save sass-brunch
  5. cd 到ambari-web目录下 执行命令

    brunch watch --server

    顺利的话 打开网址 http://<ambari-webserver ip>:3333 就能看到成果了

待整合内容

http://stackoverflow.com/questions/29468404/gyp-warn-eacces-user-root-does-not-have-permission-to-access-the-dev-dir

插播1. 关于Brunch

Brunch自动化打包压缩编译工具。前端的工程化利器。

源码发生的改动会迅速反应到压缩结果。

官文请戳

  1. 确定安装好node.js
  2. 在全局安装brunch

    npm install -g brunch
  3. 在当前目录创建项目 hellobrunch

    brunch new hellobrunch -s es6

    创建成功后,当前目录会创建文件夹hellobrunch,生成一些结构和相关文件,并通过npm下载安装所有的依赖包(node_modules)

  4. cd到刚创建的project目录(即hellobrunch),进行编译。编译压缩合并的结果会出现在 public文件夹

    brunch build

    其中:assets中的文件会被直接拷贝到publicbrunch-config存放的是压缩合并编译的规则package.json存放的是依赖包信息public/app.js及public/app.css是根据合并规则生成的合并结果*.map是用于调试的代码映射信息
  5. 现在一个简单的webapp就成型了 接下来就是启动。启动后 如果源码发生变化  public中的内容也会自动跟进变化

    brunch watch --server

    可以看到服务的端口是3333,所以我们可以在浏览器上通过http://<ip>:3333 进行查看

  6. 安装插件 如jquery

    npm install --save jquery

    应用:(在app/initialize.js的最后 添加以下代码。保存后会发现  public/app.js中已经出现了这个代码片段)

    var $ = require(‘jquery‘);
    console.log(‘Tasty Brunch, just trying to use jQuery!‘, $(‘body‘));
插播2:Ember.js

与angularjs类似的前端框架

官文请戳

插播3:NPM

nodejs包管理器

npm install -g <package-name>  #全局模式安装模块

npm install <package-name>      #在当前所在项目安装模块 (所以要进入项目目录)

npm install <package-name>@<version>  #安装指定版本的模块  (不指定的话 默认获取最新版)

npm install <package-name>@">=v1 <v2"  #指定版本范围

npm uninstall [-g]  <package name>  #卸载本地[全局]模块

npm update [-g] <package name>    #更新本地[全局]模块

var moduleA = require(‘<package-name>‘);  #使用模块

如果出现[cannot find module ‘xxxx‘]的问题  参考http://stackoverflow.com/questions/10776405/npm-cant-install-appjs-error-cannot-find-module-graceful-fs


Web内容修改

我们先实现基于发布结果进行修改。

ambari-admin是使用angularjs开发,模板引擎技术也是使用简单的html片段。直接修改即可

参考:

时间: 2024-10-17 14:06:22

基于ambari2.4.0进行二次开发的相关文章

基于PHP实战ThinkSNS V3二次开发

基于PHP实战ThinkSNS V3二次开发(系统架构.网站定制化开发.问答系统开发) 课程分类:PHP 适合人群:中级 课时数量:25课时 服务类型:C类(普通服务类课程) 用到技术:PHP.ThinkSNS V3二次开发 涉及项目:ThinkSNS V3二次开发.问答系统 咨询QQ:1840215592 课程内容简介: 由于ThinkSNS产品提供了完整的微博及系统功能,并提供了非常友好的二次开发规范.越多越多的企业和开发人员选择使用ThinkSNS构建成熟的SNS企业网站和商业项目.本课程

基于Java的Arc Engine二次开发的环境的配置

1.软件准备 ArcGIS for Desktop 10.2, Arc engine, jdk-7u60-windows-i586,Eclipse Mar2 2.软件的安装 2.1 ArcGIS for Desktop 10.2的安装 软件的下载:ArcGIS for Desktop 10.3全套的下载:http://pan.baidu.com/s/1o7F4yue,附带破解方法 本文使用的是10.2,其下载路径与安装破解方法如:http://jingyan.baidu.com/article/

基于C#编程语言的CAD二次开发技术---展测量点坐标

一.引言       AutoCAD 是目前世界上功能最强大的绘图软件.在测绘行业,使用 AutoCAD 直接绘图,或用以 AutoCAD 为平台开发出的各种绘图软件来绘图,大大提高了绘图的精度.准度和速度.今天介绍一下如何用C#编写将野外测量点坐标展入到 AutoCAD 的.NET程序集. 二.知识准备      1.了解dat坐标文件的格式,本次以常用格式 “ 点名,编码,东坐标,北坐标,高程 ”  为例.      2.文件读取,字符串处理      3.AutoCAD .NET 开发基础

如何基于报表工具FineReport进行二次开发

随着FineReport的发展,它提供的设计器和服务器应该能够满足绝大部分的需求,完全实现零编码的软件开发.革命性地加快软件的开发以及提高软件的稳定性.但是需求千变万化,而FineReport本身所具备的功能是报表中比较典型的,一些比较有个性的功能无法实现,那么就需要应用开发人间使用网页脚本.API接口等进行深入的开发,而这一点,FineReport报表工具是支持的,那么如何来实现插件开发呢? Ant打包 Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简

微控工具xp模块-开发版[微信(wechat)二次开发模块]

http://repo.xposed.info/module/com.easy.wtool 微控工具xp模块-开发版[微信(wechat)二次开发模块] 基于xposed框架的微信二次开发模块,方便开发者用微信做一些扩展功能(如微信群发.多群直播等...) 目前支持功能: 发文本消息 发图片消息 发语音消息 发视频消息 获取微信好友列表 群列表 支持群发消息 支持消息转发(目前支持文本.图片.语音.视频.图文消息转发) 群管理功能(建群.加人.踢人.设置公告.改群名.退群.解散群) [注:本模块

ODI KM二次开发手册

ODI KM二次开发手册 分类: ODI(16) 目录(?)[+] 1 引言 1.1 编写目的 本手册面向的读者对象为具备数据集成业务知识及对ODI操作了解的开发人员,作为其完成基于ODI基础上KM二次开发的参考手册.详细介绍了如何在ODI上进行KM二次开发,以满足用户数据集成特定场合下的个性化需求. 2 开发模板KM介绍 2.1 KM概述 KM(Knowledge Modules:知识模块)在ODI中是一组代码模板.在集成过程中,每一个KM对应一个特定任务,整个数据集成过程通过选择若干个KM代

【ArcGIS二次开发】CreateFeature报错(HRESULT E_FAIL)

在VS2010下基于ArcGIS 10.1做二次开发时遇到个奇怪的问题,对于MXD工程文档中已经存在的图层,获取其FeatureClass可以调用CreateFeature()函数生成要素,但是对于通过程序代码(AddShapFile())添加到MXD工程中的图层,获取其FeatureClass后再执行CreateFeature()就会报COM错误(Error HRESULT E_FAIL has been returned from a call to a COM component,代码0x

Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发

关于QGis的二次开发,大致看了一下,基本都是在VC+QT的环境下做环境部署,而且QGis的版本非常老,在mingw下直接开发搭建环境的例子少之又少,基于最新的Qgis2.4.0版本做了相应的尝试,并成功搭建相应的环境,大致的配置如下: 由于在搭建的过程之中遇到的问题实在太多,没有一一记录下来,所以在本文中没有做过多的描述,如有疑问可以联系[email protected],或者留言 环境搭建 pro文件配置 QT += core gui xml greaterThan(QT_MAJOR_VER

饿了么基于Vue2.0的通用组件开发之路(分享会记录)

Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网:http://element.eleme.io/#/github:https://github.com/ElemeFE/element ## 设计目的 大部分项目起源都是源于业务方的需求,Element 也是一样.随着公司业务发展,内部开始衍生出很多后台系统,UED 部门也接到越来越多的设计需求,