十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于Ambari的大数据平台离线部署实践:从内网Yum源到Hadoop集群

基于Ambari的大数据平台离线部署实践:从内网Yum源到Hadoop集群 简介面向大数据运维与架构人员的 Ambari 安装部署手册系统讲解从基础环境准备到集群创建、管理与监控的完整流程覆盖 Ambari 2.1.0、HDP 2.3.0 与 HDP-UTILS 等组件版本搭配以及 CentOS 7、JDK 1.8 等前置条件配置。资源为单个 PDF 文档约 7.97MB内容包含主机名规划、/etc/hosts 解析配置、网络脚本修改、防火墙与 SELinux 关闭、THP 禁用、HDP Repository 与 MySQL 驱动下载等实操细节并配有命令示例和参数说明适合需要离线搭建 Hadoop 生态集群的技术人员参考。文档从 Ambari 与 HDP 的基本概念入手逐步介绍服务器安装准备、Ambari 安装准备等关键环节步骤完整、命令可复制既可用于课堂学习也能作为生产环境部署前的核对清单。已有 719 人学习/下载对希望快速上手 Ambari 搭建大数据平台的读者具有较强参考价值。1. 离线内网里装 Hadoop 集群为什么绕不开 Ambari在大数据平台的交付现场我见过不少团队把大量时间消耗在 Hadoop 生态组件的手工安装上从 HDFS、YARN 到 ZooKeeper、Hive每台机器都要解压二进制包、修改配置文件再想办法把新配置同步到所有节点。Ambari 解决的就是这个问题——它把组件安装、配置管理、状态监控和告警收口到一个 Web 控制台安装过程由 Server 下发任务、Agent 在每台机器本地执行。这份安装手册以 CentOS 7、Ambari 2.1.0、HDP 2.3.0 为组合完整走了一遍从离线源搭建到 HDFS 等服务启动的路径对需要在隔离网络里交付大数据平台的运维和研发都有直接参考价值。2. Ambari 的 Server-Agent 架构与 HDP 版本选型2.1 Server 与 Agent 的分工决定排错方向Ambari 本身是一个分布式架构管理节点部署 ambari-server提供 Web UI、REST API 和 MySQL 元数据读写集群每台机器部署 ambari-agent接收 Server 下发的安装、启动、停止指令并定时上报各组件状态。Server 不会直接 SSH 到目标机器操作进程所有动作都由 Agent 在本地以子进程方式执行。这个模型的最大好处是节点扩容时不需要重新配置 Server 的密钥只要新机器装了 Agent 并指向正确的 Server 地址就能注册。# 查看 Agent 是否常驻运行 systemctl status ambari-agent # 只查看启动日志最后 20 行定位注册失败原因 journalctl -u ambari-agent --no-pager | tail -n 20第一条命令里看到 active (running) 不代表注册成功还要看日志中是否出现 “Registering” 或 “Connection refused”。Agent 默认每隔 60 秒与 Server 通信连续几个心跳周期失联Web UI 会把主机标记为异常。此时先检查 8080 端口连通性再检查 /etc/ambari-agent/conf/ambari-agent.ini 中的 hostname 是否写成了 localhost。服务默认端口用途ambari-server8080Web UI、REST APIambari-agent无固定监听端口主动连接 Server本地执行命令MySQL3306存储集群元数据Agent 没有固定的入站端口所以防火墙规则只需要放行 Server 的 8080 和 MySQL 的 3306排查方向比传统 C/S 模型简单一些。2.2 HDP 与 HDP-UTILS 是一组完整依赖不是可选组件Ambari 自身不携带 Hadoop 生态组件真正安装的是 HDP 这个软件栈。HDP 里包含 HDFS、Hive、HBase、ZooKeeper、Pig 等HDP-UTILS 则是辅助工具集合包含 nagios、ganglia、puppet 等运维组件。手动安装时常常只关注 HDP结果 yum 在解析依赖时报出“需要 HDP-UTILS”的错误。软件包版本作用Ambari2.1.0集群安装与监控控制台HDP2.3.0Hadoop 生态组件HDP-UTILS1.1.0.20辅助工具库JDK1.8.0_66运行环境版本对应关系直接决定离线包怎么下载。Ambari 2.1.0 对 HDP 2.3.0HDP-UTILS 对 1.1.0.20三个 tar.gz 要放同一台 httpd 服务器repo 文件里的 baseurl 与解压后的目录结构也必须一致。换用新版本时最稳妥的做法是先查 Ambari 官方版本矩阵而不是拍脑袋升级 HDP因为 Ambari 的 schema 和组件定义和 HDP 版本是绑定的。2.3 配置管理也是一种核心能力手工维护 Hadoop 集群时配置文件分布在十几台机器的多个目录里改一个参数要逐个节点同步。Ambari 把这种散落的配置集中到一个可回滚的状态版本里。在 Web UI 上修改参数Ambari 会生成新的配置版本由 Agent 推到对应主机再按依赖关系滚动重启相关服务。配置版本号在 MySQL 中保留因此改错了可以回到上一个版本。这个能力在多人协作的大数据平台运维里非常关键也是选择 Ambari 而不是单纯用 Ansible 脚本批量改配置的主要原因。# 查看 Ambari 从 yum 源里能否解析到具体包 yum list available ambari-server如果这条命令能列出 ambari-server 的 rpm 信息说明离线源和 repo 配置已经正确如果提示 No matching packages说明 baseurl 路径层级有问题需要回到 httpd 目录检查 repodata 是否存在。3. CentOS 7 环境准备主机名、防火墙、SSH 免密与 NTP 同步3.1 主机名和 hosts 决定节点唯一身份Ambari 把主机名当成集群节点的唯一标识后续所有组件部署、告警、状态展示都依赖主机名。如果机器 hostname 还停留在 localhostAgent 上报后 Server 无法区分节点安装向导里会看到同一个主机出现多次。因此第一件事是规划好 FQDN 和 IP并写进所有机器的 /etc/hosts。角色FQDNIPServer/NameNodemaster.ringchi.com192.168.1.111DataNode/NodeManagerslave01.ringchi.com192.168.1.112DataNode/NodeManagerslave02.ringchi.com192.168.1.113# 在 master 上设置主机名 hostnamectl set-hostname master.ringchi.com # 三台机器都要维护同样的 hosts 内容 cat /etc/hosts 192.168.1.111 master.ringchi.com master 192.168.1.112 slave01.ringchi.com slave01 192.168.1.113 slave02.ringchi.com slave02hosts 里 FQDN 在前、短名在后这样 Ambari 展示的主机名会优先使用 FQDN。如果只写短名HBase RegionServer、Kafka broker 在拼接连接地址时可能解析不到完整域名。网络配置方面CentOS 7 默认网卡名可能是 eno16777736需要把 BOOTPROTO 改成 static补充 IPADDR、GATEWAY、DNS然后重启网卡用ping -c 3 master.ringchi.com验证三台机器的互通性。3.2 防火墙、SELinux 和 THP大数据初装必须处理的三项内核设置firewalld 会拦截 HDFS 的 IPC 端口、YARN 的调度端口以及 Agent 到 Server 的心跳连接手动逐个放行规则太零碎离线内网环境下通常直接关闭。SELinux 则在 httpd 读取挂载目录、组件进程写文件时产生 Permission denied难排查建议同一批机器统一关闭。# 停用 firewalld systemctl stop firewalld.service systemctl disable firewalld.service # 临时关闭 SELinux并修改配置文件保证重启后仍然关闭 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 关闭 transparent hugepage避免内存分配抖动 echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag注意 setenforce 0 只对当前运行内核生效一定要同步修改 /etc/selinux/config。THP 的关闭命令还要追加到 /etc/rc.local并加判断语句包裹防止系统重启后 THP 重新打开。验证 THP 是否生效看 /sys/kernel/mm/transparent_hugepage/enabled 输出里方括号是否落在 never 上SELinux 用getenforce命令查看输出 Disabled 才是关闭状态。3.3 SSH 免密要追加公钥不要直接覆盖Ambari 安装本身不依赖 SSH 免密但后续手动执行 hdfs 命令、添加新节点、排查问题时从 master 登录其他节点是高频操作。生成密钥时 -P 表示空密码将公钥追加到目标机器的 authorized_keys而不是用重定向覆盖因为那台机器可能已经有其他管理机的公钥。# 生成密钥对空密码 ssh-keygen -t rsa -P # master 上先加入自己的公钥 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 把公钥传给 slave01并在 slave01 上追加 scp ~/.ssh/id_rsa.pub rootslave01:~/ ssh rootslave01 cat ~/id_rsa.pub ~/.ssh/authorized_keys rm -f ~/id_rsa.pub配置完成后要双向验证从 master ssh slave01再回到 slave01 ssh master避免只做了单向信任。Ambari 添加新节点时如果希望安装过程不弹出密码提示需要保证安装用户在所有节点都能免密登录。3.4 NTP 时间同步用 ntpd 而不是只跑一次 ntpdate大数据集群对时间偏差很敏感HDFS 租约、Kerberos 票据、ZooKeeper 会话都会因为时间偏差出现诡异错误。Agent 上报心跳时如果本机和 Server 时间差超过阈值也会被拒绝。简单的做法是让 master 作为内网 NTP 服务器其他节点指向它。# master 的 /etc/ntp.conf 中添加本地时钟源 server 127.127.1.0 prefer fudge 127.127.1.0 stratum 8 systemctl restart ntpd.serviceslave 节点如果只是偶尔校准可以写 crontab 定时执行 ntpdate但如果集群长期运行更推荐让 slave 也运行 ntpd 并从 master 同步这样时间不会频繁跳变。检查同步状态使用ntpq -p第六列 reach 达到 17说明本机已经持续收到时间源应答。4. 离线 Yum 源和 MySQL 元数据库Ambari 安装的两个前置基础4.1 用 httpd 搭建可访问的 repo 根目录Ambari 安装 HDP 组件时调用 yumyum 需要从 repo 地址读取 repodata 和 rpm 包。内网环境没有公网源所以先在一台机器装 httpd把 CentOS ISO、Ambari、HDP、HDP-UTILS 全部放到 /var/www/html 下其他节点通过 HTTP 访问。ISO 镜像可以循环挂载使用不需要解压整个文件系统。# 安装并启动 httpd yum install -y httpd systemctl start httpd.service # 创建目录并挂载 CentOS ISO mkdir -p /var/www/html/{CentOS,ambari,HDP,HDP-UTILS} mount -o loop CentOS-7-x86_64-Everything-1511.iso /var/www/html/CentOS # 解压三个离线仓库包 tar -xzf ambari-2.1.0-centos7.tar.gz -C /var/www/html/ -v tar -xzf HDP-2.3.0.0-centos7-rpm.tar.gz -C /var/www/html/ -v tar -xzf HDP-UTILS-1.1.0.20-centos7.tar.gz -C /var/www/html/ -v解压完成后会在 /var/www/html 下生成 ambari、HDP、HDP-UTILS-1.1.0.20 等目录。repodata 是否直接位于这些目录下还是藏在更深层取决于 tar.gz 内部结构。用find /var/www/html -name repodata -type d确认实际路径再根据路径反推 repo 文件里的 baseurl这是最不容易出错的做法。4.2 修改 repo 文件并分发到所有节点压缩包内自带的 ambari.repo 和 hdp.repo 默认指向 hortonworks 公网地址需要全部替换成 master 的 HTTP 地址。替换时用 sed 同时改域名和路径再复制到 /etc/yum.repos.d/。# 修改 repo 文件中的 baseurl 指向内网源 sed -i s#http://public-repo-1.hortonworks.com#http://master.ringchi.com#g \ /var/www/html/ambari/centos7/2.x/updates/2.1.0/ambari.repo sed -i s#http://public-repo-1.hortonworks.com#http://master.ringchi.com#g \ /var/www/html/HDP/centos7/2.x/updates/2.3.0.0/hdp.repo # 复制到本机并分发到其他节点 cp /var/www/html/ambari/centos7/2.x/updates/2.1.0/ambari.repo /etc/yum.repos.d/ cp /var/www/html/HDP/centos7/2.x/updates/2.3.0.0/hdp.repo /etc/yum.repos.d/ scp /etc/yum.repos.d/ambari.repo rootslave01:/etc/yum.repos.d/ scp /etc/yum.repos.d/hdp.repo rootslave01:/etc/yum.repos.d/hdp.repo 里一般同时包含 HDP 和 HDP-UTILS 两个仓库段所以只分发这一个文件即可。每条 sed 替换都要求目录结构和 url path 完全对应否则执行yum repolist能看到仓库安装 rpm 时却一直 404。仓库需要能访问到的 repodata 路径ambarihttp://master.ringchi.com/ambari/centos7/2.x/updates/2.1.0/repodataHDPhttp://master.ringchi.com/HDP/centos7/2.x/updates/2.3.0.0/repodataHDP-UTILShttp://master.ringchi.com/HDP-UTILS-1.1.0.20/repos/centos7/repodata用 curl 验证一下再继续curl -I http://master.ringchi.com/HDP/centos7/2.x/updates/2.3.0.0/repodata/repomd.xml返回 200 说明 httpd 和目录层级都没问题可以继续安装。4.3 MySQL 初始化创建 ambari 库并装载 schemaAmbari Server 使用 MySQL 保存集群定义、主机分配、配置版本等元数据。安装好 MySQL 5.7 后先创建数据库和专用账号再用 ambari-server 自带的 DDL 脚本初始化表结构。CREATE DATABASE ambari CHARACTER SET utf8; CREATE USER ambari% IDENTIFIED BY bigdata123; GRANT ALL PRIVILEGES ON ambari.* TO ambari%; FLUSH PRIVILEGES;MySQL 5.7 首次启动会生成临时 root 密码通过grep temporary password /var/log/mysqld.log获取。如果密码策略太严格导致 CREATE USER 失败可以先执行SET GLOBAL validate_password_policyLOW;降低校验等级。执行 schema 脚本之前需要先安装 ambari-server rpm因为脚本路径 /var/lib/ambari-server/resources/ 由该 rpm 提供。# 先安装 ambari-server yum install -y ambari-server # 导入 Ambari 元数据表结构 mysql -uambari -pbigdata123 ambari /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql # 复制 JDBC 驱动并建立软链 cp mysql-connector-java-5.1.38-bin.jar /usr/share/java/ ln -s /usr/share/java/mysql-connector-java-5.1.38-bin.jar /usr/share/java/mysql-connector-java.jarAmbari 默认会在 /usr/share/java 下查找 mysql-connector-java.jar版本号不固定没关系软链可以避免后续升级驱动时反复修改 ambari-server 配置。4.4 ambari-server 交互配置与 Agent 注册执行 ambari-server setup 后配置向导会询问几个关键参数选择 JDK 时填系统已有的 Oracle JDK 1.8 路径数据库类型选 mysql数据库主机名 master.ringchi.com用户名密码是刚才创建的 ambari/bigdata123。答错也不用担心setup 后还能通过ambari-server setup --jdbc-dbmysql --jdbc-driver...单独补 JDBC 驱动。# 进入交互式配置按提示填写 JDK、MySQL、hostname ambari-server setup # 启动 Server ambari-server start # 在每台节点安装 Agent并指向 Server yum install -y ambari-agent sed -i s/^hostnamelocalhost/hostnamemaster.ringchi.com/ /etc/ambari-agent/conf/ambari-agent.ini systemctl start ambari-agentAgent 指向的 hostname 必须与 Server 所在机器的 FQDN 一致并且在 hosts 文件里有解析记录。浏览器打开 http://master.ringchi.com:8080 后用 admin/admin 登录。安装向导选择 HDP-2.3.0.0填主机时输入 master.ringchi.com、slave01.ringchi.com、slave02.ringchi.com组件分配环节把 NameNode、ResourceManager、HBase Master 放到 masterDataNode 和 NodeManager 放到两个 slave。分配完成进入安装页后Ambari 会按依赖排序启动所有组件这个过程在 Web UI 上会输出每个主机的安装日志不需要再 SSH 到每台机器看状态。5. 安装后的健康检查与排错先看日志再动配置5.1 进程与集群状态检查Ambari 安完只代表组件调度完成集群是否健康还要看各服务实际状态。以下命令分别检查 Server、Agent、HDFS DataNode 和 YARN NodeManagerambari-server status ambari-agent status hdfs dfsadmin -report yarn node -list -allhdfs dfsadmin 输出的 Live Nodes 数量与 DataNode 数量不符时优先怀疑节点防火墙没有关干净或磁盘空间不足导致 DataNode 进程反复退出。Web UI 每个服务页面的 Hosts 标签页可以看到组件最后心跳时间比逐个机器检查更高效。5.2 高频问题的定位方法现象定位方式Agent 一直注册不上看 /var/log/ambari-agent/ambari-agent.log检查 hostname 和 8080 端口安装组件时 rpm 下载 404curl -I 访问 repo 的 repomd.xml核对 baseurl 路径层级数据库连接失败mysql -h master.ringchi.com -uambari -p 手动测试再看 ambari-server.log组件启动后马上退出翻组件自己的日志HDFS 看 namenode.logYARN 看 resourcemanager.log一个容易误导人的现象是 Agent 日志出现 Connection refused但 Server 端口明明能访问。这时检查 Agent 配置文件里的 hostname 是否写成了 localhostAgent 会用它去连 Serverlocalhost 在 Agent 本机解析后指向自己网络自然不通。5.3 用 mysqldump 备份 Ambari 元数据Ambari 的 Web UI 里所有节点列表、组件分配、配置版本都保存在 MySQL 的 ambari 库中备份元数据库比备份虚拟磁盘更能覆盖配置迁移场景。# 导出 ambari 元数据库 mysqldump -uambari -pbigdata123 --single-transaction ambari /backup/ambari_$(date %F).sql恢复时先停掉 ambari-server导入 SQL 后重启。如果迁移到新机器还要同步 /etc/hosts 和 agent 配置里的主机名否则 Server 中记录的旧主机名与新环境对不上。用ambari-server restart拉起服务后重点观察 Agent 列表中所有主机是否重新变为绿色。本文还有配套的精品资源点击获取
返回列表