不当菜狗。微信找到我:Ltong-520_1314
HDP简介
Ambari是HDP的安装工具和管理界面
通过Ambari,用户可以简化集群的部署和管理,实时监控集群的运行状况,包括内存使用、CPU使用率、节点故障等。
此外,Ambari还提供了基于角色的用户认证、授权和审计功能,支持安全的Hadoop集群管理
- HDP:一个基于Apache Hadoop的开源大数据处理平台,包含多种组件如Hadoop、Hive、HBase等。
- Ambari:一个基于Web的管理工具,用于安装、配置、管理和监视Hadoop集群。
官网:
https://www.clouderacn.cn/
文档:
点击HDP:
https://supportmatrix.cloudera.com/#Hortonworks
前置条件
软件要求
在每个主机上:
yum
和rpm
(RHEL/CentOS/Oracle/Amazon Linux)
zypper
和php_curl
(SLES)
apt
(Debian/Ubuntu)
scp, curl, unzip, tar
,wget
, 和gcc*
OpenSSL(v1.01,build 16 或更高版本)
Python 2.7.12(带有 python-devel*)
*Ambari Metrics Monitor 使用 python 库(psutil),它需要 gcc 和 python-devel 包。
开始部署Ambari
这里我用最新版本(Ambari2.7.4 + HDP3.1.4)
下载需要的软件
我建议用迅雷下载(要不然要让我们登录一个国外的账号然后验证):
下载ambari包:
集群管理工具Ambari 提供图形化界面(Web UI)和 REST API,用于快速部署、配置和运维 Hadoop 生态组件(如 HDFS、YARN、Hive、Spark 等)。
下载HDP的包:
HDP 的核心组件 RPM 包集合,包含 Hortonworks 官方维护的大数据服务(如 Hadoop、Hive、HBase、Spark、Kafka 等)
HDP 的 GPL 协议依赖包,包含一些基于 GPL 许可证的开源组件(如 Tez、Slider 等)
依赖的 GPL 软件(如某些版本的 Python 库、工具等)。
HDP 的 工具和工具库,提供安装、管理和维护 HDP 集群所需的实用程序。支持 Ambari 安装和管理 HDP 集群
准备环境 -- 里面的操作是所有参与集群的机器都需要做
打开文件数
下面这两命令是来查看机器的最大可打开文件扫描需求
建议的最大打开文件描述符数量为 10000 或更多
ulimit -Sn
ulimit -Hn
如果输出不大于 10000,请运行以下命令将其设置为合适的默认值:
临时修改:
ulimit -n 10000
永久修改:
vim /etc/security/limits.conf
配置主机名和/etc/hosts文件(所有服务器均设置)
配置主机名
hostnamectl set-hostname "主机名"
配置/etc/hosts文件
要在hosts文件中配置
FQDN
形式的主机名映射,比如
使用
hostname -f
检查是否能够映射FQDN主机名
禁用 SELinux 和 PackageKit 并检查 umask 值(所有服务器均设置)
您必须禁用SELinux才能使Ambari设置正常运行, 在群集中的每台主机上,输入:
# 临时禁用
setenforce 0
# 永久禁用 SELinux
vim /etc/selinux/config
selinux=disabled在安装了带有PackageKit的RHEL / CentOS的安装主机上,打开
/etc/yum/pluginconf.d/refresh-packagekit.conf
使用文本编辑器, 进行以下更改 每台主机上enabled=0
设置umask为0022 每台主机上
umask
的作用
权限计算规则:
umask
通过“屏蔽”权限位来决定新文件的默认权限。
实际权限 = 最大默认权限 - umask 值。
文件的最大默认权限是
666
(即rw-rw-rw-
)。目录的最大默认权限是
777
(即rwxrwxrwx
)。示例(umask=0022):
新建文件权限:
666 - 022 = 644
→rw-r--r--
(所有者可读写,其他用户只读)。新建目录权限:
777 - 022 = 755
→rwxr-xr-x
(所有者可读/写/执行,其他用户可读/执行)。检查设置:
umask
如果没有就设置:
为当前登录session设置umask:
umask 0022
或为每个用户设置:
echo umask 0022 >> /etc/profile
配置iptables(防火墙)(所有服务器均设置)
为使Ambari在设置期间与其部署和管理的主机进行通信,某些端口必须是开放且可用的。 最简单的方法是禁用iptables,如下所示:
systemctl disable firewalld
service firewalld stop
设置SSH免密登陆(所有服务器均设置)
1.需要在每台机器上生成公钥和私钥:
命令:ssh-keygen -t rsa
2.就是将每台电脑的公钥都发送到node01中,然后node01就会生成一个authorized_keys文件专门存发送给它的公钥,记住node01自己本身也要发送一遍,然后把自己的公钥也放到authorized_keys文件里面去。:
在每一台电脑输入:ssh-copy-id node01
3.
复制第一台机器的认证到其他机器上:
在第一台机器上运行:因为node01上面authorized_keys文件存了所有机器的公钥。所以发给node02和node03让他们也有每个机器的公钥。
scp /root/.ssh/authorized_keys node02:/root/.ssh //将文件远程复制到nodde02中。
scp /root/.ssh/authorized_keys node03:/root/.ssh //将文件远程复制到nodde03中。
测试是否成功:在第一台机器上输入:ssh node02 //看是否能登录到第二台机器。
若不成功三台机器重启。
对于有的修改了ssh的ip和端口的:拷贝方式用
ssh-copy-id -p 对应的端口
访问的话 ssh -p 端口 ip地址
-p就是指定端口
为啥需要改呢:可以去看看这个文件是否把端口改了
验证:
时钟同步
方式一:所有主机和同一台主机的时间保持同步。
方式二:通过网络,所有主机和时钟同步服务器保持同步。
安装:yum install -y ntp
启动:crontab -e //配置调度任务。
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
安装mysql用来做Ambari的元数据库
mysql只用安装一个服务器就可以了,我选择node02
注意了: mysql装5.x的版本,别装8.x的,要不然后面AmbaiServer启动时各种问题说链接mysql,链接不到
# 1. 检查系统是否安装过mysql
rpm -qa|grep mysql
# 2. 卸载CentOS7系统自带mariadb
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs.xxxxxxx
# 3. 删除etc目录下的my.cnf ,一定要删掉,等下再重新建
rm /etc/my.cnf
创建mysql 用户组和用户---必须的
groupadd mysql
useradd -r -g mysql mysql
下载mysql的安装tar包:
https://downloads.mysql.com/archives/community/
解压:
tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
改名:
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
将mysql移动到/usr/local/目录:
mv mysql /usr/local/
进入mysql/bin/目录
cd /usr/local/
cd mysql/bin/
编译安装并初始化mysql,务必记住数据库管理员临时密码
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
kTfwE:Gk9gsk
编写配置文件 my.cnf ,并添加配置
vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
lower_case_table_names=1
启动mysql 服务器
/usr/local/mysql/support-files/mysql.server start
添加软连接,并重启mysql 服务
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
登录mysql ,密码就是初始化时生成的临时密码
mysql -u root -p
修改密码,因为生成的初始化密码难记
5.x的是这么修改
set password for root@localhost = password('111111');
8.x的这样修改
ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';
然后刷新权限:
FLUSH PRIVILEGES;
开放远程连接
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
设置开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
ok mysql搭建完成:
最后使用MySQL数据库客户端远程链接数据库,测试是否成功。
为Ranger配置Mysql
1.以 root 用户身份登录,然后使用以下命令创建 rangerdba
用户并授予其足够的权限。
CREATE USER 'rangerdba'@'localhost' IDENTIFIED BY 'rangerdba'; GRANT ALL PRIVILEGES ON *.* TO 'rangerdba'@'localhost'; 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;
2.使用exit
命令退出MySQL。
3.现在应该能够 rangerdba
使用以下命令重新连接到数据库:
mysql -u rangerdba -prangerdba
测试
rangerdba
登录后,使用exit
命令退出MySQL。
4.使用以下命令确认该 mysql-connector-java.jar
文件位于 Java 共享目录中。此命令必须在安装了 Ambari 服务器的服务器上运行。--3台机器都做
ls /usr/share/java/mysql-connector-java.jar
如果该文件不在 Java 共享目录中,请使用以下命令安装 MySQL 连接器 .jar 文件。
yum install mysql-connector-java -y --nogpgcheck
3.使用以下命令格式根据jdbc/driver/path
MySQL JDBC 驱动程序 .jar 文件的位置进行设置。此命令必须在安装了 Ambari 服务器的服务器上运行(等安装了Ambari在执行,记住了)。--Ambari只装一台 装在那台我们才执行哪一台
ambari-server setup --jdbc-db={database-type} --jdbc-driver={/jdbc/driver/path}例如:
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
安装JDK配置JAVA_HOME(所有服务器均设置)
这里我打算安装一个11的jdk 然后AmbariServer后面不能用,我又改成了17 还是不能用,因为
Java版本后面多了 ‘2025-01-21 LTS‘ 这种 Ambari识别不到,所以我又改成了jdk8的版本
下载地址:
https://www.oracle.com/java/technologies/downloads/archive/
解压后配置环境变量:
vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH//刷新
source /etc/profile
配置将HDP的包放到本地yum仓库
我在node01上面配置就可以了
yum install yum-utils createrepo -y
yum install httpd -y
mkdir -p /var/www/html/
systemctl enable httpdyum install yum-plugin-priorities -y
vim /etc/yum/pluginconf.d/priorities.conf
修改
[main]
enabled = 1
gpgcheck = 0
systemctl start/stop/restart httpd # 使用start 来启动httpd服务
systemctl start httpd
满足这些要求后,您可以采取措施准备设置本地存储库。
将HDP包上传到/var/www/html/目录下 ---上传到 node01
cd /var/www/html/
解压准备的 ambari hdp hdp-gpl hdp-utils 包到这个目录下
tar -zxvf ambari-2.7.4.0-centos7.tar.gz
tar -zxvf HDP-3.1.4.0-centos7-rpm.tar.gz
tar -zxvf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz
访问一下看看:
http://192.168.255.131/HDP/
配置yum仓库的配置文件(就是用yum指定咋们的本地yum仓库) node01执行
cd /etc/yum.repos.d
创建一个文件(
ambari.repo
)用来写hdp的yum配置信息vim ambari.repo
#VERSION_NUMBER=2.7.4.0-118
[ambari-2.7.4.0]
#json.url = http://public-repo-1.hortonworks.com/HDP/hdp_urlinfo.json
name=ambari Version - ambari-2.7.4.0
baseurl=http://192.168.255.131/ambari/centos7/2.7.4.0-118/
gpgcheck=1
gpgkey=http://192.168.255.131/ambari/centos7/2.7.4.0-118/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
将ambari.repo文件拷贝到集群中各个节点的/etc/yum.repos.d/路径下
scp -r /etc/yum.repos.d/ambari.repo node02:/etc/yum.repos.d/
scp -r /etc/yum.repos.d/ambari.repo node03:/etc/yum.repos.d/
清空一下yum缓存 3台机器都做
yum clean all
yum makecache执行
yum repolist
查看是否成功配置
返回两百说明能访问到
[root@node01 centos7]# curl -I http://192.168.255.131/HDP/centos7/3.1.4.0-315/repodata/repomd.xml
HTTP/1.1 200 OK
Date: Thu, 19 Jun 2025 10:37:32 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Mon, 26 Aug 2019 12:41:28 GMT
ETag: "bad-591047981ce00"
Accept-Ranges: bytes
Content-Length: 2989
Content-Type: text/xml
执行到这里我们得到了两个本地仓库
centos7自带系统光盘提供的库,提供常用软件安装
HDP相关的库,提供HDP相关软件安装
安装/启动AmbariServer nod01执行
安装ambari-server
因为我们已经在yum源里面的本地仓库加了HDP和AmbariServer的相关包,所以直接用yum安装
先尝试从基础仓库安装 yum install -y epel-release libtirpc-devel安装ambari-server 也就是ambari的server管理
yum install ambari-server -y
配置Ambari Server
执行:
ambari-server setup
按照提示内容选择
1.是否让ambari来控制各个服务组件的账户,默认即可
2.选择JDk 输入2自己指定jdk
3.配置数据库,选择Mysql提供host port username password等信息
这里我们配置mysql输入3:
然后执行(就是为了确保驱动没有问题,我们在输入一遍):
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
这里需要执行一下AmbariServer的初始化sql脚本,
进入到前面搭建的mysql里面去:
-- 创建 ambari 数据库 CREATE DATABASE ambari DEFAULT CHARACTER SET utf8;use ambari;
然后进入到 ambari库里面执行source 脚本文件
/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql,然后在mysql里面用source xxx文件 去执行
mysql> source /export/servers/Ambari-DDL-MySQL-CREATE.sql;
启动 ambari-server node01执行
ambari-server start
停止的命令 ambari-server stop
这个就是启动成功了
#查看日志
tail -F /var/log/ambari-server/ambari-server.log
还有就是mysql最好装5.x的版本。
可以看vim /etc/ambari-server/conf/ambari.properties 文件里面jdbc的那一块
查看webUI:
输入http://192.168.255.131:8080
默认账户密码: admin / admin
启动安装程序
启动 ambari-server node01执行
看看服务在不在在启动/停止
ambari-server start
停止的命令 ambari-server stop
#查看日志
tail -F /var/log/ambari-server/ambari-server.log
查看ambari-agent status状态
ambari-agent启停:
systemctl restart ambari-agent
查看状态
systemctl status ambari-agent
点击 LAUNCH INSTALL WIZARD
启动安装流程
安装过程
给定集群一个名称,这里使用Tong_test
选择版本,由于没有网络,默认只能使用HDP 3.1 因为我们在自己的本地仓库里面放的就是HDP3.1x的版本
选择本地仓库, 输入配置本地仓库时定义的url
http://192.168.255.131/HDP/centos7/3.1.4.0-315/
http://192.168.255.131/HDP-GPL/centos7/3.1.4.0-315/
http://192.168.255.131/HDP-UTILS/centos7/1.1.0.22/
安装选项 安装Ambair Agent
1.输入目标主机列表安装Agent,回车分隔(尽量将Ambari Server这个机器也复用上了,资源丰富的同学,可以不加这个机器也可以的. Ambari Server 和 集群可以相互独立,只要在在一个网络内互通即可)
2.上传Ambari Server 所在机器root账户的 私钥,方便Ambari Server 以root身份ssh到其他节点
cat .ssh/id_rsa
3.确认主机,正常如下,如果有警告请检查,然后运行重新检查来通过所有的主机检查
改了后点击这里,从新检查一下
4.选择服务组件,这里先安装一个最基本的zookeeper + Ambari Metrics 其他的后面在安装
5.一直点PROCEED ANYWAY
6.分配服务组件到各个主机上(自行分配即可)
点击NEXT->
7.分配客户端,将两个客户端机器勾选 就是选择那些服务的master是谁 datanode是谁/server是谁client是谁
8.自定义服务 密码是111
点击Deploy进行部署
ambari-server它会自动帮我们安装ambari-agent。
ambari-agent status
等待部署完成。。。
部署完成后,点击下一步
总结页面:
点击Complete,进入集群控制页面
显示问题:
原因:高版本的浏览器 不支持前端的DOMNodeInserted函数
在部署ambari-server的节点上面 这里我们是node01
修改这个文件:
/usr/lib/ambari-server/web/javascripts/app.js
将以前的initNavigationBar函数注释掉然后修改:
/**
* Navigation Bar should be initialized after cluster data is loaded
*/
initNavigationBar: function () {
let navigationBarObserver = null;
if (App.get('router.mainController.isClusterDataLoaded')) {
navigationBarObserver = new MutationObserver((mutationsList) => {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.classList && node.classList.contains('navigation-bar')) {
$(node).navigationBar({
fitHeight: true,
collapseNavBarClass: 'icon-double-angle-left',
expandNavBarClass: 'icon-double-angle-right'
});
navigationBarObserver.disconnect();
}
});
}
});
});
const targetNode = document.body;
const config = { childList: true, subtree: true };
navigationBarObserver.observe(targetNode, config);
}
}.observes('App.router.mainController.isClusterDataLoaded')
然后保存,去页面刷新就好了
服务介绍
一些基本的页面讲解,可以看:
https://blog.csdn.net/zhangxiongcolin/article/details/83585666
Ambari Metrics
→ 集群监控和告警(必备)。
作用
实时采集和存储集群的监控数据(如 CPU、内存、磁盘、服务状态等)。
提供可视化图表(在 Ambari Web UI 中展示)。
支持告警(如 HDFS 空间不足、NameNode 高负载等)。
常见用途
查看集群资源使用情况(如 YARN 内存、HDFS 存储)。
排查性能瓶颈(如高 CPU、网络延迟)。
设置告警规则(如 DataNode 宕机、磁盘空间不足)。
SmartSense(智能诊断服务)
故障诊断和优化(企业版功能,可选)。
如果是 测试环境,可以关闭 SmartSense 以减少资源占用。
作用
自动收集集群配置、日志和性能数据,用于 故障诊断和优化建议。
生成分析报告(如安全漏洞、配置问题、性能调优建议)。
支持 HDP(Hortonworks Data Platform)和 Cloudera 集群(需注册订阅)。
增加HDFS的节点
部署yarn
点击Add Service
添加 YARN + MapReduce2
配置节点和相关配置
点击Deploy
完成后即可使用
运行测试
[root@node02 /]# hadoop jar /usr/hdp/3.1.4.0-315/hadoop-mapreduce/hadoop-mapreduce-examples-3.1.1.3.1.4.0-315.jar wordcount /test.txt /wd-output