1、linux环境设置
1.1、关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 开机时禁止启动防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
1.2、关闭SELINUX
- 注意:永久关闭
vi /etc/selinux/config
# 将 SELINUX=enforcing 改成 SELINUX=disabled,重启生效
1.3、安装NPM依赖包
(1)安装node.js
# 下载/usr/lib目录下执行
wget https://nodejs.org/dist/v4.5.0/node-v4.5.0-linux-x64.tar.gz
# 解压
tar zxvf node-v4.5.0-linux-x64.tar.gz
(2)配置环境变量
# 配置环境变量
vi /etc/profile
#添加如下内容
export NODE_HOME="/usr/lib/node-v8.5.0-linux-x64"
export PATH=$PATH:$NODE_HOME/bin
# 使修改后的文件生效
source /etc/profile
(3)查看安装情况
node -v
npm -v
- 安装结果
(4)安装brunch依赖
# 切换目录
# 该命令需要等待较长时间,请确认网络状况良好
# npm install
# 安装brunch
npm install -g brunch@1.7.20
# 验证brunch
brunch -V
(5)安装bower依赖
yum -y install gcc-c++
yum install python-devel
yum install git
(6)安装rpm-build
yum install rpm-build
rpm-build -V
(7)安装gulp
npm install -g bower
npm install -g gulp
(8)安装phantomjs
- 安装包下载
https://phantomjs.org/download.html
- 安装步骤
#第一步: 解压
tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 /opt
#第二步: 创建软连接
ln -sf /usr/local/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
#第三步: 查看安装版本
phantomjs --version
1.4、安装Maven依赖
(1)下载Maven安装包
https://archive.apache.org/dist/maven/maven-3/3.5.2/binaries/
(2)上传并解压
tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /opt
(3)配置国内镜像
vim /etc/maven/settings.xml
<localRepository>/opt/localrepo</localRepository>
<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>
(4)配置相关镜像
sudo vim /etc/profile #编辑环境变量,加入以下两句
export MVN_HOME=/opt/maven
export PATH=${MVN_HOME}/bin:$PATH
source /etc/profile
(5)验证配置结果
mvn -version
- 验证结果
2、使用SAMBA建立共享连接
2.1、安装启动SAMBA
(1)yum安装samba
# 检查samba是否安装
rpm -qa | grep samba
# 安装samba
yum install samba
# 重启samba
/bin/systemctl restart smb.service
# 查看smbd服务
ps -ef | grep smb
(2)创建smb用户
# 创建samba用户
useradd samba
# smbpasswd -a 是添加用户的意思 后面跟的是用户名,此用户名一定要跟linux登录用户名一样
smbpasswd -a samba #输入密码,完成即可
2.2、配置共享文件夹
- 注意事项:修改/etc/samba/smb.conf,在最后加入想要共享的文件夹
- 配置路径:MyShare文件夹为ambari源码路径的父路径,源码路径为:/opt/ambari/apache-ambari-2.7.6-src
vi /etc/samba/smb.conf
#修改内容如下
[samba home]
path = /home/samba
writeable = yes
guest ok = yes
read only = no
[MyShare]
path = /opt/ambari/
public = yes
writeable = yes
guest ok = yes
read only = no
browseable = yes
- 设置完毕之后需要重启samba
# 重启samba
/bin/systemctl restart smb.service
/bin/systemctl restart nmb.service
- 查看smbd进程和nmbd进程的状态
service smb status
service nmb status
- 运行结果
2.3、修改文件权限
# 将[MyShare]配置的path目录归属设置为root
chown -R root. /opt/ambari
# 赋予所有用户对该目录增删改的权限
chmod -R 777 /opt/ambari
2.4、本地访问共享文件
(1)在windows本地电脑浏览器中输入\ip地址,访问samba目录
\\192.168.6.102
- 启动windows功能
- 网络凭据用户名密码见上
用户名:samba
密码:123456
- 访问结果如下
!](https://img-blog.csdnimg.cn/4a5b0e06dbee403da9d3b576500808bd.png)
(2)配置网络映射
- 网络映射配置:X:
2.5、IDE导入共享文件夹中ambari项目
- 共享文件建立:以idea为例File->Open,选择上一步映射的网络驱动器盘导入,则建立了idea–>linux的映射
3、ambari整体编译
3.1、编译过程
(1)上传Maven依赖到linux本地库上
- Maven依赖库地址
链接:https://pan.baidu.com/s/1kiqPX8pEZ3AB5w9Q9l5fmw
提取码:r1vi
- 上传文件到mven的本地库
rz repository.tar.gz (linux文件的本地库)
(2)切换到源码根目录下
cd /opt/ambari/apache-ambari-2.7.6-src
#编译命令
mvn -B clean install rpm:rpm -DnewVersion=2.7.6.0.0 -DbuildNumber=388e072381e71c7755673b7743531c03a4d61be8 -DskipTests -Dpython.ver="python >= 2.7" -Drat.skip=true
3.2、编译问题
(1)编译问题
①问题现象
[INFO] [2/4] Fetching packages...
[ERROR] warning fsevents@2.3.2: The platform "linux" is incompatible with this module.
[INFO] info "fsevents@2.3.2" is an optional dependency and failed compatibility check. Excluding it from installation.[INFO] [3/4] Linking dependencies...
[INFO] [4/4] Building fresh packages...
[INFO] info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
[ERROR] error /root/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/phantomjs: Command failed.
[ERROR] Exit code: 1
[ERROR] Command: sh
[ERROR] Arguments: -c node install.js
[ERROR] Directory: /root/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/phantomjs
[ERROR] Output:
[ERROR] PhantomJS not found on PATH
[ERROR] Download already available at /tmp/npm_config_tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2
[ERROR] Verified checksum of previously downloaded file
[ERROR] Extracting tar contents (via spawned process)
[ERROR] Removing /root/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/phantomjs/lib/phantom
[ERROR] Copying extracted folder /tmp/npm_config_tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1639887716005/phantomjs-2.1.1-linux-x86_64 -> /root/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/phantomjs/lib/phantom
[ERROR] Install exited unexpectedly
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Ambari Main 2.7.6.0.0 .............................. SUCCESS [ 3.717 s]
[INFO] Apache Ambari Project POM 2.7.6.0.0 ................ SUCCESS [ 0.195 s]
[INFO] Ambari Web 2.7.6.0.0 ............................... SUCCESS [01:43 min]
[INFO] Ambari Views 2.7.6.0.0 ............................. SUCCESS [ 6.583 s]
[INFO] Ambari Admin View 2.7.6.0.0 ........................ FAILURE [ 47.472 s]
[INFO] ambari-utility 1.0.0.0-SNAPSHOT .................... SKIPPED
②解决方式一
cp /tmp/npm_config_tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1639887716005/phantomjs-2.1.1-linux-x86_64 /root/ambari/ambariadmin/src/main/resources/ui/admin-web/node_modules/phantomjs/lib/phantom
- 文件列表
③安装phantomjs
https://phantomjs.org/download.html
- 安装步骤
#第一步: 解压
tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 /opt
#第二步: 创建软连接
ln -sf /usr/local/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
#第三步: 查看安装版本
phantomjs --version
编译失败:个人将ambari-admin(包括子目录ambari-admin/src/main/resources/ui/admin-web)里面生成的node、node_modules、package-lock.json删除,保持干净的源码环境,再单独编译ambari-admin
(1)问题一
- 报错日志
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (Bower install) on project ambari-admin: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]
- 解决方案
①在上述目录下,安装npm依赖包,全局安装gulp、bower
cd /opt/ambari/apache-ambari-2.7.6-src/ambari-admin/src/main/resources/ui/admin-web/
npm install
npm install -g bower
npm install -g gulp
- 注意事项:安装phantomjs
https://phantomjs.org/download.html
- 安装步骤
#第一步: 解压
tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 /opt
#第二步: 创建软连接
ln -sf /usr/local/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
#第三步: 查看安装版本
phantomjs --version
②在安装bower的依赖包(个人在ambari-admin/src/main/resources/ui/admin-web/下执行)
#安装
bower install
#初始化
bower init
- 注意事项:由于git被墙导致bower install命令失败,个人将之前成功编译的bower_components目录(ambari-admin/src/main/resources/ui/admin-web/app目录下)拷贝到ambari-release-2.6.1/ambari-admin/src/main/resources/ui/admin-web/app目录下,再次运行成功
find / -name bower_components
③安装 gulp-webserver
npm install gulp-webserver --save-dev
④单独编译
运行命令重新单独编译ambari-admin模块(此命令在ambari-admin目录下运行)
mvn install -Drat.skip=true -Preplaceurl -X
4、ambari-web单独编译
4.1、创建软链接
cd /usr/lib/ambari-server
# 备份web
mv web web.bak
# 创建软链接
ln -s /opt/ambari/apache-ambari-2.7.6-src/ambari-web/public web
- 软链结果
4.2、实时监控编译
(1)监控编译
#安装依赖
npm install --unsafe-perm
# 编译
brunch build
- 运行结果
(2)实时监控编译
cd /opt/ambari/apache-ambari-2.7.6-src/ambari-web
# 实时监控编译
brunch watch
- 运行结果
- 注意事项:通过此步骤修改ambari-web中的源码,brunch都会在后台将变化同步到ambari-web/public。由于使用了软链接,这些变化也会自动被Ambari Server获取到。
(3)重启ambari-server
ambari-server restart
- IDEA上修改代码,界面上查看代码修改效果
http://192.168.6.102:3333/#/login
- 运行结果:显示test mode
5、ambari-admin模板源码编译
5.1、修改.bowerrc配置
cd /opt/ambari/apache-ambari-2.7.6-src/ambari-admin/src/main/resources/ui/admin-web/
#查看隐藏文件
ls -a
vim .bowerrc
- 修改配置如下
#添加如下内容
# 说明:添加一行"allow_root": true 允许以root用户执行bower命令。也可以在执行命令的时候通过参数设定 如:bower install –allow-root
{
"directory": "app/bower_components",
"allow_root": true
}
5.2、安装依赖包
#安装npm依赖包,全局安装gulp、bower
#npm install --unsafe-perm
npm install -g bower
npm install -g gulp
#安装bower的依赖包
bower install
5.2、修改gulpfile.js文件
'use strict';
var gulp = require('gulp');
// load plugins
var $ = require('gulp-load-plugins')();
// add
var webserver = require('gulp-webserver');
var current = "test";
var config = {
start_task:{
test:"webserver",
build:"build"
}
};
// add
gulp.task('webserver', function(){
gulp.src('app').pipe(webserver({
port: 8000,//端口
host: '172.16.87.154',//域名
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'
], { 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'));
});
//add
gulp.task('xml',function(){
return gulp.src('app/view.xml')
.pipe(gulp.dest('dist'))
});
gulp.task('images', function () {
return gulp.src('app/images/**/*')
.pipe(gulp.dest('dist/images'))
.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());
});
//edit
gulp.task('build', ['html', 'views', 'images', 'fonts', 'xml', 'extras']);
//edit
gulp.task('default', ['clean'], function () {
gulp.start(config.start_task[current]);
});
- 注意事项:
- 如果gulpfile.js中的current是’test’,那么访问 http://:8000/index.html 即可进行独立编译开发
- 如果gulpfile.js中的current是’build’,则需要与ambari的安装程序进行结合使用。(与ambari-web编译的步骤类似)
5.3、启动gulp
#切换目录
cd /opt/ambari/apache-ambari-2.7.6-src/ambari-admin/src/main/resources/ui/admin-web
#安装gulp-webserver
npm install gulp-webserver --save-dev
- 安装过程较慢,耐心等待
- 启动gulp
#启动gulp
gulp
- 运行结果
5.4、编译方式
- gulp提供两种方式编译.
- webserver:单独启动一个web服务,来测试修改后的ambari-Admin。
- 编译软链:编译后软链接到ambari-server以真实环境来测试。
(1)方式一 - webserver方式启动
- 访问界面查看效果
http://192.168.6.102:8000/index.html
- 访问结果
(2)方式二 - ambari-server服务真实环境启动
①设置gulpfile.js中的current为’build’,之后重新编译
var current = "build";
#重新编译
gulp
- 编译结果:生成dist文件
②建立软链
#第一步: 切换到ambari-service对应的admin页面的目录下
cd /var/lib/ambari-server/resources/views/work
#第二步: 备份ADMIN_VIEW{2.6.0}
mv ADMIN_VIEW\{2.7.3.0\} ADMIN_VIEW\{2.7.3.0\}_bat
#第三步: 建立软链接
ln -s /opt/ambari/apache-ambari-2.7.6-src/ambari-admin/src/main/resources/ui/admin-web/dist ADMIN_VIEW\{2.7.3.0\}
③复制文件
cd ADMIN_VIEW\{2.7.3.0\}.bak/
# 复制ADMIN_VIEW{2.6.0.0}.bak里的view.xml文件到ADMIN_VIEW{2.6.0.0}
cp view.xml ../ADMIN_VIEW\{2.7.3.0\}
# 复制ADMIN_VIEW{2.6.0.0}.bak里的view.xml文件到/opt/apache-ambari-2.6.0-src/ambari-admin/src/main/resources/ui/admin-web/app
cp view.xml /opt/ambari/apache-ambari-2.7.3-src/ambari-admin/src/main/resources/ui/admin-web/app/
④重启ambari-server
ambari-server restart
⑤查看数据
- 通过如下网址访问
http://192.168.6.102:3333/#/main/dashboard/metrics
- 访问结果
附:常见问题
Ⅰ、虚拟机映射到Windows连接报错:此链接尚未还原
(1)问题如下
(2)解决方案
①删除已有网络连接
- 第一步:CMD输入net use显示已访问链接
- 第二步:删除所有已访问连接,可以使用命令
net use * /delete
net use \\192.168.6.102\MyShare /delete
- 第三步:建立IPC$通道
net use \\192.168.6.102\ipc$ "leidi" /user:"root"
Ⅱ、共享文件网络错误
(1)问题原因
(2)解决方案 - 修改策略组
Ⅰ、使用Ping检查网络连通性
Ⅱ、按WIN+R组合键调出运行, 输入gpedit.msc,调出本地组策略编辑器。
Ⅲ、定位到“计算机配置-管理模板-网络-Lanman工作站”,在右侧内容区可以看到“启用不安全的来宾登录”,其状态是“未配置”。
Ⅳ、双击"启用不安全的来宾登录",将其状态修改为”已启用“,单机”应用“后确定。
(3)解决方案 - 修改注册表
- 第一步:regedit启动
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
- 第二步: “Parameters” -> 右键 -> 新建(N)-> DWORD (32位) 值 ,新增"
AllowInsecureGuestAuth
"设置为1
Ⅲ、NFS实现linux和windows之间共享文件
第一步: Windows开启
(1)安装nfs服务
rpm -qa nfs-utils rpcbind
yum -y install nfs-utils rpcbind
(2)配置文件
vi /etc/exports
#共享文件设置
/opt/ambari 192.168.32.1(rw,sync,no_root_squash)
- 配置结果如下
①/home/jiang
是你要共享的目录
②*
是通配所有的nfs客户端ip
③rw
是可读可写
④sync
是同时将数据写入到内存与硬盘中,保证不丢失数据
⑤no_root_squash
是当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
(3)为rpcbind和nfs做开机启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
(4)分别启动rpcbind和nfs服务
systemctl start rpcbind.service
systemctl start nfs-server.service
(5)查看共享出来的目录
showmount -e localhost
第二步:windows开启nfs服务
(1)开启NFS服务
- 注意事项:windows一定是专业版的
(2)磁盘映射永久存在
net use /persistent:yes
(3)连接IP地址
showmount -e 192.168.6.102(linux的ip地址)
- 运行结果
(4)挂载NFS磁盘,输入NFS服务器的用户名密码,NFS导出的目录,及挂载在本地用哪个盘符
mount \\192.168.6.102\opt\ambari z:
- 运行结果
(5)配置网络映射
Ⅳ、关于端口不通
-
问题现象:电脑重启后window连接虚拟机端口不通
-
解决方案
iptables -F
iptables -save
- 运行结果
Ⅴ、HDFS文件块丢失 & 不满足安全模式
- 问题描述如下
Replicated Blocks:
Total size: 1999613239 B
Total files: 503 (Files currently being written: 4)
Total blocks (validated): 384 (avg. block size 5207326 B) (Total open file blocks (not validated): 2)
********************************
UNDER MIN REPL'D BLOCKS: 2 (0.5208333 %)
MINIMAL BLOCK REPLICATION: 1
CORRUPT FILES: 2
CORRUPT BLOCKS: 2
CORRUPT SIZE: 78 B
********************************
Minimally replicated blocks: 382 (99.479164 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 382 (99.479164 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 3
Average block replication: 0.9947917
Missing blocks: 0
Corrupt blocks: 2
Missing replicas: 764 (66.31944 %)
- 解决方案
(1) 删除坏掉的块:CORRUPT BLOCKS。
(2)XXXXXX