ambari2.4.2在CentOS7上的二次开发

前言:若是想安装到CentOS7,就必定要将源码在CentOS7上编译,而后安装,不然可能会出现各类问题css

 

目录

  1. 源码结构
  2. 技术点
  3. 编译环境的搭建 
    1. 安装samba
    2. 安装编译环境
    3. 总体编译
    4. ambari-web的编译
    5. ambari-admin的编译
  4. 其余信息

 

 

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

 


源码结构

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

查看完整java

 

技术点

 

 

 


 

编译环境的搭建

软件版本(要严格参照这个要求)node

 

 注:上表中操做系统是CentOS7,不是CentOS6.5python

  

1.安装samba

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

  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 = yes
        read only = no
    
    [MyShare]
            path=/home/samba/ambari
            browsable=yes
            writable=yes
            guest ok=yes
            read only=no

     

     

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

 

2.安装编译环境

注:若是只想简单的改改页面,而后本身使用的话,彻底不必总体编译,只须要编译ambari-webambari-admin,而后把编译结果替换到ambari安装后的某些目录便可。c++

下面安装的软件,不管是yum,仍是tar包,都要选择指定版本。git

  1.  安装JDK 版本1.7.0
    yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
    #默认安装路径: /usr/lib/jvm/java-1.7.0-openjdk
    
    #在 ~/.bash_profile 中修改JVM内存参数
    export _JAVA_OPTIONS="-Xmx2048m -XX:MaxPermSize=512m -Djava.awt.headless=true"

     

  2. 安装maven 版本 3.0.5
    yum -y install 3.0.5-17.el7  #注意版本
    mvn -v #验证安装状况

     为了提高速度,最好修改maven源为国内源,如阿里的。执行命令  vim $MAVEN_HOME/conf/settings.xml

    <mirrors>
        ......
    
        <mirror>  
            <id>nexus-aliyun</id>  
            <mirrorOf>central</mirrorOf>    
            <name>Nexus aliyun</name>  
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
        </mirror>
    </mirrors>

     

  3. 安装g++
    #检测
    rpm -qa | grep gcc-c++
     
    #安装
    yum -y install gcc-c++

     

  4. 安装Python 版本2.6
    #我这里下载2.6.9的版本  如下操做必需要使用root用户
    yum -y install zlib  #编译python须要
    yum -y install zlib-devel  #编译python须要
    yum -y install python-devel.x86_64 #编译 Ambari Metrics Monitor 项目会用到 cd
    /opt/software wget https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz #下载源码 tar zxvf Python-2.6.9.tgz #解压 cd Python-2.6.9 #进入解压目录 ./configure --prefix=/安装路径/python2.6 #开始编译 注:编译依赖g++,因此要先安装上g++ make make install ln -s /安装路径/python2.6/bin/python /bin/python2.6 #建立快捷方式(也能够将bin/python放入环境变量) python2.6 -V #验证安装状况 #编译安装Setuptools cd /opt/software wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5=bfa92100bd772d5a213eedd356d64086 tar zxvf setuptools-0.6c11.tar.gz #解压 cd setuptools-0.6c11 python2.6 setup.py build #编译 python2.6 setup.py install #安装 ln -s /opt/software/python2.6/bin/easy_install /bin/easy_install #给easy_install建立快捷方式 #以上参考 http://blog.csdn.net/ab198604/article/details/8681851

      

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

     

  6. 安装Nodejs  版本:v0.10.44
    1. 下载安装包 版本地址
    2. wget http://nodejs.org/dist/v0.10.44/node-v0.10.44-linux-x64.tar.gz
    3. 解压
      tar zxvf node-v0.10.44-linux-x64.tar.gz

       

    4. 设置 /etc/profile 中的环境变量 
      ......
      export NODE_HOME="/opt/node-v0.10.44-linux-x64"
      export PATH=$PATH:$NODE_HOME/bin

       使之生效

      source /etc/profile
    5. 查看安装状况
      node -v
      npm -v
  7. 安装Brunch
    npm install -g brunch@1.7.20
    brunch  #检测

     

  8. 安装Git(若是代码是在本地的话,可略过这一步。)
    yum install git
    
    git --version #检测

     使用git下载ambari代码。以前从官网下载的代码,出现各类问题,改从这个git下载的代码后就彻底没问题了。 下载命令:

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

     

 

3.总体编译

总体编译须要下载不少的maven依赖包,ambari-web和ambari-admin也须要经过npm和bower下载大量依赖包

因此推荐先进行ambari-web编译ambari-admin编译;而maven的依赖包,能够选择安装的时候不执行clean命令

 

  1. cd 到ambari的主目录
  2. ambari打上版本号
    mvn versions:set -DnewVersion=2.4.2.0.0  #虽然官网说是4位,但实际上这里若是不是5位后面会有很多麻烦
    pushd ambari-metrics
    mvn versions:set -DnewVersion=2.4.2.0.0
    popd

     ambari的版本号坑也是很多的,可参考:Ambari源码编译版本号问题

  3. 由于编译过程当中会下载不少不少文件,而且有些文件下载特别慢,因此咱们须要在编译前把这些文件先提早下载好,而且放到指定位置,这样编译起来就快多了
    mkdir -P ambari-admin/src/main/resources/ui/admin-web/node_tmp
    wget -O ambari-admin/src/main/resources/ui/admin-web/node_tmp/node.tar.gz http://nodejs.org/dist/v4.5.0/node-v4.5.0-linux-x64.tar.gz
    wget -O ambari-admin/src/main/resources/ui/admin-web/npm.tar.gz http://registry.npmjs.org/npm/-/npm-2.15.0.tgz
    
    mkdir -P ambari-metrics/ambari-metrics-timelineservice/target/embedded
    wget -O ambari-metrics/ambari-metrics-timelineservice/target/embedded/hbase.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/hbase-1.1.2.2.3.4.0-3347.tar.gz
    wget -O ambari-metrics/ambari-metrics-timelineservice/target/embedded/phoenix.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/phoenix-4.4.0.2.3.4.0-3347.tar.gz
    
    mkdir -P ambari-metrics/ambari-metrics-grafana/target/grafana/
    wget -O ambari-metrics/ambari-metrics-grafana/target/grafana/grafana.tgz https://grafanarel.s3.amazonaws.com/builds/grafana-2.6.0.linux-x64.tar.gz
    
    mkdir -P ambari-metrics/ambari-metrics-assembly/target/embedded
    wget -O ambari-metrics/ambari-metrics-assembly/target/embedded/hadoop.tar.gz http://private-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.3.4.0-3347/tars/hadoop-2.7.1.2.3.4.0-3347.tar.gz

     

  4. 编译ambari
    mvn -B -e clean install package rpm:rpm -DnewVersion=2.4.2.0.0 -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl  #版本号 与上一步一致

    编译过程当中若是看到停在了下载文件的位置,能够中断编译,直接去下载文件并放到指定位置

  5. cd 到ambari-web目录下 执行命令
    brunch watch --server

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

参考:https://cwiki.apache.org/confluence/display/AMBARI/Ambari+Development 

 

 

4.ambari-web的编译 

ambari-web能够单独编译,也能够单独启动及测试。可是由于官方提供的测试数据不全,以及有些时候使用不方便,因此选择将源码与安装程序结合而进行开发。

简而言之就是 让安装的ambari程序访问咱们开发中的代码。

首先要确认已经安装nodejs、brunch.(前面已经安装过了)

这里要说明一点,若是在执行 brunch编译的时候提示nodejs版本太低,那么安装nodejs7.0+便可解决。

cd /SOURCE_PATH  #这里的SOURCE_PATH指的是源码计划安装的目录
git clone https://git-wip-us.apache.org/repos/asf/ambari.git #若是没有源码的话,须要下载源码 cd ambari/ambari-web npm install -g brunch #安装最新版本就没问题 rm -rf node_modules public #若是有的话 删掉 npm install #下载依赖包 brunch build #编译 brunch w #监听文件更新状况并同步到public目录。使用brunch watch --server 的话,能够开启webserver,可是这里面 咱们不须要启动,只作监听操做

cd /usr/lib/ambari-server #ambariserver的安装目录
mv web web-orig #备份原始代码
ln -s /SOURCE_PATH/ambari/ambari-web/public web #创建软连接 使系统能够访问到咱们修改的代码
ambari-server restart

经过以上步骤,只要咱们更改了/SOURCE_PATH/ambari/ambari-web中的源码,brunch都会在后台将变化同步到ambari-web/public。因为使用了软连接,这些变化也会自动被Ambari Server获取到。

开发人员只须要走:修改代码==>刷新页面==>确认

 

我使用的这个版本在启动服务的时候出现异常

照理说express模块应该是安装了的。查看一下

错误【UNMET DEPENDENCY】,这是依赖冲突问题。单独安装缺失的模块版本便可。如

npm install express@~3.3.0

 

开发:

1.若是要处理国际化(多语言) ,只须要在ambari-web/app下面 建立目录 locales/zh ,并把app下面的messages.js复制进去,修改为本身想要的内容便可。

2.在目录app/assets/data 下面是mock 数据文件在ajax请求的时候会根据app/utils/ajax/ajax.js中的设置来决定每个请求。例如登陆请求:

    App.ajax.send({
      name: 'router.login', //这个name跟ajax.js中的key对应
      sender: this,
      data: {
        auth: "Basic " + hash,
        usr: usr,
        loginName: encodeURIComponent(loginName)
      },
      beforeSend: 'authBeforeSend',
      success: 'loginSuccessCallback',
      error: 'loginErrorCallback'
    });

 

 ajax.js中的对应部分

'router.login': { //对应ajax请求中的name属性 'real': '/users/{loginName}?fields=*,privileges/PrivilegeInfo/cluster_name,privileges/PrivilegeInfo/permission_name',
    'mock': '/data/users/user_{usr}.json',
    'format': function (data) {
      var statusCode = jQuery.extend({}, require('data/statusCodes'));
      statusCode['403'] = function () {
        console.log("Error code 403: Forbidden.");
      };
      return {
        statusCode: statusCode
      };
    }
  }

3.路由流程(输入url后查找哪些文件)

在router.js中定义了总路由 App.Router

 

App.Router = Em.Router.extend({
    enableLogging: true,//定义局部变量
    root: Em.Route.extend({
        index: Em.Route.extend({//index是路由名
          route: '/',  //这个是路由路径
          redirectsTo: 'login' //重定向 (后面的值是路由名)
        }),
        enter: function(router){
          router.initAdmin(); //进入该路由后的相关处理
        },
        login: Em.Route.extend({
            route: '/login:suffix',
            enter: function (router, context) {
                //TODO 进入该路由后的相关处理
            },
            connectOutlets: function (router, context) {
                router.get('applicationController').connectOutlet('login');//获取applicationController并将LoginView放入其子模板
                //在上面的过程当中 获取applicationController会自动绑定ApplicationView
                //然后面的login,ember会将首字母转大写,后面拼接'View'
                //注意的是  controller与viewjs是自动对应,但不必定同时存在
            }//渲染子模板
        }),
        installer: require('routes/installer'), //指向其余文件中的路由
        initAdmin:function(){
            //TODO
        }
    })
});

 

 

 多想一点:

  1. 咱们的代码要在linux上编译(因此代码要在linux上)
  2. 咱们须要在windows上编写代码(windows上也要能访问到代码)
  3. 开发的代码还要有代码服务器(代码管理,可是代码在linux上,在linux上用svn?)
  4. 要有正在监控集群的ambari,同时如何把开发成果发布上去(每次从开发机编译代码,而后scp过去?)

针对以上问题,想到了以下方案

 

 

5.ambari-admin 的编译

ambari-admin 使用的是angularjs + bower + gulp。

bower与npm的使用方式基本同样,angularjs也与emberjs风格相似。

 

  1. cd 到 /源码目录/ambari-admin/src/main/resources/ui/admin-web
  2. 编辑 .bowerrc 
    {
        "directory": "app/bower_components",
        "allow_root": true //容许以root用户执行bower命令。也能够在执行命令的时候经过参数设定 如:bower install --allow-root 不要复制这段注释
    }

     

  3. 安装npm依赖包,全局安装gulp、bower
    npm install
    npm install -g bower
    npm install -g gulp

     

  4. 安装bower的依赖包
    bower install

     

  5. 修改gulpfile.js文件 (添加了用gulp-webserver的启动web,关于gulp-webserver的使用可参考这里
    'use strict';
    
    var gulp = require('gulp');
    var $ = require('gulp-load-plugins')();
    var webserver = require('gulp-webserver');
    
    var current = "test";
    var config = {
        start_task:{
            test:"webserver",
            build:"build"
        }
    };
    
    gulp.task('webserver', function(){
        gulp.src('app').pipe(webserver({
            port: 8000,//端口
            host: '192.168.30.135',//域名
            livereload: true,//实时刷新代码。不用f5刷新
            directoryListing: true,
            //fallback:'index.html',
            open:true
        }))
    });
    
    
    gulp.task('styles', function () {
      return gulp.src('app/styles/*.css')
        .pipe($.order([
          'app/styles/main.css',
          'app/styles/custom-admin-ui.css'   // This should always be the last stylesheet. So it can be dropped and be effective on build time
        ], { base: './' }))
        .pipe($.concat('main.css'))
        .pipe($.autoprefixer('last 1 version'))
        .pipe(gulp.dest('.tmp/styles'))
        .pipe($.size());
    });
    
    gulp.task('html', ['styles'], function () {
      var jsFilter = $.filter('**/*.js');
      var cssFilter = $.filter('**/*.css');
    
      return gulp.src('app/*.html')
        .pipe($.plumber())
        .pipe($.useref.assets({searchPath: '{.tmp,app}'}))
        .pipe(jsFilter)
        .pipe(jsFilter.restore())
        .pipe(cssFilter)
        .pipe(cssFilter.restore())
        .pipe($.useref.restore())
        .pipe($.useref())
        .pipe(gulp.dest('dist'))
        .pipe($.size());
    });
    
    gulp.task('views', function () {
      return gulp.src('app/views/**/*.html')
        .pipe(gulp.dest('dist/views'));
    });
    
    gulp.task('images', function () {
      return gulp.src('app/img/**/*')
        .pipe(gulp.dest('dist/img'))
        .pipe($.size());
    });
    
    gulp.task('fonts', function () {
      return $.bowerFiles()
        .pipe($.filter('**/*.{eot,svg,ttf,woff}'))
        .pipe($.flatten())
        .pipe(gulp.dest('dist/fonts'))
        .pipe($.size());
    });
    
    gulp.task('extras', function () {
      return gulp.src(['app/*.*', '!app/*.html'], {dot: true})
        .pipe(gulp.dest('dist'));
    });
    
    gulp.task('clean', function () {
      return gulp.src(['.tmp', 'dist'], {read: false}).pipe($.clean());
    });
    
    gulp.task('build', ['html', 'views', 'images', 'fonts', 'extras']);
    
    gulp.task('default', ['clean'], function () {
      gulp.start(config.start_task[current]);
    });

     

  6. 安装 gulp-webserver
    npm install gulp-webserver --save-dev

     

  7. 开始构建
    gulp

     

  8. 若是gulpfile.js中的current是'test',那么访问 http://<ip>:8000/index.html 便可进行独立编译开发
  9. 若是gulpfile.js中的current是'build',则须要与ambari的安装程序进行结合使用。(与ambari-web编译的步骤相似)
    cd /var/lib/ambari-server/resources/views/work mv ADMIN_VIEW\{version} /tmp ln -s /sourcepath/ambari/ambari-admin/src/main/resources/ui/admin-web/dist ADMIN_VIEW\{version} cp /tmp/ADMIN_VIEW\{version}/view.xml ADMIN_VIEW\{version}/ ambari-server restart 

     如今,咱们更改源码的时候,在执行一下gulp,就能够在安装的ambari的GUI看到效果了(也能够再安装一个监听变化的gulp插件)

 

 若是要国际化,只须要修改文件 app/scripts/i18n.config.js便可

 

 

 

 

 


 插播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中的文件会被直接拷贝到public
    brunch-config存放的是压缩合并编译的规则
    package.json存放的是依赖包信息
    public/app.js及public/app.css是根据合并规则生成的合并结果
    *.map是用于调试的代码映射信息

     

  5. 如今一个简单的webapp就成型了 接下来就是启动。启动后 若是源码发生变化  public中的内容也会自动跟进变化
    brunch watch --server

    brunch w -s

    其中brunch watch 是监听源码变更并自动编译到public文件夹 而brunch --server则是启动web 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相似的前端框架

官文请戳

ambari2.4.2 的ambari-web中使用的emberjs版本信息:

// Version: v1.0.pre
// Last commit: 7955b85 (2012-08-03 14:50:17 -0700)

 

Ambari一直使用的1.0pre 这是比2013年8月份1.0正式版还早一年的版本,如今官网是找不到这个版本的API的。

 

 

 

 

插播3:NPM

官文:https://docs.npmjs.com

NPM是nodejs包管理器

npm下载的时候默认是国外的资源  速度通常会比较慢。跟maven同样 咱们可使用淘宝的代理:

  1. 编辑~/.npmrc文件  (默认是在这个位置,若是没有的话就建立一个)
    vim ~/.npmrc

     

  2. 修改配置
    .........
    
    registry = http://registry.npm.taobao.org  #指定代理地址

要注意的是,有时候使用淘宝代理下载依赖会出现挂起的现象,临时禁掉代理(注释掉)就没问题了。

 

命令一览

npm -v #查看npm版本
npm config get prefix #查看全局安装目录 
#更改全局安装目录
mkdir <somepath>/.npm-global #建立安装目录
npm config set prefix
'<somepath>/.npm-global' #指定新目录
添加路径 #编辑~/.bash_profile export PATH=~/.npm-global/bin:$PATH
source ~/.bash_profile #生效
npm install -g <package-name> #全局模式安装模块 npm install --save <package-name> #安装模块并将信息写入package.config的dependencies
npm install --save-dev <package-name> #安装模块并将信息写入package.config的devDependencies
npm install <package-name> #在当前所在项目安装模块 (因此要进入项目目录) npm install <package-name>@<version> #安装指定版本的模块 (不指定的话 默认获取最新版) npm install <package-name>@">=v1 <v2" #指定版本范围

npm install #根据package.json 下载全部依赖包 npm uninstall [
-g] <package name> [--save] #卸载本地[全局]模块,[package.json中删除依赖] npm update [-g] <package name> #更新本地[全局]模块

npm outdated #展现项目中过期的包
npm update #更新项目中全部包 var moduleA
= require('<package-name>'); #使用模块(没法加载全局安装的模块) npm ls [--depth=n] #列出当前安装的模块[深度(从0开始)] npm root [-g] #查看当前[全局]模块的安装路径

 

 

关于package.json

package.json是本地已安装包的管理文件,经过这个文件咱们能够知道当前项目依赖的包、指定包的版本

咱们能够在安装包的时候将依赖信息写入这个文件,也能够根据这个文件下载全部须要的包(经过 npm install )

结构介绍

  • name:项目名称,无空格的一个全小写单词,可包含下划线和破折号(若是该项目要发布到npm的话 还要全npm惟一)
  • version:项目版本 格式是 x.x.x (每次发布都要更新)
  • main:入口js文件 如 index.js
  • scripts:脚本字典
  • keywords:关键字 利于在npm网站中进行搜索
  • author:做者
  • license:ISC
  • repository:代码提交路径
  • bugs:bug提交目录
  • homepage
  • dependencies:项目中依赖的包
  • devDependencies:开发和测试时依赖的包

 

关于发布本身的包

  1. 建立项目。最好要有README.md文件,让用模块的人能更清晰的了解项目
  2. 要有npm的帐号。到官网https://www.npmjs.com注册一个便可,重点是帐号,密码,邮箱。也能够在命令行执行 npm adduser
  3. 在shell下登陆npm。执行命令 npm login,输入上面提到的三个信息
  4. 到npm项目下 执行如下命令就OK了
    npm publish  
    #若是已经发布过一次了 记得要更新版本号,不然会出现问题[You cannot publish over the previously published version x.x.x." : <projectname>
    #项目名称也不能跟其余人的重复,不然会出现问题[you do not have permission to publish "<projectname>". Are you logged in as the correct user? : <projectname> ]

     

  5. 更新模块并从新发布
    npm version patch #从新生成版本号  也能够编辑package.json中的version
    
    npm publish  #发布

     

 

 

 若是出现权限问题,如 [user "root" does not have permission to access the dev dir] 可参考命令一览,更改全局目录并设一下权限便可

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

 

插播4:less

官文

less须要用npm安装

npm install less -g  #由于这是个公用的模块,因此要安装到全局

 

main.less

@base: #f938ab;

.box-shadow(@style, @c) when (iscolor(@c)) {
  -webkit-box-shadow: @style @c;
  box-shadow:         @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
  .box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
  color: saturate(@base, 5%);
  border-color: lighten(@base, 30%);
  div { .box-shadow(0 0 5px, 30%) }
}

 

使用命令编译

lessc main.less main.css

 

结果:main.css

.box {
  color: #fe33ac;
  border-color: #fdcdea;
}
.box div {
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}

 

 

 


 其余内容

  1.  ambari-agent在安装集群的时候会读取当前节点上的一个配置文件。路径是 /etc/ambari-agent/conf/ambari-agent.ini 内容以下
    [server]
    hostname=node1.somedomain #ambari-server的hostname。注意 若是server的hostname在安装的过程当中有改动,必定要修改各个节点上该文件的这个设置,不然没法注册节点
    url_port=8440
    secured_url_port=8441
    
    [agent]
    logdir=/var/log/ambari-agent
    piddir=/var/run/ambari-agent
    prefix=/var/lib/ambari-agent/data
    ;loglevel=(DEBUG/INFO)
    loglevel=INFO
    data_cleanup_interval=86400
    data_cleanup_max_age=2592000
    data_cleanup_max_size_MB = 100
    ping_port=8670
    cache_dir=/var/lib/ambari-agent/cache
    tolerate_download_failures=true
    run_as_user=root
    parallel_execution=0
    alert_grace_period=5
    alert_kinit_timeout=14400000
    system_resource_overrides=/etc/resource_overrides
    ; memory_threshold_soft_mb=400
    ; memory_threshold_hard_mb=1000
    
    [security]
    keysdir=/var/lib/ambari-agent/keys
    server_crt=ca.crt
    passphrase_env_var_name=AMBARI_PASSPHRASE
    ssl_verify_cert=0
    
    [services]
    pidLookupPath=/var/run/
    
    [heartbeat]
    state_interval_seconds=60
    dirs=/etc/hadoop,/etc/hadoop/conf,/etc/hbase,/etc/hcatalog,/etc/hive,/etc/oozie,
      /etc/sqoop,/etc/ganglia,
      /var/run/hadoop,/var/run/zookeeper,/var/run/hbase,/var/run/templeton,/var/run/oozie,
      /var/log/hadoop,/var/log/zookeeper,/var/log/hbase,/var/run/templeton,/var/log/hive
    ; 0 - unlimited
    log_lines_count=300
    idle_interval_min=1
    idle_interval_max=10
    
    
    [logging]
    syslog_enabled=0

     

 

 

 

参考:

相关文章
相关标签/搜索