HDP大数据环境搭建(Ambari2.7.4+HDP3.1.4)

 不当菜狗。微信找到我: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

前置条件

软件要求

在每个主机上:

  • yumrpm(RHEL/CentOS/Oracle/Amazon Linux)

  • zypperphp_curl(SLES)

  • apt(Debian/Ubuntu)

  • scp, curl, unzip, tarwget, 和 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)

下载需要的软件

 https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/ambari_repositories.html

我建议用迅雷下载(要不然要让我们登录一个国外的账号然后验证):

下载ambari包:

集群管理工具Ambari 提供图形化界面(Web UI)和 REST API,用于快速部署、配置和运维 Hadoop 生态组件(如 HDFS、YARN、Hive、Spark 等)。

https://archive.cloudera.com/p/ambari/2.x/2.7.4.0/centos7/ambari-2.7.4.0-centos7.tar.gz

下载HDP的包:

HDP 的核心组件 RPM 包集合,包含 Hortonworks 官方维护的大数据服务(如 Hadoop、Hive、HBase、Spark、Kafka 等)

https://archive.cloudera.com/p/HDP/3.x/3.1.4.0/centos7/HDP-3.1.4.0-centos7-rpm.tar.gz

HDP 的 GPL 协议依赖包,包含一些基于 GPL 许可证的开源组件(如 Tez、Slider 等)

依赖的 GPL 软件(如某些版本的 Python 库、工具等)。

https://archive.cloudera.com/p/HDP-UTILS/1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-centos7.tar.gz

HDP 的 工具和工具库,提供安装、管理和维护 HDP 集群所需的实用程序。支持 Ambari 安装和管理 HDP 集群

https://archive.cloudera.com/p/HDP-GPL/3.x/3.1.4.0/centos7/HDP-GPL-3.1.4.0-centos7-gpl.tar.gz

准备环境 -- 里面的操作是所有参与集群的机器都需要做

打开文件数

下面这两命令是来查看机器的最大可打开文件扫描需求

建议的最大打开文件描述符数量为 10000 或更多

ulimit -Sn

ulimit -Hn

如果输出不大于 10000,请运行以下命令将其设置为合适的默认值:

临时修改:

ulimit -n 10000

永久修改:

vim /etc/security/limits.conf

配置主机名和/etc/hosts文件(所有服务器均设置)

  1. 配置主机名 hostnamectl set-hostname "主机名"

  2. 配置/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

https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/configuring_mysql_for_ranger.html

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上面配置就可以了

https://docs.cloudera.com/HDPDocuments/Ambari-2.7.4.0/bk_ambari-installation/content/getting_started_setting_up_a_local_repository.html

yum install yum-utils createrepo -y

yum install httpd -y

mkdir -p /var/www/html/
systemctl enable httpd

yum 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

执行到这里我们得到了两个本地仓库

  1. centos7自带系统光盘提供的库,提供常用软件安装

  2. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LT>_<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值