基于CentOS 7使用Ambari 2.7.4部署Hadoop集群
环境准备与系统配置
在部署 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 集群
- 登录 Ambari 控制台后点击"Launch Install Wizard"开始安装流程。
- 输入集群名称,例如 my-hadoop-cluster。
- 选择使用本地仓库,填写各组件 base URL 地址。
- 输入待加入集群的主机列表:
hdp01,hdp02(预留 hdp03 用于扩容演示)。 - Agent 自动注册完成后,选择所需的大数据服务,如 HDFS、YARN、Hive、ZooKeeper 等。
- 根据角色分布建议分配 Master 和 Slave 组件位置。
- 为 Hive、Oozie 等依赖数据库的服务设置独立账号和密码。
- 创建 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
集群横向扩展:新增节点
- 进入 Hosts 页面,选择 "Add New Hosts"。
- 输入新主机 IP 或主机名(hdp03),上传 SSH 凭据。
- 选择需在此节点部署的 Client 工具及部分 Slave 角色(如 DataNode、NodeManager)。
- 完成安装后该节点将纳入统一管理。
启用关键组件高可用模式
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 状态。