Ambari集群离线安装部署文档
目录
部署准备
修改主机名
统一修改每台主机的主机名
vi /etc/hostname
在/etc/hostname文件中修改HOSTNAME并:wq保存下来
重新登录后会发现主机名已经更改成我们自定义的主机名
注:本文档使用简单的命名规则用于测试,依据真实环境开发选择合适的命名
三台主机的host分别为
1
2
3
4
5hadoop111
hadoop112
hadoop113
修改ip配置文件
查看并更改IP配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43TYPE=Ethernet #网络类型
BOOTPROTO=none
DEFROUTE=yes
IPV4\_FAILURE\_FATAL=no
IPV6INIT=yes
IPV6\_AUTOCONF=yes
IPV6\_DEFROUTE=yes
IPV6\_FAILURE\_FATAL=no
NAME=eno16780032
UUID=51fac244-175f-4b1e-b228-ba0f60d9da06 #随机id
DEVICE=eno16780032 #接口名(设备,网卡)
ONBOOT=yes #系统启动的时候网络接口是否有效(yes/no)
#IP地址
IPADDR=192.168.255.125
PREFIX=24
#网关
GATEWAY=192.168.255.254
#域名解析器
DNS1=8.8.8.8
IPV6\_PEERDNS=yes
IPV6\_PEERROUTES=yes
IPV6\_PRIVACY=no重启网络
service network restart
(注)每一台主机都需要更改自己的ip
修改ip配置文件
修改hosts文件
hosts文件中是所有的主机ip和主机名
vi /etc/hosts
(注)修改每一台主机的hosts文件保证每一台主机的hosts文件内容相同
修改windows下的主机映射文件
进入
C:\Windows\System32\drivers\etc
路径打开hosts文件并添加与主机hosts中相同的内容
注:windows7系统中可以直接添加内容,windows10系统中需要先将hosts文件拷贝到桌面上进行修改,修改后覆盖C:\Windows\System32\drivers\etc路径hosts文件
关闭防火墙服务
查看当前防火墙的状态
systemctl status firewalld
当前防火墙的状态是开启的,我们需要关闭防火墙并关闭防火墙自启动的服务
systemctl stop firewalld
systemctl disable firewalld.service
再次检查防火墙状态
systemctl status firewalld
(注)创建文件夹
在/opt目录下创建bao文件夹放我们需要的安装包
在/opt目录下创建src文件夹放我们解压后的文件
mkdir /opt/bao
mkdir /opt/src
配置免密登录
客户端生成公私钥
本地客户端生成公私钥:(一路回车默认即可)
ssh-keygen
(这个命令会在用户目录.ssh文件夹下创建公私钥)cd ~/.ssh
下创建两个密钥:id\_rsa
(私钥)id\_rsa.pub
(公钥)上传公钥到服务器
ssh-copy-id -i ~/.ssh/id\_rsa.pub 192.168.225.171
(这条命令写到服务器上的ssh目录下去)cd ~/.ssh
vi authorized\_keys
可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。
(注)我们需要在所有加入集群的机器上都执行ssh免密登录
测试免密登录
在每台主机上测试免密登录
ssh hadoop112
ssh hadoop113
禁用透明大页(所有节点)
查看:
查看透明大页的设置和启动状态
cat /sys/kernel/mm/transparent\_hugepage/defrag
cat /sys/kernel/mm/transparent\_hugepage/enabled
操作:
临时关闭
echo never > /sys/kernel/mm/transparent\_hugepage/defrag
echo never > /sys/kernel/mm/transparent\_hugepage/enabled
永久关闭
将临时关闭命令添加到/etc/rc.d/rc.local文件中,并赋予执行权限
echo 'echo never > /sys/kernel/mm/transparent\_hugepage/defrag' >> /etc/rc.d/rc.local
echo 'echo never > /sys/kernel/mm/transparent\_hugepage/enabled' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
验证:
cat /etc/rc.d/rc.local
打开安全限制(所有节点)
vi /etc/security/limits.conf
文件末尾新增如下:
1 | \# End of file |
修改最大打开文件数(所有节点)
修改打开文件数
vi /etc/systemd/system.conf
1
2
3
4
5[Manager]
DefaultLimitNOFILE=1024000
DefaultLimitNPROC=1024000查看修改情况
ulimit -a
安装httpd(主节点)
将安装包httpd.tar放在/opt/bao目录下
安装httpd
tar -zxvf httpd.tar
cd httpd
rpm -ivh \*.rpm
开启服务
开启httpd服务
systemctl start httpd
开启开机自启
systemctl enable httpd
测试
在浏览器上输入ip,若看到以下的内容则说明http服务已经开启
挂载系统镜像(主节点)
将网上下载的系统镜像放在我们的/opt/bao目录下
创建文件夹
mkdir /var/www/html/iso
挂载镜像
mount -o loop /opt/bao/CentOS-7-x86\_64-Everything-2009.iso /var/www/html/iso/
更新源
cd /etc/yum.repos.d
mkdir yumold
mv \*.repo /etc/yum.repos.d/yumold
mv yumold /opt
vi local.repo
1
2
3
4
5
6
7
8
9[dvd]
name=dvd
baseurl=http://hadoop111/iso
enabled=1
gpgcheck=0yum clean all
yum makecache
(
注:如果我们挂载的系统镜像源出现问题的话那么我们需要先下载几个组件来支持redhat-lsb,psmisc,nc,gcc,python-devel,unzip这几个组件在bao.tar中,使用方法为:将安装包上传到/opt/bao中
tar -zxvf bao.tar
依次
cd unzip
cd redhat
cd psmisc
cd nc
cd gcc
cd pythondevel
依次在每一个文件夹内使用
rpm -ivh \*.rpm
安装
)
同步时间(所有节点)
安装依赖
yum -y remove mariadb-libs
yum -y install psmisc ntp ntpdate httpd createrepo wget git
修改配置文件
crontab -e
1
\*/1 \* \* \* \* /usr/sbin/ntpdate ntp.sjtu.edu.cn
安装包准备
JDK (所有节点)
查看当前是否安装jdk
rpm -qa|grep java
卸载原有的jdk
rpm –e XXX
上传jdk安装包
jdk安装包解压
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
配置环境变量
vi /etc/profile
1
2
3
4
5export JAVA\_HOME=/usr/local/jdk1.8.0\_221
export CLASSPATH=$:CLASSPATH:$JAVA\_HOME/lib/
export PATH=$PATH:$JAVA\_HOME/bin在所有节点重载配置文件,使环境变量生效
source /etc/profile
在所有的节点上查看java版本号,确定java是否安装成功
java -version
HDP,ambari (主节点)
上传安装包
1
2
3
4
5
6
7ambari-2.7.5.0-centos7.tar.gz
HDP-UTILS-1.1.0.22-centos7.tar.gz
HDP-3.1.5.0-centos7-rpm.tar.gz
HDP-GPL-3.1.5.0-centos7-gpl.tar.gz创建文件夹
mkdir /var/www/html/hdp
解压安装包
tar -zxvf mbari-2.7.5.0-centos7.tar.gz -C /var/www/html/
tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/hdp/
tar -zxvf HDP-3.1.5.0-centos7-rpm.tar.gz -C /var/www/html/hdp/
tar -zxvf HDP-GPL-3.1.5.0-centos7-gpl.tar.gz -C /var/www/html/hdp/
制作本地源(主节点)
制作本地源
createrepo /var/www/html/ambari
createrepo /var/www/html/hdp
验证源是否正常
1
2
3http://hadoop111/ambari
http://hadoop111/hdp
安装mysql(主节点)
卸载mariadb(主节点)
查询已经安装的mariadb
rpm -qa|grep mariadb
卸载mariadb
rpm -e --nodeps 文件名
(文件名为上面命令查询出来的文件)
安装初始化mysql(主节点)
上传安装包到/opt目录
cd /opt
mysql-8.0.18-linux-glibc2.12-x86\_64.tar.xz
解压安装包
tar Jxvf mysql-8.0.18-linux-glibc2.12-x86\_64.tar.xz
重命名
mv mysql-8.0.18-linux-glibc2.12-x86\_64 mysql
mv mysql /usr/local
创建数据目录
mkdir /usr/local/mysql/data
创建并编辑my.cnf文件
vi /etc/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/error.log
pid-file = /usr/local/mysql/mysql.pid
transaction\_isolation = READ-COMMITTED
character-set-server = utf8
collation-server = utf8\_general\_ci
lower\_case\_table\_names = 1
sql\_mode = "STRICT\_TRANS\_TABLES,NO\_ENGINE\_SUBSTITUTION,NO\_ZERO\_DATE,NO\_ZERO\_IN\_DATE,ERROR\_FOR\_DIVISION\_BY\_ZERO"创建组
groupadd mysql
创建用户
useradd -g mysql mysql
修改目录权限
将 /opt/mysql给予mysql用户
chown -R mysql:mysql /usr/local/mysql
将/opt/mysql权限设置为755
chmod -R 755 /usr/local/mysql
初始化mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql
尝试启动mysql
cd /usr/local/mysql
./support-files/mysql.server start
- 将mysql添加为服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
- 设置开机启动
cd /etc/init.d
chmod 755 /etc/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
service mysql restart
- 配置环境变量
echo 'export MYSQL\_HOME=/usr/local/mysql' >> /etc/profile
echo 'export PATH=.:$MYSQL\_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
创建数据库(主节点)
使用默认密码登陆mysql
mysql -uroot -p
(默认密码在error.log中)
(
cd /usr/local/mysql
cat error.log |grep temporary
)
在MySQL8中第一次登陆需要重新设置root密码
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
开启远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql\_native\_password BY '123456';
GRANT ALL ON \*.\* TO 'root'@'%';
FLUSH PRIVILEGES;
- 创建HDP需要用到的几个数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19create database ambari default character set = 'utf8';
create database hive default character set = 'utf8';
create database oozie default character set = 'utf8';
create USER 'ambari'@'%' IDENTIFIED WITH mysql\_native\_password BY '123456';
grant all privileges on ambari.\* to 'ambari'@'%' with grant option;
create USER 'hive'@'%' IDENTIFIED WITH mysql\_native\_password BY 'hive';
grant all privileges on hive.\* to 'hive'@'%' with grant option;
create USER 'oozie'@'%' IDENTIFIED WITH mysql\_native\_password BY 'oozie';
grant all privileges on oozie.\* to 'oozie'@'%' with grant option;
flush privileges;
上传mysql驱动包(所有节点)
创建目录
mkdir -p /usr/share/java
将mysql-connector-java-8.0.18.jar重命名为mysql-connector-java.jar
mv mysql-connector-java-8.0.18.jar mysql-connector-java.jar
将mysql-connector-java.jar移动或复制到每个节点
cp mysql-connector-java.jar /usr/share/java/
scp mysql-connector-java.jar hadoop112:/usr/share/java/
scp mysql-connector-java.jar hadoop113:/usr/share/java/
配置本地源repo(主节点)
配置信息
vi /etc/yum.repos.d/ambari.repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59[ambari-2.7.5.0]
name=ambari Version - ambari-2.7.5.0
baseurl=http://hadoop111/ambari/centos7/2.7.5.0-72/
gpgcheck=1
gpgkey=http://hadoop111/ambari/centos7/2.7.5.0-72/RPM-GPG-KEY//RPM-GPG-KEY-Jenkins
enabled=1
priority=1
vi /etc/yum.repos.d/hdp.repo
![](images/ambari安装部署文档/Aspose.Words.58150eac-1c34-44ee-b717-b0ce0649ad84.015.png)
[HDP-3.1.5.0]
name=HDP Version - HDP-3.1.5.0
baseurl=http://hadoop111/hdp/HDP/centos7/3.1.5.0-152/
gpgcheck=1
gpgkey=http://hadoop111/hdp/HDP/centos7/3.1.5.0-152/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[HDP-UTILS-1.1.0.22]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.22
baseurl=http://hadoop111/hdp/HDP-UTILS/centos7/1.1.0.22/
gpgcheck=1
gpgkey=http://hadoop111/hdp/HDP-UTILS/centos7/1.1.0.22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[HDP-GPL-3.1.5.0]
name=HDP-GPL Version - HDP-GPL-3.1.5.0
baseurl=http://hadoop111/hdp/HDP-GPL/centos7/3.1.5.0-152/
gpgcheck=1
gpgkey=http://hadoop111/hdp/HDP-GPL/centos7/3.1.5.0-152/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1清理一下yum的缓存
yum clean all
yum makecache
yum repolist
将创建好的文件拷贝到子节点
cd /etc/yum.repos.d
scp ambari.repo hdp.repo hadoop112:$PWD
scp ambari.repo hdp.repo hadoop113:$PWD
安装ambari-server(主节点)
ambari-server安装(主节点)
yum -y install ambari-server
cp /usr/share/java/mysql-connector-java.jar /var/lib/ambari-server/resources/mysql-jdbc-driver.jar
vi /etc/ambari-server/conf/ambari.properties
1 | server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar |
(如果在安装过程中报错,执行下面的内容)
执行
yum install postgresql;
yum install postgresql-server;
然后再重新安装amabri-server
使用ambari的sql生成脚本生成表(主节点)
1 | mysql -uroot -p |
(这里需要注意一点:ambari当前支持的mysql5.7版本,但是我们使用的是mysql8,由于关键字,这里执行sql脚本会报错,所以我们要修改一下脚本,但是如果你得mysql版本是5.7则不需要修改)
这里需要将脚本的下图标识处进行修改
设置ambari-server(主节点)
ambari-server setup
1 | Using python /usr/bin/python |
启动ambari-server(主节点)
ambari-server start
测试ambari-server
登录http://hadoop111:8080,使用默认账户账号密码都是admin
安装配置ambari-agent(所有节点)
安装amabri-agent(所有节点)
分发本地源ambari.repo到其他两台服务器
scp /etc/yum.repos.d/ambari.repo hadoop112:/etc/yum.repos.d/
scp /etc/yum.repos.d/ambari.repo hadoop113:/etc/yum.repos.d/
在hadoop112和hadoop113上执行
yum clean all
yum makecache
分别在三台服务器安装ambari-agent
yum -y install ambari-agent
修改配置文件(所有节点)
vi /etc/ambari-agent/conf/ambari-agent.ini
1 | [server] |
安装集群组件
安装hdfs,yarn,mapreduce,zookeeper,ambari metrics,hive
- 登录http://hadoop111:8080
- 使用账号密码都是admin登录
- 配置集群名字
选择hdp版本,修改本地源地址
这里我们删除其他的选项只留下redhat7
选择Use Local Repository;
1
2
3
4
5HDP-3.1: http://hadoop111/hdp/HDP/centos7/3.1.5.0-152/
HDP-3.1-GPL: http://hadoop111/hdp/HDP-GPL/centos7/3.1.5.0-152/
HDP-UTILS-1.1.0.22: http://hadoop111/hdp/HDP-UTILS/centos7/1.1.0.22/填写主机域名和id_rsa文件
注解域名填写:
1
2
3
4
5hadoop111
hadoop112
hadoop113这里我们将/root/.sshd/id_rsa的密钥粘贴并上传
cat /root/.ssh/id\_rsa
得到的密钥复制(这里需要注意的是这里的密钥需要将前面的—–BEGIN RSA PRIVATE KEY—–和最后的—–END RSA PRIVATE KEY—–也复制到密钥里面,如果这里的密钥无法验证通过,需要将id_rsa文件上传验证通过)
(这里如果卡住不动,我们查看日志
tail -200 /var/log/ambari-server/ambari-server.log
我们发现
这种情况我们需要
cd /var/run/ambari-server
mkdir bootstrap
这里一定要给文件夹添加权限,否则ambari仍然报错
chown -R ambari:ambari /var/run/ambari-server/bootstrap/
然后重新验证
)
(这里如果我们出现以下的异常
解决方法和上面的异常一样
cd /var/run/ambari-server
mkdir stack-recommendations
chown -R ambari:ambari /var/run/ambari-server/stack-recommendations/
)验证通过后,等待安装
选择我们想要安装的组件
进程分配到节点
这里的数据库的用户名和密码填写我们之前创建好的
这里的hive的
hive测试连接
Hive database 选择existing mysql/mariadb
Database url:jdbc:mysql://192.168.225.125 /hive?characterEncoding=UTF-8
Database password : hive
(这里要注意一定要先执行
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
再去测试连接)
准备安装
这里一直点击下一步等待安装
安装hbase
安装kafka
(这里出现提示不用管,直接点击proceed anyway就可以)
删除smartsence
使用smartsence是需要账号和密码的,smartsence是ambari的一个付费服务用于收集群集诊断数据,用于协助支持案例故障排除和SmartSense分析。
这里提供了删除smartsence的方法
安装spark2
(这里的提示仍然不需要管,直接点击proceed anyway就可以)
安装ranger
创建ranger用户
- 创建‘rangerdba‘@’localhost’的用户,密码也是rangerdba
CREATE USER 'rangerdba'@'localhost' IDENTIFIED BY 'rangerdba';
- 授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
GRANT ALL PRIVILEGES ON \*.\* TO 'rangerdba'@'localhost';
- 创建‘rangerdba‘@’%’的用户,密码也是rangerdba
CREATE USER 'rangerdba'@'%' IDENTIFIED BY 'rangerdba';
- 授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
GRANT ALL PRIVILEGES ON \*.\* TO 'rangerdba'@'%';
- 该用户能给其它用户授权
GRANT ALL PRIVILEGES ON \*.\* TO 'rangerdba'@'localhost' WITH GRANT OPTION;
- 该用户能给其它用户授权
GRANT ALL PRIVILEGES ON \*.\* TO 'rangerdba'@'%' WITH GRANT OPTION;
- 刷新数据库
FLUSH PRIVILEGES;
- 检查是否配置成功(密码也是rangerdba)
mysql -u rangerdba –prangerdba
安装服务
(这里需要注意的是Ranger Usersync和Ranger Admin需要安装到同一节点下)
设置ranger admin
(这里可能出现一个错误,就是当MySQL的端口号不是3306的时候需要手动修改,ranger admin无论怎么都无法启动,报错信息为connection refused,尝试在报错提示的脚本里面找到问题的部分,手动添加端口号,重新启动ranger admin)
设置ranger audit
这里由于我们没有安装solr,所以不使用solr,
设置ADVANCED
安装ranger
(这里可能出现这样的问题
当出现这样的报错信息时候,首先我
cd /usr/hdp/current/ranger-admin/
chmod a+x dba\_script.py
再次运行的时候出现这样的报错
1
ranger com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
这个错误是表明mysql服务没有正常的运行,mysql服务对jdbc驱动调用没有反应
首先执行
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
然后查看mysql:
mysql -uroot -p123456
use mysql;
SELECT host,user,Grant\_priv,Super\_priv FROM user;
发现了root用户授权的权限没有打开
UPDATE user SET Grant\_priv='Y', Super\_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
)
ranger对hdfs的权限管理
开启Hdfs Ranger Plugin
这里我们需要根据提示信息将dfs.permissions.enabled改成true
开启ranger后,进去ranger的web界面
初始登录账号是admin,密码是我们之前设置的chen12345
点进tmCluster_hadoop
在该页面中可以看到默认有两个策略,第一个是hdfs 用户的策略,默认拥有所有目录所有权限
第二个策略是keyadmin 用户拥有/ranger/audit/kms 目录的所有权
建议不要随意修改这两个用户的权限策略
点击右上角Add New Policy添加新的策略
尝试给hive只读的权限
这里的Policy Name是策略名字
Resource Path是hdfs要设置权限的地址
Select Group是用户组
Select User是用户名
Permissions是我们设置的权限
ranger对hbase的权限管理
开启ranger中的Hbase Ranger Plugin
![图形用户界面, 应用程序, Teams
描述已自动生成](Aspose.Words.58150eac-1c34-44ee-b717-b0ce0649ad84.076.png)
重新启动hbase后打开ranger web
点击tmCluster_hbase
点击右上角Add New Policy创建新的策略
设置成功后,我们进行测试
首先创建了一个表,列名包括age,sex,name
由于我们给hdfs用户授权,所以hdfs用户只能查询到age的数据