Ambari集群部署全流程

Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应、管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。

服务器资源目录

ip地址 节点 组件
192.168.186.164 master
192.168.186.167 slave1
192.168.186.174 slave2

账户密码目录

账户 密码 备注
hadoop用户 ambari2021 192.168.186.164服务器
hadoop用户 ambari2021 192.168.186.167服务器
hadoop用户 ambari2021 192.168.186.174服务器

1、操作系统设置

1.1 创建用户和用户组

新建用户工作组

groupadd hadoop

新建用户同时增加用户组

useradd -g hadoop hadoop

为hadoop用户设置密码

passwd hadoop

正确密码

ambari2021

image-20210219111424964.png

1.2 赋予hadoop用户sudo权限

编辑 etc/sudoers文件

visudo

image-20210219111952995.png

增加如下配置

Hadoop ALL=(ALL) NOPASSWD:ALL

Hadoop ALL=(ALL) NOPASSWD:ALL
参数解释:
第一个字段Hadoop 表示能使用sudo命令的用户
第二个字段ALL=(ALL) 第一个ALL表示允许使用sudo的主机,第二个ALL表示使用sudo后以什么身份来执行命令
第三个字段NOPASSWD:ALL 滴一个NOPASSWD表示使用sudo提升权限的时候不需要使用密码,第二个ALL表示允许使用sudo执行的命令

image-20210219111927267.png

1.3 配置hostname

检查当前hostname

hostname -f

image-20210219113804031.png

永久修改hostname

sudo hostnamectl set-hostname ambari-01

image-20210219114104258.png

配置hosts文件

sudo vi /etc/hosts

添加如下配置 注意自带的两行不要删除 此外公司服务器配置内网IP

192.168.186.164 ambari-01

image-20210219114414782.png


image-20210219114236046.png

1.4 防火墙设置

禁用防火墙,避免多个节点之间收到影响(生产环境一般用运维专业人员来做端口策略,并不能完全关闭防火墙)

禁止防火墙开机启动

sudo systemctl disable firewalld

关闭防火墙

sudo systemctl stop firewalld

查看防火墙状态

sudo systemctl status firewalld

image-20210219115037823.png

1.5 禁用SELinux

检查SELinux状态(只要返回的不是disabled那么说明SELinux是开着的,则需要关闭)

getenforce

临时禁用

sudo setenforce 0

永久禁用

sudo vi /etc/selinux/config

将SELINUX 改为 SELINUX=disabled

image-20210219115255918.png

1.6 SSH免密

Hadoop大数据集群的相关组件大多依赖SSH免密登录来通过一个节点操作集群

使用hadoop用户登录 (切换到根目录)

su - hadoop

执行命令生成公、私钥(三次直接回车)

ssh-keygen

image-20210219120046608.png

将公钥拷贝到认证文件

cd .ssh/
cat id_rsa.pub >> authorized_keys

文件授权

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

image-20210219120451820.png

执行ambari-01 自己到自己的 SSH 测试免密登录

ssh ambari-01

输入 yes 回车

yes

image-20210219120646060.png

2 安装java

上传jdk8稳定版压缩包到服务器目录&解压

sudo tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local/

链接jdk - jdk1.8.0_231

sudo ln -s /usr/local/jdk1.8.0_231/ /usr/local/jdk

移除安装包

rm -rf jdk-8u231-linux-x64.tar.gz

配置java环境变量

sudo vi /etc/profile

在配置文件末尾加上如下配置

export JAVA_HOME=/usr/local/jdk
export JRE_HOME={JAVA_HOME}/lib/:JREH​OME/libexportPATH={JAVA_HOME}/bin:$PATH 

使环境变量生效

source /etc/profile

image-20210219134957133.png

查看java版本

java -version

image-20210219135258591.png

3、准备本地yum源

思路:把HDP所需要的RPM安装包都下载到本地创建一个yum源,后续安装使用本地yum源,可以内网操作速度更快

3.1、安装Apache

安装Apache

sudo yum -y install httpd

将Apache设置为开机启动

sudo systemctl enable httpd

启动Apache

sudo systemctl start httpd

测试访问 http://192.168.186.164

image-20210219140033970.png

3.2 HDP安装部署到apache

通过FTP上传RPM安装包到服务器上

移动安装包到 /var/www/html/目录下

sudo mv ambari-2.7.4.0-centos7.tar.gz /var/www/html/
sudo mv HDP-3.1.4.0-centos7-rpm.tar.gz /var/www/html/
sudo mv HDP-GPL-3.1.4.0-centos7-gpl.tar.gz /var/www/html/
sudo mv HDP-UTILS-1.1.0.22-centos7.tar.gz /var/www/html/

解压缩

sudo tar -zxvf ambari-2.7.4.0-centos7.tar.gz
sudo tar -zxvf HDP-3.1.4.0-centos7-rpm.tar.gz
sudo tar -zxvf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
sudo tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz

移除压缩包

sudo rm -rf ambari-2.7.4.0-centos7.tar.gz
sudo rm -rf HDP-3.1.4.0-centos7-rpm.tar.gz
sudo rm -rf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
sudo rm -rf HDP-UTILS-1.1.0.22-centos7.tar.gz

更改目录权限

sudo chmod -R ugo+rX /var/www/html/

3.3 配置本地yum源

#进入如下目录

cd /etc/yum.repos.d/

#创建ambari.repo文件 & 写入如下# #包括的内容

sudo vi ambari.repo

#仓库名字

[ambari-repo]

#yum 源描述

name=ambari

#指向yum源地址

baseurl=http://ambari-01/ambari/centos7/2.7.4.0-118/

#关闭下载RPM的jpg校验

gpgcheck=0

#组可用

enabled=1

#查看yum源配置是否生效 & 看到红框内容则成功

yum repolist

image-20210219144741224.png

4 安装MySQL

#安装mysql的yum仓库

sudo wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm

#安装mysql(必须进入到 /etc/yum.repos.d/目录后再执行以下脚本)

yum install mysql-server

#设置开机启动

sudo systemctl enable mysqld

#启动MySQL

sudo systemctl start mysqld

#查看MySQL的启动状态

sudo systemctl status mysqld

#查看root临时密码(临时密码每次都是随机生成的) (&fZPOuLl19i

sudo grep 'temporary password' /var/log/mysqld.log

#使用临时密码登录

mysql -uroot -p

MySQL常用密码参数

set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;

修改密码('root'@'%' -- 允许远程连接)

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'PWD@123456' WITH GRANT OPTION;
ALTER USER 'root'@'%' IDENTIFIED BY 'PWD@123456';

退出MySQL

Exit

上传驱动包mysql-connector-java-8.0.18.jar 到服务器/usr/share/java目录

sudo mkdir -p /usr/share/java

5、部署AmbariServer

5.1 安装AmbariServer

sudo yum -y install ambari-server

5.2 创建AmbariServer的数据库资源

#登录MySQL

mysql -uroot -pPWD@123456

#执行如下命令 创建ambari用户并授权

set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
create database ambari;
CREATE USER 'ambari'@'%' IDENTIFIED BY 'bigdata';
GRANT ALL ON ambari.* TO 'ambari'@'%';
FLUSH PRIVILEGES;

#执行脚本

use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

#退出

exit;

5.3 配置AmbariServer

#配置

sudo ambari-server setup

#使用默认账户 root 输入 n Customize user account for ambari-server daemon y/n?

n

image-20210219164235288.png

#使用自带jdk

2

#输入JAVA_HOME

/usr/local/jdk

image-20210219164337878.png

#安装GPL

y

image-20210219164641189.png

#数据库配置

y

#选择MySQL & 一路回车(mysql安装在本机,前面设置的数据库账户ambari和密码bigdata)

3

#输入驱动路径

/usr/share/java/mysql-connector-java-8.0.18.jar

远程连接

y

image-20210219165112001.png

6、Ambari部署核心技术组件

6.1 启动Ambari

#启动AmbariServer

sudo ambari-server start

如果出现错误,一定要查看日志:vi /var/log/ambari-server/ambari-server.log

遇到的错误:不能启动服务“REASON: Server not yet listening on http port 8080 after 50 seconds.Exiting.”
原因:由于本地的公网 ip改变或者不稳定导致的链接不上。
解决:修改/etc/hosts,将 hostname公网 IP映射改为内网映射。

浏览器webui访问

http://192.168.186.164:8080/
账户: admin
密码: admin

常见问题:Ambari启动正常,没有错误日志,但是通过http://192.168.186.164:8080/无法访问Ambari。

原因:
1.防火墙没有关闭(查看防火墙:sudo systemctl status firewalld)
2.云服务8080端口没有对外开放
解决:
1.关闭防火墙:sudo systemctl stop firewalld
2.开放服务器8080端口

6.2 集群部署

1、启动安装向导

image-20210219170423471.png

2、集群名命名 - dmp_cluster(数据中台) 点击 next

image-20210219170454996.png

选择 HDP3.1.4.0,因为我们下载的就是这个版本的安装包,已经构建自本地 yum仓库,然后要选择”Use Local Repository“

image-20210219170945849.png

只保留"readhat7"的仓库,接下来要把直接部署 yum本地仓库的地址填进去,同时不要勾选下面的两个高级选项
各个仓库的地址参考下表
http://ambari-01/HDP/centos7/3.1.4.0-315/
http://ambari-01/HDP-GPL/centos7/3.1.4.0-315/
http://ambari-01/HDP-UTILS/centos7/1.1.0.22/

image-20210219171343963.png

注册主机
上面的私钥要拷贝完整,一点也不能少,最后一行也不要换行

image-20210219172335817.png

开始注册主机 installing
主机注册成功 success
如果报错则查看主机host文件 删除不必要的配置

image-20210219172637457.png

主机在注册过程中会去各节点检查环境是否有问题,我么可以点击上图的”Click here to see thewarnings“去查看

image-20210219172718900.png

查看issue 时间同步问题
暂时不处理

image-20210219172826703.png

选择要安装的服务
Amabri管大数据的各个组件叫做 Service,在这一步要选择同时安装的服务,当然我们也可以先不选后面再选。在这里我们选择安装下 Hadoop相关的服务,其余的服务就取消掉对话框的对勾(它默认选了一堆,一定要去掉,好多用不到),如下图所示:
在这里要特别注意,在 Ambari里 Hadoop被当做多个服务例如 HDFS、YARN等,如果你选择
的服务依赖于其他服务他会提示的,你点击确认后会自动勾选,然后下一步即可

image-20210219173311405.png

分配 Mater服务安装到哪些主机
接下来 Ambari会让你选择 Master服务要安装到哪些主机,所谓 Master服务,是指的各个服务的 Master服务,例如 HDFS的 Master服务就是namenode,因为我们就一个节点,所以保持不动直接下一步:

image-20210219173732587.png

分配 Slave服务和 Client安装到哪些主机

image-20210219173930836.png

自定义 Service

image-20210219174100522.png

这里要注意,随着前面你选的 Service的不同,这里也会不同,点击”next“会让你确认一些服务的目录,我们先保持默认,直接”next“,如下图:

image-20210219174150528.png

然后是确认各个 service运行在操作系统的哪个用户下,我们也保持默认,如下图:

image-20210219174150528.png

点击下一步,会让我们确认其他的配置,我们保持默认直接点 NEXT:
注意,这里随着你前面选择的 service的不同会有很大差异,比如你要选择了 Hive,它一定会要你输入 MySQL相关信息,所以不要死记硬背。
如果 ADVANCED爆红,说 ssl.client.keystore.password密码不匹配,这里面默认设置密码为 admin即可。

image-20210219174253019.png

Review
在 Review环节我们要仔细检查之前的配置,没有问题就点击”DEPLOY“正式开始部署了,如下图所示:

image-20210219174434252.png

配置ambari-01 ambari-02 ambari-03

添加hadoop 用户 赋予sudo权限

# 配置hostname

# 关闭SELinux、关闭防火墙

# 生成私钥公钥

# 配置免密登录 我们所谓的免密就是拿集群中的一台机器作为管理节点,然后让他可以 ssh免密码到其他节 点执行命令,这对我们维护一个多节点的集群非常有意义。我们当然以 ambari-01为管理节点, 所以要实现 ambari-01到其他节点的免密。 拿到 ambari-01的公钥: 把 ambari-01的公钥添加到 ambari02和 ambari-03的~/.ssh/authorized_keys文件中 然后 ambari-01到 ambari-02、ambari-03分别连接一次: ssh ambari-02 ssh ambari-03 如果第一次需要输入 yes第二次不需要则 ssh免密就做好了,注意我们只做了 ambari-01到其他节点的 ssh免密。

时钟同步 安装Chrony

ambari-01 Chrony Server
ambari-02 Chrony Client
ambari-03 Chrony Client

安装 chrony 

安装 chrony

sudo yum -y install chrony

1、服务状态:

#启动chrony服务

systemctl start chronyd.service

#设置开机同步时间

systemctl enable chronyd.service

#查看服务状态

systemctl status chronyd.service

#直接关闭防火墙

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

#不关闭防火墙、但允许NTP服务

#因NTP使用123/UDP端口协议,所以允许NTP服务即可

firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload

1、服务端配置

#配置文件修改

vi /etc/chrony.conf

#注释掉以下四行(避免去外部 chrony-server同步时间)

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

#新增配置 指定chrony-server为 ambari-01

server 127.127.1.1 iburst

#Allow NTP client access from local network,配置允许访问的客户端列表,支持CIDR,例如:

allow 192.168.0.0/16

#Serve time even if not synchronized to any NTP server.,打开注释即可,即:

local stratum 10

#重启下服务端chrony服务

systemctl restart chronyd.service

2、客户端配置

#配置文件修改

vim /etc/chrony.conf

#修改server即可,删掉其他的,添加要同步时间的源服务器ip,格式如下:server ambari-01 iburst

server x.x.x.x iburst

#重启下客户端chrony服务

systemctl restart chronyd.service

#客户端使用

chronyc sources -v

image-20210220111929677.png


image-20210220113231033.png

ambari-02 ambari-03 安装Java

步骤如上

纳入ambari管理
将节点ambari-02 ambari-03 纳入到ambari-01管理

image-20210220142611994.png

配置主机名、私钥等信息

image-20210220143001432.png

开始安装

image-20210220143032539.png

选择服务DataNode & Client

image-20210220143159858.png

配置保持默认

image-20210220143229607.png

后续环节与上ambari-server一致 Review 、Install Start and Test、 Summary

image-20210220143304698.png


image-20210220143312393.png

来源url
栏目