当前位置:首页 > 技术 > 正文内容

基于CentOS 7使用Ambari 2.7.4部署Hadoop集群

访客 技术 2026年7月7日 1

环境准备与系统配置

在部署 Hadoop 集群前,需确保所有节点具备一致的基础环境。建议主节点(Ambari Server 所在机器)内存不低于16GB,其余工作节点可配置为8GB。

1. 配置主机名解析

编辑每台服务器的 /etc/hosts 文件,添加以下内容以实现内网域名映射:

10.0.0.138 hdp01.ambari.com hdp01  
10.0.0.139 hdp02.ambari.com hdp02  
10.0.0.140 hdp03.ambari.com hdp03

2. 调整文件句柄限制

为避免服务运行过程中因资源不足导致异常,需提升系统对打开文件数量的限制:

echo '* soft nofile 65535' >> /etc/security/limits.conf  
echo '* hard nofile 65535' >> /etc/security/limits.conf  
ulimit -n 65535

3. 启用时间同步机制

使用阿里云 NTP 服务器进行时间校准,并设置定时任务保持长期同步:

yum install -y ntpdate  
ntpdate ntp.aliyun.com  
echo '*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com &> /dev/null' >> /var/spool/cron/root

4. 安装 Java 运行环境

将 JDK 解压至标准路径并创建软链接,便于后续管理:

tar -zxf jdk-8u231-linux-x64.tar.gz -C /usr/local/  
cd /usr/local && ln -s jdk1.8.0_231 java

配置全局环境变量:

cat > /etc/profile.d/java.sh << 'EOF'  
export JAVA_HOME=/usr/local/java  
export CLASSPATH=$JAVA_HOME/lib/tools.jar  
export PATH=$JAVA_HOME/bin:$PATH  
EOF  
source /etc/profile.d/java.sh

Ambari Server 节点专项配置

以下操作仅在计划安装 Ambari Server 的主机上执行(如 hdp01)。

1. 配置 SSH 免密登录

生成密钥对并将公钥分发至所有集群节点,包括自身:

ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa < /dev/null  
ssh-copy-id hdp01  
ssh-copy-id hdp02  
ssh-copy-id hdp03

禁用首次连接时的主机验证提示:

echo "StrictHostKeyChecking no" >> ~/.ssh/config

搭建本地 Yum 源服务

使用 Nginx 提供静态资源访问能力,用于托管 Ambari 和 HDP 相关 RPM 包。

1. 安装并启动 Nginx

yum install -y nginx  
systemctl enable nginx && systemctl start nginx

2. 解压离线软件包到 Web 根目录

tar -zxf ambari-2.7.4.0-centos7.tar.gz -C /usr/share/nginx/html/ambari/centos7/2.7.4.0-118/  
tar -zxf HDP-3.1.4.0-centos7-rpm.tar.gz -C /usr/share/nginx/html/HDP/centos7/3.1.4.0-315/  
tar -zxf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz -C /usr/share/nginx/html/HDP-GPL/centos7/3.1.4.0-315/  
tar -zxf HDP-UTILS-1.1.0.22-centos7.tar.gz -C /usr/share/nginx/html/HDP-UTILS/centos7/1.1.0.22/

3. 创建本地仓库配置文件

编写 /etc/yum.repos.d/ambari.repo

[ambari-repo]  
name=Ambari Repository  
baseurl=http://hdp01/ambari/centos7/2.7.4.0-118/  
gpgcheck=0  
enabled=1

[HDP-repo]  
name=HDP Repository  
baseurl=http://hdp01/HDP/centos7/3.1.4.0-315/  
gpgcheck=0  
enabled=1

[HDP-GPL-repo]  
name=HDP GPL Repository  
baseurl=http://hdp01/HDP-GPL/centos7/3.1.4.0-315/  
gpgcheck=0  
enabled=1

[HDP-UTILS-repo]  
name=HDP UTILS Repository  
baseurl=http://hdp01/HDP-UTILS/centos7/1.1.0.22/  
gpgcheck=0  
enabled=1

验证仓库状态:

yum repolist | grep -i ambari -A 2 -B 2

安装与初始化 Ambari Server

1. 安装服务组件

yum install -y ambari-server

2. 部署 MySQL 数据库支持

安装 MySQL 5.7 并初始化数据库结构。完成后执行如下 SQL 命令:

CREATE DATABASE ambari CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;  
CREATE USER 'ambari'@'%' IDENTIFIED BY 'bigdata';  
GRANT ALL PRIVILEGES ON ambari.* TO 'ambari'@'%';  
FLUSH PRIVILEGES;

USE ambari;  
SOURCE /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;

3. 安装 JDBC 驱动

将 MySQL 连接器复制到指定目录:

mkdir -p /usr/share/java  
cp mysql-connector-java-8.0.18.jar /usr/share/java/

4. 启动配置向导并运行服务

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

通过浏览器访问 http://hdp01:8080,默认账户密码为 admin/admin。

通过 Web 界面部署 Hadoop 集群

  1. 登录 Ambari 控制台后点击"Launch Install Wizard"开始安装流程。
  2. 输入集群名称,例如 my-hadoop-cluster
  3. 选择使用本地仓库,填写各组件 base URL 地址。
  4. 输入待加入集群的主机列表:hdp01,hdp02(预留 hdp03 用于扩容演示)。
  5. Agent 自动注册完成后,选择所需的大数据服务,如 HDFS、YARN、Hive、ZooKeeper 等。
  6. 根据角色分布建议分配 Master 和 Slave 组件位置。
  7. 为 Hive、Oozie 等依赖数据库的服务设置独立账号和密码。
  8. 创建 Hive 元数据库:
mysql -uroot -p  
CREATE DATABASE hive CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;  
CREATE USER 'hive'@'%' IDENTIFIED BY 'bigdata';  
GRANT ALL ON hive.* TO 'hive'@'%';  
FLUSH PRIVILEGES;

返回界面配置 JDBC 连接字符串为:jdbc:mysql://hdp01:3306/hive

调整各服务的数据存储路径和服务运行用户,确认资源配置无误后进入预览阶段。若无错误则点击 DEPLOY 开始自动化部署。

处理部署后事项

  • 部署完成后出现若干警告信息属正常现象,可后续优化。
  • SmartSense 模块非核心功能且已停止维护,建议停用并删除:
# 在 Ambari UI 中停止 SmartSense 服务并移除  
find / -name "*smartsense*" -type d -exec rm -rf {} \; 2>/dev/null || true

集群横向扩展:新增节点

  1. 进入 Hosts 页面,选择 "Add New Hosts"。
  2. 输入新主机 IP 或主机名(hdp03),上传 SSH 凭据。
  3. 选择需在此节点部署的 Client 工具及部分 Slave 角色(如 DataNode、NodeManager)。
  4. 完成安装后该节点将纳入统一管理。

启用关键组件高可用模式

1. HDFS NameNode HA

前提条件:至少三个 ZooKeeper 节点,且 HBase 处于关闭状态。

操作步骤:

  • 进入 HDFS → Service Actions → Enable High Availability。
  • 指定 JournalNode 部署节点(通常三台全选)。
  • 按提示执行安全模式与命名空间保存命令:
sudo su hdfs -c 'hdfs dfsadmin -safemode enter'  
sudo su hdfs -c 'hdfs dfsadmin -saveNamespace'
  • 继续执行共享编辑日志初始化:
sudo su hdfs -c 'hdfs namenode -initializeSharedEdits'
  • 格式化 ZKFC 并引导备用 NameNode:
# 在主节点执行  
sudo su hdfs -c 'hdfs zkfc -formatZK'

# 在备节点执行  
sudo su hdfs -c 'hdfs namenode -bootstrapStandby'

2. YARN ResourceManager HA

进入 YARN → Service Actions → Enable ResourceManager HA。

  • 选择额外的 RM 实例部署节点(如 hdp03)。
  • 确认配置后系统自动重启相关进程。

3. HBase Master 高可用

添加 Secondary HMaster 实例:

  • 进入 HBase → Add Backup Master。
  • 选择目标主机(如 hdp02)。
  • 启动服务后可通过 Web UI 查看两个活跃 Master 状态。

最终验证

检查所有服务状态是否健康,必要时启用维护模式逐个重启组件以消除残留告警。最终确保 HDFS、YARN、Hive 等核心服务均处于 RUNNING 状态。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。