Ambari是Apache Software Foundation中的一个顶级项目,它可以创建、管理、监视Hadoop整个生态圈(例如Hive,Hbase,Sqoop,Zookeeper等)的集群,使得Hadoop以及相关的大数据软件更容易使用。
Ambari本身是一个分布式架构的软件,由Ambari Server和Ambari Agent两部分组成,用户可通过Ambari Server通知Ambari Agent安装对应的软件,Ambari Agent会定时地发送各个机器每个软件模块的状态给Ambari Server,最终这些状态信息会呈现在Ambari的GUI界面上,方便用户了解到集群的各种状态,并进行相应的维护。
部署Ambari集群前,需准备每台服务器环境:安装OS(本文统一采用CentOS 7.6操作系统)、关闭SELinux权限、关闭防火墙等;部署Ambari集群的整体流程大致分为2步:
该步骤包括:更新本地yum源、安装Ambari Server、拷贝安装OpenJDK等。
软件 | 版本 |
---|---|
OpenJDK | 1.8.0 |
Ambari | 2.7.3.0.0 |
该步骤包括:Ambari Server Setup、启动Ambari Server服务、安装Ambari Agent、安装组件、启动组件服务等。
部署流程图如图1所示。
物理组网方式如图2所示。
说明: yum源服务器最好单独拿一台服务器独立部署。
表1 TaiShan服务器部署场景 | |
---|---|
项目 | 说明 |
服务器 | TaiShan 200服务器 |
CPU | 华为鲲鹏920处理器 |
网络 | 可访问外网 |
磁盘分区 | 对磁盘分区无要求 |
表4 TaiShan服务器的操作系统要求 | |
---|---|
项目 | 版本 |
CentOS | 7.6 aarch64 |
Kernel | 4.14.0 |
cat /etc/redhat-release
说明: 支持的操作系统为CentOS 7.5 、7.6
echo $LANG
l 若操作系统默认语言为en_US.UTF-8,则进入3.1.3。
l 若操作系统默认语言非en_US.UTF-8,则执行以下步骤:
将默认语言由中文切换为英文。
echo ‘export LANG=en_US.UTF-8’>> ~/.bashrc
.将当前会话关闭后重新登录。
操作系统时区统一设置为(Asia /Shanghai)。
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
说明: 如果安装OS时已经将时区设置为Asia /Shanghai,则[3]*
(#kunpengambarihdp_04_0004__li54271650182818).1.3可忽略。
集群所有主机都必须配置域名解析,才能实现Server对Agent的顺利访问。建议由系统管理员统一配置,配置方法如下:
vi /etc/sysconfig/network
设置文件内容为:
NETWORKING=yes
HOSTNAME= {主机名}
hostnamectl set-hostname {主机名}
vi /etc/hosts
例如:
scp /etc/hosts root@{目标ip}:/etc/hosts**/**
systemctl restart network
说明: Ambari部署Hadoop集群时需要保证Ambari Server能够连接到Ambari Agent。
进行安装任务,集群所有主机都必须关闭防火墙。
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
vi /etc/selinux/config
umask 0022
echo umask 0022 >> /etc/profile
vi /etc/security/limits.conf
添加如下最后四行的内容:
# End of file
* hard nproc 65535
* soft nproc 65535
* hard nofile 65535
* soft nofile 65535
在群内所有主机禁用交换分区。
sysctl vm.swappiness=0
echo vm.swappiness=0 >> /etc/sysctl.conf
Ambari Server与Ambari Agent服务器之间需要配置ssh无密访问,Ambari Server通过SSH公钥授权远程登录其他主机。配置方法如下
l 在集群每台主机产生SSH认证密钥对。
ssh-keygen -t rsa
将Ambari Server生成的公钥文件id_rsa.pub拷贝至集群其他Ambari Agent主机。
在Ambari Server主机执行:
cd ~/.ssh/
ssh-copy-id -i ~/.ssh/id_rsa.pub root@{target_host}
说明:{target_host}包括hadoop集群的所有主机,可以是主机名或IP地址。
· 该命令完成后会在{target_host}的~/.ssh/目录下生成文件authorized_keys。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh {tarqet.host}
集群中每台服务器均需配置本地镜像源。
在有OS镜像文件文件的目录下执行:
mount YOUR_OS.iso /media/ -o loop
说明: YOUR_OS.iso用实际的iso包名代替。(iso镜像为安装的centos镜像,需手动上传)
l 备份repo。
cd /etc/yum.repos.d
mkdir -p /etc/yum.repos.d/bak
mv *.repo bak
l 创建并编辑local.repo文件。
vi local.repo
在local.repo文件中添加如下内容:
[local] name=local repo
baseurl=file:///media
enabled=1
gpgcheck=0
生效本地源。
yum clean all
yum makecache
说明: 集群内所有主机,如果需要开启kerberos,还需jce安装包。
安装JDK(需先执行配置OS镜像源)。
yum install java-1.8.0-openjdk -y
打开环境变量的配置文件。
vi /etc/profile
添加下面语句至文件最后。
export JAVA_HOME=/usr/lib/jvm/java
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
说明: 尽量选择jdk1.8及以上版本,x86服务器如 TaiShan服务器如 jdk-8u222-linux-aarch64.tar.gz,这里以TaiShan服务器为例。
ARM环境下载地址:(此路径可能更新,具体路径可自行搜索)
https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u222-b10/OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz
也可以去如下地址自行选择对应版本:
https://adoptopenjdk.net/releases.html
官方下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
l 解压及修改权限。
tar -zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u222b10.tar
chown -R root:root jdk8u222-b10/
chmod -R 755 jdk8u222-b10/
l 移动到“/usr/local”目录下。
mv jdk8u222-b10/ /usr/local/
l 打开环境变量的配置文件。
vi /etc/profile
l 添加下面语句至文件最后。
export JAVA_HOME=/usr/local/jdk8u222-b10
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
l 更新环境变量。
source /etc/profile
准备一台服务器,作为yum源。搭建yum源服务器需要做到以下几步:关闭防火墙、关闭selinux权限、安装Apache-Httpd服务和管理rpm包,部分操作参照关闭防火墙~禁用交换分区章节。
说明: 以防遗漏,请全部下载。
鲲鹏rpm下载地址:
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/HDP-UTILS-1.1.0.22/repos/HDP-UTILS-1.1.0.22-centos7.tar.gz
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/HDP-GPL/3.x/updates/3.1.0.0/HDP-GPL-3.1.0.0-centos7-gpl.tar.gz
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/ambari/2.x/updates/2.7.3.0/ambari-2.7.3.0-centos7.tar.gz
https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/HDP/3.x/updates/3.1.0.0/HDP-3.1.0.0-centos7-rpm.tar.gz
yum install httpd createrepo
service httpd start
systemctl status httpd.service
若状态为running,则安装并启动成功:
分别创建如下目录,管理ambari的rpm包。
mkdir -p /var/www/html/entry/ambari/2.7.3.0.0/centos7/aarch64
其中把前面下载tar.gz包解压出的rpm包进行分类,鲲鹏计算平台的包放到aarch64目录
分别创建如下目录,管理hdp的rpm包。
mkdir -p /var/www/html/entry/hdp/3.1/centos7/aarch64
aarch64
│ ├── atlas-metadata_3_1_0_0_78-1.1.0.3.1.0.0-78.aarch64.rpm
│ ├── bigtop-jsvc-1.0.15-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-client-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-conf-pseudo-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-datanode-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-fuse-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-journalnode-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-namenode-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-secondarynamenode-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-hdfs-zkfc-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-httpfs-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-httpfs-server-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-libhdfs-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-mapreduce-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-mapreduce-historyserver-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-source-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-nodemanager-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-proxyserver-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-registrydns-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-resourcemanager-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-timelinereader-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hadoop_3_1_0_0_78-yarn-timelineserver-3.1.1.3.1.0.0-78.aarch64.rpm
│ ├── hbase_3_1_0_0_78-2.0.2.3.1.0.0-78.aarch64.rpm
│ ├── hive_3_1_0_0_78-3.1.0.3.1.0.0-78.aarch64.rpm
│ ├── hive_3_1_0_0_78-jdbc-3.1.0.3.1.0.0-78.aarch64.rpm
│ ├── livy2_3_1_0_0_78-0.5.0.3.1.0.0-78.aarch64.rpm
│ ├── phoenix_3_1_0_0_78-5.0.0.3.1.0.0-78.aarch64.rpm
│ ├── ranger_3_1_0_0_78-hbase-plugin-1.2.0.3.1.0.0-78.aarch64.rpm
│ ├── ranger_3_1_0_0_78-hdfs-plugin-1.2.0.3.1.0.0-78.aarch64.rpm
│ ├── ranger_3_1_0_0_78-hive-plugin-1.2.0.3.1.0.0-78.aarch64.rpm
│ ├── ranger_3_1_0_0_78-yarn-plugin-1.2.0.3.1.0.0-78.aarch64.rpm
│ ├── spark2_3_1_0_0_78-2.3.2.3.1.0.0-78.aarch64.rpm
│ ├── spark2_3_1_0_0_78-yarn-shuffle-2.3.2.3.1.0.0-78.aarch64.rpm
│ └── tez_3_1_0_0_78-0.9.1.3.1.0.0-78.aarch64.rpm
cd /var/www/html/entry/ambari/2.7.3.0.0/centos7 && createrepo .
cd /var/www/html/entry/hdp/3.1/centos7 && createrepo .
须知:createrepo 后需要加路径,上述命令最后的“.”,表示当前路径,不可缺少,否则会报错。
执行以上两条命令后,将在以上两个目录分别生成repodata文件夹:
[root@Management-1 centos7]# ll
total 12
drwxr-xr-x 2 root root 4096 Oct 15 16:34 aarch64
drwxr-xr-x 2 root root 4096 Oct 15 19:01 repodata
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLMO9ML9-1595222397398)(file:///C:\Users\xayj\AppData\Local\Temp\ksohtml15564\wps21.jpg)]说明: 这一步需在集群中每台服务器上执行。
cd /etc/yum.repos.d
vi ambari.repo
在ambari.repo文件中添加如下内容:
[ambari]
name=ambari repo
baseurl=http://{yum源服务器ip}/entry/ambari/2.7.3.0.0/centos7
enabled=1
gpgcheck=0
vi hdp.repo
在hdp.repo文件中添加如下内容:
[hdp]
name=hdp repo
baseurl=http://{yum源服务器ip}/entry/hdp/3.1/centos7
enabled=1
gpgcheck=0
说明: baseurl可以在浏览器中验证是否能够正常访问。
yum clean all
yum makecache
集群中所有节点主机的时间必须设置同步才能访问Ambari的Web Ul界面。
rpm -qa|grep ntp
yum install ntp -y
在集群内所有节点检查是否设置时钟同步开机自启。
systemctl is-enabled ntpd
若已设置,则进入3.10.3。
若未设置,则设置开机自启。
systemctl enable ntpd
vi /etc/ntp.conf
说明: 有外部时钟源则跳过此操作。
参照下面内容进行设置。
# Hosts on local network are less restricted.
restrict IP address1 mask IP address2 nomodify notrap
#允许内网其他机器同步时间,IP address1为当前网关,IP address2为子网掩码
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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
server IP address #设置本机为时钟服务器
Fudge IP address stratum 10
例:date -s ‘20191010 13:49’
systemctl restart ntpd.service
在其他服务器中配置。
vi /etc/ntp.conf
# Hosts on local network are less restricted.
restrict IP address1 mask IP address2 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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
server IP address perfer #设置为ntpserver的ip
fudge IP address stratum 10
systemctl restart ntpd.service
输入ntpstat
ntp server状态如下:
synchronised to local net at stratum 6
time correct to within 12 ms
polling server every 64 s
ntp client状态如下:
synchronised to NTP server (IP address) at stratum 7
time correct to within 41 ms
polling server every 1024 s
groupadd bigdata
useradd -g bigdata -d /home/bigdata bigdata
echo “bigdata@123” | passwd --stdin bigdata
cp /etc/sudoers /etc/sudoers_bak
echo “bigdata ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
说明: 在集群中server服务器上执行即可。
说明:也可以自行安装mysql
yum install mariadb mariadb-server.aarch64 mysql-connector-java.noarch -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb.service
mysql -uroot -p
默认没有密码,按回车即可登录。
[root@server1 yum.repos.d]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
设置密码。
set password = password(‘密码’);
MariaDB [(none)]> set password = password(**'root'**);
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
须知:****flush privileges**必须执行,否则设置不生效。
退出后重新登录,查看密码是否修改成功。
MariaDB [(none)]> exit;
Bye
[root@server1 yum.repos.d]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
MariaDB [(none)]>
MariaDB [(none)]> create database ambari;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use ambari;
Database changed
MariaDB [ambari]> CREATE USER 'ambari'@'%' IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> GRANT ALL PRIVILEGES on *.* To 'ambari'@'%'
IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> CREATE USER 'ambari'@'**server1**' IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.01 sec)
MariaDB [ambari]> GRANT ALL PRIVILEGES on *.* To 'ambari'@'**server1**' IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> CREATE USER 'ambari'@'**agent1**' IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> GRANT ALL PRIVILEGES on *.* To 'ambari'@'**agent1**'
IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> CREATE USER 'ambari'@'**agent2**' IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> GRANT ALL PRIVILEGES on *.* To 'ambari'@'**agent2**'
IDENTIFIED BY 'ambari123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [ambari]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
说明: 根据实际情况进行修改,需要对集群中每一台服务器创建用户。
本章操作可选用bigdata或者root用户执行。(以下二选一)
yum install ambari-server.aarch64
执行su bigdata
sudo yum install ambari-server.aarch64
vi /etc/profile
export buildNumber=2.7.3.0.0
source /etc/profile
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
bigdata用户需执行:
sudo ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
ambari-server setup
sudo ambari-server setup
说明: 若使用普通用户安装Ambari-server,参数“Customize user account for ambari-server daemon [y/n] (n)?”选择“y”,
参数“Enter user account for ambari-server daemon (root)”则输入建立的普通用户。
参数“Path to JAVA_HOME”根据安装JDK的实际路径填写。
说明: 参数Enter Database Password(bigdata)输入安装数据库中设置的密码。
mysql -uroot -p
MariaDB [(none)]> use ambari;
Database changed
MariaDB [ambari]> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
ambari-server start
sudo ambari-server start
查看Ambari server状态。
ambari-server status
[root@Namenode1 centos7]# ambari-server status
Using python /usr/bin/python
Ambari-server status**Ambari Server running**
Found Ambari Server PID: 18130 at: /var/run/ambari-server/ambari-server.pid
启动ambari-server后,通过客户端浏览器登录Ambari的界面。
浏览器网址:http://
默认登录用户名/密码为:admin/admin。
单击“Launch Install Wizard”搭建集群。
输入集群的名字,不能使用空格和其他特殊字符。例如:“cluster1”
单击“下一步”,进入选择版本。
将除了redhat7之外的os选项通过右边的remove删除。
在redhat7对应的base url中填入hdp.repo文件中的地址,这里为http://{yum源服务器ip}/entry/hdp/3.1/centos7。
单击“下一步”,进入安装选项。
在目标主机中填入集群中所有服务器的主机名。
填入server主机的ssh密钥。
通过cat ~/.ssh/id_rsa命令获取。
单击“REGISTER AND CONFIRM”,进入确认主机。
安装ambari-agent,并检测主机,保证检查结果没问题。
单击“下一步”,进入部署基础服务。
说明: 没有特别说明直接单击下一步即可。
选择服务,单击“下一步”。
根据自己需要,安装HDFS、ZooKEEPER、Ambari Metrics、Atlas、hive、tez、yarn+mapreduce等服务
须知:Datanode directories只能配置数据盘对应的目录,配置系统盘目录容易将系统盘写满,导致服务挂起。NameNode directories配置的目录数量控制在2-3个,可以配置为系统盘较大的目录。
格式化数据盘和挂盘命令参考:
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart logical 0% 100%
mkfs.xfs -f /dev/sdb1
mkdir -p /hadoop/data1
mount /dev/sdb1 /hadoop/data1
输入集群的密码,此处都为默认密码。
说明: 添加Hive服务时需要在MySQL所在的server中新建一个名称为Hive的Database。
登录MySQL。
mysql -u root -p
创建名称为Hive的Database。
create database hive;
退出MySQL。
exit;
上图中,Database 的下拉框选择Existing MySQL/MariaDB,Username为安装数据库中创建的Ambari,密码为ambari123,Database URL的主机部分需改成mysql server主机的hostname,图中server主机是server1,根据实际情况填写。如:jdbc:mysql://server1/hive
Test connection成功后可单击“下一步”。
**须知:**当前页面时需要刷新一下浏览器页面,使当前界面中Repositories中有url地址。
等待安装完成。
添加Yarn+MapReduce2服务:
单击add service,选择yarn+mapreduce2。
单击“下一步”,等待安装完成。
**须知:**安装完,可能会有以下告警,请重启带重启标志的组件。
单击add service,选择Hive和Tez。
说明: 添加Hive服务时需要在MySQL所在的server中新建一个名称为Hive的Database。
登录MySQL。
mysql -u root -p
创建名称为Hive的Database。
create database hive;
退出MySQL。
exit;
上图中,Database 的下拉框选择Existing MySQL/MariaDB,Username为安装数据库中创建的Ambari,密码为ambari123,Database URL的主机部分需改成mysql server主机的hostname,图中server主机是server1,根据实际情况填写。如:jdbc:mysql://server1/hive
Test connection成功后可单击“下一步”。
须知:**安装完,可能会有以下告警,请重启带重启标志的组件。
本文为参考华为技术栈成功搭建之后所编写,若有侵权请及时联系!