Amari介绍
Apache Ambari 项目旨在通过开发用于配置、管理和监控 Apache Hadoop 集群的软件来简化 Hadoop 管理。Ambari 提供了直观、易于使用的 Hadoop 管理 Web UI,并由其 RESTful API 支持。
Ambari 使系统管理员能够:
-
配置 Hadoop 集群
- Ambari 提供了一个分步向导,用于在任意数量的主机上安装 Hadoop 服务。
- Ambari 处理集群的 Hadoop 服务配置。
-
管理 Hadoop 集群
- Ambari 提供对整个集群中 Hadoop 服务的启动、停止和重新配置的集中管理。
-
监控 Hadoop 集群
- Ambari 提供了一个仪表板来监控 Hadoop 集群的运行状况和状态。
- Ambari 利用Ambari Metrics System进行指标收集。
- Ambari 利用Ambari 警报框架进行系统警报,并在需要您注意时通知您(例如,节点出现故障、剩余磁盘空间不足等)。
Ambari 使应用程序开发人员和系统集成商能够:
- 使用Ambari REST API轻松将 Hadoop 配置、管理和监控功能集成到自己的应用程序中。
Ambari 是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。
用户通过Ambari Server通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。Ambari Server 从整个集群上收集信息。每个主机上都有 Ambari Agent, Ambari Server 通过 Ambari Agent 控制每部主机。
总的来说,Ambari是一个强大的工具,可以简化Hadoop集群的管理和监控。
注意:Ambari 目前支持以下操作系统的 64 位版本:
- RHEL(红帽企业 Linux)7.4、7.3、7.2
- CentOS 7.4、7.3、7.2
- OEL(Oracle 企业 Linux)7.4、7.3、7.2
- Amazon Linux 2
- SLES(SuSE Linux Enterprise )12 SP3、12 SP2
- Ubuntu 14 和 16
- Debian 9
产品互操作性
Ambari 2.7.5 仅支持 HDP-3.1.5 和 HDF-3.2.0
支持矩阵工具提供以下信息:
- 操作系统
- 数据库
- 浏览器
- JDK
使用以下 URL 确定对每个产品版本的支持。
https://supportmatrix.hortonworks.com
软件要求
On each of your hosts:
yum
andrpm
(RHEL/CentOS/Oracle/Amazon Linux)zypper
andphp_curl
(SLES)apt
(Debian/Ubuntu)scp, curl, unzip, tar
,wget
, andgcc*
- OpenSSL (v1.01, build 16 or later)
- Python 2.7.12 (with python-devel*)
*Ambari Metrics Monitor uses a python library (psutil) which requires gcc and python-devel packages.
官方文档参考:
https://docs.cloudera.com/HDPDocuments/Ambari-2.7.5.0/bk_ambari-installation/content/ch_Getting_Ready.html
ip 角色规划
准备4台虚拟机
ip | hostname | 软件 |
---|---|---|
192.168.1.10 | ambari | ambari |
192.168.1.11 | hdp-node1 | HDP-3.1.5 |
192.168.1.12 | hdp-node2 | HDP-3.1.5 |
192.168.1.13 | hdp-node3 | HDP-3.1.5 |
1 环境准备
1.1 配置hostname和ip
hostnamectl set-hostname ambari
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,114.114.114.114' connection.autoconnect yes
nmcli connection up ens33
hostnamectl set-hostname hdp-node1
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.11/24 ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,114.114.114.114' connection.autoconnect yes
nmcli connection up ens33
hostnamectl set-hostname hdp-node2
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.12/24 ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,114.114.114.114' connection.autoconnect yes
nmcli connection up ens33
hostnamectl set-hostname hdp-node3
nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.13/24 ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,114.114.114.114' connection.autoconnect yes
nmcli connection up ens33
1.2 配置免密登录
要让 Ambari Server 自动在所有集群主机上安装 Ambari Agent,您必须在 Ambari Server 主机和集群中的所有其他主机之间设置无密码 SSH 连接。Ambari Server 主机使用 SSH 公钥身份验证来远程访问和安装 Ambari Agent。
#在 Ambari Server 主机上生成公钥和私钥 SSH 密钥
[root@ambari ~]# ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
[root@ambari ~]# for i in {10..13}
do
ssh-copy-id 192.168.1.$i
done
1.3 优化ssh连接
#此步骤可做可不做,如果xshell连接较慢,可以进行优化
sed -i 's/#UseDNS\ yes/UseDNS\ no/g; s/GSSAPIAuthentication\ yes/GSSAPIAuthentication\ no/g' /etc/ssh/sshd_config
systemctl restart sshd
1.4 配置hosts
[root@ambari ~]# cat >> /etc/hosts << 'EOF'
192.168.1.10 ambari
192.168.1.11 hdp-node1
192.168.1.12 hdp-node2
192.168.1.13 hdp-node3
EOF
[root@ambari ~]# for i in {1..3}
do
scp /etc/hosts hdp-node$i:/etc/hosts
done
1.5 配置时间同步
#卸载系统自带的chrony,安装ntp
[root@ambari ~]# for i in {10..13}
do
ssh 192.168.1.$i "yum -y remove chrony && yum -y install ntp"
done
#修改ntp配置,用ambari当时间服务器,hdp-node当做客户端
[root@ambari ~]# vim /etc/ntp.conf
#注释或删除以下四行
#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 127.127.1.0
fudge 127.127.1.0 stratum 10
#启动并设置开机自启
[root@ambari ~]# systemctl enable --now ntpd
#验证
[root@ambari ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 10 l 52 64 1 0.000 0.000 0.000
#客户端配置
[root@hdp-node1 ~]# vim /etc/ntp.conf
#注释掉以下四行
#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
#添加2行
server 192.168.1.10
fudge 192.168.1.10 stratum 10
#启动并设置开机自启
[root@hdp-node1 ~]# systemctl enable --now ntpd
#验证
[root@hdp-node1 ~]# ntp
ntpd ntpdate ntpdc ntp-keygen ntpq ntpstat ntptime
[root@hdp-node1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ambari LOCAL(0) 11 u 17 64 1 1.839 -10.211 0.000
#将hdp-node1的配置同步到hdp-node2、hdp-node3
[root@hdp-node1 ~]# for i in {2,3}
do
scp /etc/ntp.conf hdp-node$i:/etc/ntp.conf
done
[root@hdp-node1 ~]# for i in {2,3}
do
ssh hdp-node$i "systemctl enable --now ntpd"
done
1.6 关闭防火墙和selinux
[root@ambari ~]# for i in {10..13}
do
ssh 192.168.1.$i "systemctl disable --now firewalld; setenforce 0 && sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config"
done
1.7 修改最大打开文件数量限制和修改umask值
#官网建议打开文件描述符的最大数量为 10000 或更多
#查看
[root@ambari ~]# ulimit -Sn
1024
[root@ambari ~]# ulimit -Hn
4096
#查看 umask
[root@ambari ~]# umask
#临时修改
[root@ambari ~]# ulimit -n 10000
#设置ulimit
[root@ambari ~]# cat >> /etc/profile << 'EOF'
#设置最大打开文件数量
ulimit -n 10000
#设置umask的值
umask 0022
EOF
#加载配置
[root@ambari ~]# source /etc/profile
#分发文件到其他节点
[root@ambari ~]# for i in {1..3}
do
scp /etc/profile hdp-node$i:/etc/profile
done
1.8 安装jdk
#上传jdk安装包
[root@ambari ~]# ll
总用量 135964
-rw-------. 1 root root 1257 3月 29 2023 anaconda-ks.cfg
-rw-r--r-- 1 root root 139219380 11月 8 15:19 jdk-8u371-linux-x64.tar.gz
#解压
[root@ambari ~]# tar -xf jdk-8u371-linux-x64.tar.gz -C /usr/local/
#配置环境变量
[root@ambari ~]# cat >> /etc/profile << 'EOF'
#Set for java
export JAVA_HOME=/usr/local/jdk1.8.0_371
export PATH=$PATH:$JAVA_HOME/bin
EOF
#加载环境变量
[root@ambari ~]# source /etc/profile
#分发文件到其他节点
[root@ambari ~]# for i in {1..3}
do
scp -r /usr/local/jdk1.8.0_371/ hdp-node$i:/usr/local/
scp /etc/profile hdp-node$i:/etc/profile
done
1.9 配置本地基础镜像yum源
[root@ambari ~]# cat >> /etc/fstab << 'EOF'
/media/CentOS-7-x86_64-Everything-2009.iso /mnt iso9660 defaults 0 0
EOF
[root@ambari ~]# mount -a
[root@ambari ~]# cat >> /etc/yum.repos.d/local.repo << 'EOF'
[dvd]
name=dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF
#镜像中包含了 libtirpc-0.2.4-0.16.el7.x86_64.rpm;libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm ambari在部署hdp集群时会自动安装这两个包
1.10 准备安装包并上传到服务器
ambari-2.7.5.0-centos7.tar.gz
HDP-3.1.5.0-centos7-rpm.tar.gz
HDP-GPL-3.1.5.0-centos7-gpl.tar.gz
HDP-UTILS-1.1.0.22-centos7.tar.gz
mysql-connector-java-5.1.49.jar
安装包获取地址:
链接: 点击下载
提取码:wy6b
2 配置Ambari HDP本地yum源
2.1 部署 http 服务
#安装httpd
[root@ambari ~]# yum -y install httpd
[root@ambari ~]# mkdir /var/www/html/{ambari,hdp}
[root@ambari ~]# cd HDP3.1.5/
[root@ambari HDP3.1.5]# tar -xf ambari-2.7.5.0-centos7.tar.gz -C /var/www/html/ambari/
[root@ambari HDP3.1.5]# tar -xf HDP-3.1.5.0-centos7-rpm.tar.gz -C /var/www/html/hdp/
[root@ambari HDP3.1.5]# tar -xf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /var/www/html/hdp/
[root@ambari HDP3.1.5]# tar -xf HDP-GPL-3.1.5.0-centos7-gpl.tar.gz -C /var/www/html/hdp/
[root@ambari HDP3.1.5]# systemctl enable --now httpd
访问地址
http://192.168.1.10/ambari/ambari/centos7/2.7.5.0-72/
#访问报错
Error: [object Object]
#解决办法,删除或移走html文件
[root@ambari HDP3.1.5]# cd /var/www/html/ambari/ambari/centos7/2.7.5.0-72/
[root@ambari 2.7.5.0-72]# mv *.html /root/
http://192.168.1.10/hdp/HDP/centos7/3.1.5.0-152/
[root@ambari 2.7.5.0-72]# cd /var/www/html/hdp/HDP/centos7/3.1.5.0-152/
[root@ambari 3.1.5.0-152]# mv *.html /root/
http://192.168.1.10/hdp/HDP-GPL/centos7/3.1.5.0-152/
http://192.168.1.10/hdp/HDP-UTILS/centos7/1.1.0.22/
2.2 配置 Ambari yum 源
[root@ambari ~]# cat > /etc/yum.repos.d/ambari.repo << 'EOF'
#VERSION_NUMBER=2.7.5.0-72
[Ambari-2.7.5.0-72]
name=Ambari-2.7.5.0-72
baseurl=http://192.168.1.10/ambari/ambari/centos7/2.7.5.0-72/
gpgcheck=1
gpgkey=http://192.168.1.10/ambari/ambari/centos7/2.7.5.0-72/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
EOF
2.3 配置hdp yum 源
[root@ambari ~]# cat > /etc/yum.repos.d/hdp.repo << 'EOF'
#VERSION_NUMBER=3.1.5.0-152
[HDP-3.1.5.0-152]
name=HDP-3.1.5.0-152
baseurl=http://192.168.1.10/hdp/HDP/centos7/3.1.5.0-152/
gpgcheck=1
gpgkey=http://192.168.1.10/hdp/HDP/centos7/3.1.5.0-152/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
[HDP-GPL-3.1.5.0-152]
name=HDP-GPL-3.1.5.0-152
baseurl=http://192.168.1.10/hdp/HDP-GPL/centos7/3.1.5.0-152/
gpgcheck=1
gpgkey=http://192.168.1.10/hdp/HDP-GPL/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-1.1.0.22
baseurl=http://192.168.1.10/hdp/HDP-UTILS/centos7/1.1.0.22/
gpgcheck=1
gpgkey=http://192.168.1.10/hdp/HDP-UTILS/centos7/1.1.0.22/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
EOF
2.4 拷贝yum源配置文件到其他节点
[root@ambari ~]# for i in {1..3}
do
scp -r /etc/yum.repos.d/* hdp-node$i:/etc/yum.repos.d/
done
3 安装MariaDB并配置
3.1 安装并启动 MariaDB
#卸载系统自带的
[root@ambari ~]# yum -y remove mariadb*
#安装
[root@ambari ~]# yum -y install mariadb-server
#设置开机自启并启动
[root@ambari ~]# systemctl enable --now mariadb.service
#查看启动的端口
[root@ambari ~]# ss -ntulp | grep 3306
tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=1382,fd=14))
如果安装Ranger 需要修改加上官网给出的这个参数
#在配置文件加上此配置
cat >> /etc/my.cnf << 'EOF'
log_bin_trust_function_creators = 1
EOF
3.2 初始化 MariaDB
#修改初始化密码,或者直接在初始化数据库的时候修改都可以
[root@ambari ~]# mysqladmin -uroot password '123'
#初始化数据库
[root@ambari ~]# /usr/bin/mysql_secure_installation
...
Enter current password for root (enter for none):
...
Change the root password? [Y/n] n
...
Remove anonymous users? [Y/n] y
...
Disallow root login remotely? [Y/n] n
...
Remove test database and access to it? [Y/n] y
...
Reload privilege tables now? [Y/n] y
...
Thanks for using MariaDB!
3.3 安装MariaDB安装驱动
[root@ambari ~]# mv mysql-connector-java-5.1.49.jar /usr/share/java/mysql-connector-java.jar
3.4 重启mariadb登录验证
[root@ambari ~]# systemctl restart mariadb.service
[root@ambari ~]# mysql -uroot -p
Enter password:
4 部署 Ambari-server服务
4.1 安装 Ambari-server
[root@ambari ~]# yum -y install ambari-server
4.2 修改Ambari 配置
#为ambari添加驱动配置,配置文件最后追加一行
[root@ambari ~]# cat >> /etc/ambari-server/conf/ambari.properties << 'EOF'
server.jdbc.driver.path=/usr/share/java/mysql-commector-java.jar
EOF
4.3 初始化ambari-server
[root@ambari ~]# ambari-server setup
...
Customize user account for ambari-server daemon [y/n] (n)? y
...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Custom JDK
==============================================================================
Enter choice (1): 2
...
Path to JAVA_HOME: /usr/local/jdk1.8.0_371
...
Enable Ambari Server to download and install GPL Licensed LZO packages [y/n] (n)? y
...
Enter advanced database configuration [y/n] (n)? 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
Hostname (localhost): ambari
Port (3306): 3306
Database name (ambari): ambari
Username (ambari): ambari
Enter Database Password (bigdata):
Re-enter password:
Configuring ambari database...
Should ambari use existing default jdbc /usr/share/java/mysql-connector-java.jar [y/n] (y)? y
Configuring remote database connection properties...
WARNING: Before starting Ambari Server, you must run the following DDL directly from the database shell to create the schema: /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
Proceed with configuring remote database connection properties [y/n] (y)? y
Extracting system views...
ambari-admin-2.7.5.0.72.jar
....
Ambari repo file doesn't contain latest json url, skipping repoinfos modification
Adjusting ambari-server permissions and ownership...
Ambari Server 'setup' completed successfully.
4.4 创建 Ambari 需要的相关数据库
[root@ambari ~]# mysql -uroot -p123
-- 配置ambari库
MariaDB [(none)]> create database ambari default charset utf8;
MariaDB [(none)]> use ambari;
MariaDB [ambari]> create user 'ambari'@'%' identified by '123';
MariaDB [ambari]> grant all privileges on *.* to 'ambari'@'%';
MariaDB [ambari]> create user 'ambari'@'localhost' identified by '123';
MariaDB [ambari]> grant all privileges on *.* to 'ambari'@'localhost';
MariaDB [ambari]> create user 'ambari'@'ambari' identified by '123';
MariaDB [ambari]> grant all privileges on *.* to 'ambari'@'ambari';
MariaDB [ambari]> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql
MariaDB [ambari]> use mysql;
MariaDB [mysql]> select host,user from user where user='ambari';
+-----------+--------+
| host | user |
+-----------+--------+
| % | ambari |
| ambari | ambari |
| localhost | ambari |
+-----------+--------+
-- 配置hive库
MariaDB [mysql]> create database hive default charset utf8;
MariaDB [mysql]> create user 'hive'@'%' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'hive'@'%';
MariaDB [mysql]> create user 'hive'@'%' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'hive'@'%';
MariaDB [mysql]> create user 'hive'@'localhost' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'hive'@'localhost';
MariaDB [mysql]> create user 'hive'@'ambari' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'hive'@'ambari';
-- 配置ozzie库
MariaDB [mysql]> create database ozzie default charset utf8;
MariaDB [mysql]> create user 'ozzie'@'%' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'ozzie'@'%';
MariaDB [mysql]> create user 'ozzie'@'localhost' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'ozzie'@'localhost';
MariaDB [mysql]> create user 'ozzie'@'ambari' identified by '123';
MariaDB [mysql]> grant all privileges on *.* to 'ozzie'@'ambari';
-- 重新加载权限
MariaDB [mysql]> flush privileges;
4.5 启动 Ambari-server
[root@ambari ~]# ambari-server start
4.6 部署 HDP 集群
- 浏览器访问 http://192.168.1.10:8080/
账号密码: admin / admin
- 选择版本,并配置yum源
点击 LAUNCH INSTALL WIZARD
- 配置集群名称
- 选择版本
HDP-3.1(Default Version Definition)
Use Local Repository
redhat7:
HDP-3.1 http://192.168.1.10/hdp/HDP/centos7/3.1.5.0-152
HDP-3.1-GPL http://192.168.1.10/hdp/HDP-GPL/centos7/3.1.5.0-152
HDP-UTILS-1.1.0.22 http://192.168.1.10/hdp/HDP-UTILS/centos7/1.1.0.22
- 配置安装节点和秘钥
ambari服务器上执行 cat /root/.ssh/id_rsa 将内容复制到页面上
- 等待安装完成
- 选择需要安装的服务
- 指定master
- 指定slave
- 设置服务的密码
全都1234
- 连接数据库
[root@ambari ~]# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
- 默认选择 下一步
- 默认选择 下一步
- 继续下一步
- 继续下一步
- 等待安装完成
- 安装完成
4.7 后记
在Ambari中安装 HDP 时,默认组件将被安装在以下目录中:
/usr/hdp/
:这是HDP组件的主要安装目录。通过Ambari安装的各组件(如Hadoop、Hadoop YARN、Hadoop MapReduce等)的默认安装路径都在这个目录下。/etc/ambari-server/
:这个目录包含Ambari的配置文件。例如,你可以在这个目录下找到server.properties
文件,它包含了Ambari服务器的配置信息。/var/log/ambari-server/
:这个目录用于存放Ambari服务器的日志文件。/usr/lib/ambari-server/
:这个目录包含了Ambari自身的服务。
以上信息仅供参考,具体路径可能会因版本或自定义配置而有所不同。