centos7.6下ambari部署文档

部署概述,ambari 环境部署主要分为两步骤

  • ambari server机器部署 (使用者可以通过访问server机器8080端口,在web中进行集群管理)
  • ambari client机器部署(接受ambari server调度,进行实际的Hadoop服务组件安装)

这里测试环境有如下三个节点:
10.10.180.143 test01
10.10.180.144 test02
10.10.180.145 test03
其中, test01节点同时作为ambari server和 ambari client
test02, test03仅作为ambari client 机器。

三个节点操作系统版本均为centos7.6

ambari服务部署

ambari server部署

修改主机名:

1
2
sudo hostnamectl set-hostname test01
sudo hostname test01

修改hosts,在/etc/hosts中添加各个主机的域名解析:

1
2
3
4
5
cat <<eof >>/etc/hosts
10.10.180.143 test01
10.10.180.144 test02
10.10.180.145 test03
eof

关闭防火墙:

1
2
systemctl stop firewalld
systemctl disable firewalld

关闭selinux:

1
2
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0

配置ntp定时时钟同步:

1
2
3
4
5
6
7
yum install -y ntpdate
touch /var/spool/cron/root
chmod 600 /var/spool/cron/root

cat << EOF >> /var/spool/cron/root
*/1 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn
EOF

jdk安装,这里使用提前下载好的tar.gz包:

1
2
3
4
5
6
7
8
9
tar -zxf jdk-8u231-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_231/ /usr/local/java

cat << EOF >> /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

source /etc/profile

配置test01节点到所有节点的免密登陆:

1
2
3
4
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@test01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@test02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@test03

安装其他以来包,包括httpd, wget, createrepo等:

1
yum -y install psmisc ntp ntpdate httpd createrepo wget

ambari server默认使用数据库为postgre,这里我们改为使用mysql, 先卸载系统默认安装的mariadb, 重新安装mysql 社区版:

1
2
3
4
5
6
7
yum -y remove mariadb-libs

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

yum localinstall mysql57-community-release-el7-8.noarch.rpm

yum install -y mysql-community-server

启动mysql服务:

1
2
systemctl start mysqld
systemctl enable mysqld

查看mysql初始密码:

1
2
cat /var/log/mysqld.log | grep password (获得初始密码)
# 比如这里查出密码为:JDaywt&oR8pE

初次登陆mysql, 修改密码和用户权限:

1
2
3
4
5
6
7
8
9
10
11
mysql -uroot -p'JDaywt&oR8pE'(首次登陆后,修改密码,并创建数据库)

set global validate_password_policy=LOW;
set global validate_password_policy=0;
set password=password('root1234');
use mysql;
update user set host='%' where host='localhost';
delete from user where host != '%';
flush privileges;
create database ambari default character set = 'utf8';
create database hive default character set = 'utf8';

配置mabari本地镜像,将提前下载的ambari包解压到httpd服务的静态资源目录下:

1
2
3
4
mkdir -p  /var/www/html/hdp-utils
tar -zxf ambari-2.5.0.3-centos7.tar.gz -C /var/www/html/
tar -zxf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/hdp-utils/
tar -zxf HDP-2.6.0.3-centos7-rpm.tar.gz -C /var/www/html/

启动httpd服务,并验证ambari 本地镜像是否可用:

1
2
3
4
5
6
7
systemctl start httpd && systemctl enable httpd
createrepo /var/www/html/

#验证
curl http://test01/ambari/ | grep centos
curl http://test01/HDP/ | grep centos
curl http://test01/hdp-utils/ | grep RPM-GPG-KEY

mysql jdbc jar包下载:

1
2
3
4
mkdir -p /usr/share/java/
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.27/mysql-connector-java-5.1.27.jar
mv mysql-connector-java-5.1.27.jar /usr/share/java/
mv /usr/share/java/mysql-connector-java-5.1.27.jar /usr/share/java/mysql-connector-java.jar

配置yum配置文件,为后面安装ambari-server做准备:

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
# 注意修改这里的访问地址为httpd的可访问地址
# 此处httpd服务部署在test01节点
cat << EOF > /etc/yum.repos.d/ambari.repo
[ambari-2.5.0.3]
name=ambari-2.5.0.3
baseurl=http://test01/ambari/centos7
gpgcheck=0
gpgkey=http://test01/ambari/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
EOF

# 注意修改这里的访问地址为httpd的可访问地址
# 此处httpd服务部署在test01节点
cat << EOF > /var/www/html/hdp-utils/hdp-util.repo
[HDP-UTILS-1.1.0.21]
name=Hortonworks Data Platform Version - HDP-UTILS-1.1.0.21
baseurl=http://test01/hdp-utils/
gpgcheck=0
enabled=1
priority=1
EOF

# 注意修改这里的访问地址为httpd的可访问地址
# 此处httpd服务部署在test01节点
cat << EOF > /var/www/html/HDP/centos7/hdp.repo
#VERSION_NUMBER=2.6.0.3-8
[HDP-2.6.0.3]
name=HDP Version - HDP-2.6.0.3
baseurl=http://test01/HDP/centos7/
gpgcheck=0
gpgkey=http://test01/HDP/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1

# 注意修改这里的访问地址为httpd的可访问地址
# 此处httpd服务部署在test01节点
[HDP-UTILS-1.1.0.21]
name=HDP-UTILS Version - HDP-UTILS-1.1.0.21
baseurl=http://test01/hdp-utils/
gpgcheck=0
gpgkey=http://test01/hdp-utils/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
EOF

yum安装ambari-server:

1
2
3
4
5
6
7
8
yum -y install ambari-server

cp /usr/share/java/mysql-connector-java.jar /var/lib/ambari-server/resources/mysql-jdbc-driver.jar

cat << EOF >> /etc/ambari-server/conf/ambari.properties

server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar
EOF

加载ambari db表结构:

1
2
3
mysql -uroot -p'root1234'
use ambari
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

ambari-server服务初始化:

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
ambari-server setup
#Customize user account for ambari-server daemon [y/n] (n)?
第一步输入y,开启守护进程

#Enter user account for ambari-server daemon (root):
第二步输入root,设置ambari-server的用户是root

#Checking JDK...
#[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
#[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
#[3] Custom JDK
#==============================================================================
#Enter choice (1): 3
第三步选择jdk,如果没有安装jdk可以输入1默认安装一个,但是我们此时选择3使用我们已经安装过的jdk
3
#Path to JAVA_HOME: /usr/local/java
当上一步输入的是3的时候,让你选择你之前安装过jdk的JAVA_HOME的路径
我们输入/usr/local/java

#Enter advanced database configuration [y/n] (n)? y
第5步输入y进入高级数据库配置
#Choose one of the following options:
#[1] - PostgreSQL (Embedded)
#[2] - Oracle
#[3] - MySQL / MariaDB
#[4] - PostgreSQL
#[5] - Microsoft SQL Server (Tech Preview)
#[6] - SQL Anywhere
#[7] - BDB
Enter choice(1):3
我们使用的是MySQL,所以输入3 ,进入MySQL的配置
Hostname(localhost):
Port(3306):
Database name(ambari):
Username(ambari):root
Enter database password(bigdata):root1234

经过此部,ambari-server已经初始化完成,为了后续部署hive的问题,我们再执行如下:

1
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

启动ambari-server 完成部署

1
ambari-server start

ambari client部署

在所有ambari client机器上执行如下
修改主机名:

1
2
3
# 这里替换为机器所需主机名
sudo hostnamectl set-hostname test02
sudo hostname test02

修改hosts,在/etc/hosts中添加各个主机的域名解析:

1
2
3
4
5
cat <<eof >>/etc/hosts
10.10.180.143 test01
10.10.180.144 test02
10.10.180.145 test03
eof

关闭防火墙:

1
2
systemctl stop firewalld
systemctl disable firewalld

关闭selinux:

1
2
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
setenforce 0

配置ntp定时时钟同步:

1
2
3
4
5
6
7
yum install -y ntpdate
touch /var/spool/cron/root
chmod 600 /var/spool/cron/root

cat << EOF >> /var/spool/cron/root
*/1 * * * * /usr/sbin/ntpdate ntp.sjtu.edu.cn
EOF

jdk安装,这里使用提前下载好的tar.gz包:

1
2
3
4
5
6
7
8
9
tar -zxf jdk-8u231-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_231/ /usr/local/java

cat << EOF >> /etc/profile
export JAVA_HOME=/usr/local/java
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

source /etc/profile

hadoop服务部署

完成ambari服务部署后,可在浏览器中访问ambari server对应机器的8080端口,开始hadoop集群部署,这里是访问http://test01:8080, 默认登陆用户/密码是 admin/admin

备注,第一次部署的时候,有可能会失败,失败后,修改ambari-client机器如下两处配置:

  1. /etc/python/cert-verification.cfg修改
    https verify为disable

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cat << EOF > /etc/python/cert-verification.cfg
    # Possible values are:
    # 'enable' to ensure HTTPS certificate verification is enabled by default
    # 'disable' to ensure HTTPS certificate verification is disabled by default
    # 'platform_default' to delegate the decision to the redistributor providing this particular Python version

    # For more info refer to https://www.python.org/dev/peps/pep-0493/
    [https]
    verify=disable
    EOF
  2. /etc/ambari-agent/conf/ambari-agent.ini修改
    在[security]下第一行添加force_https_protocol=PROTOCOL_TLSv1_2