1. 为什么选择Ambari管理Hadoop集群第一次接触Hadoop集群管理时我被各种繁琐的配置文件搞得晕头转向。直到发现了Ambari这个神器才真正体会到什么叫一键式管理。Ambari就像是Hadoop集群的智能管家它能帮我们自动化完成从安装部署到监控维护的全过程。想象一下传统方式部署一个10节点的Hadoop集群需要在每台机器上手动配置几十个参数文件光是校对配置就要花上一整天。而使用Ambari后同样的工作只需要在可视化界面上点几下鼠标喝杯咖啡的功夫就能搞定。我去年负责的一个金融项目原本预计需要3天的部署时间用了Ambari后只用了4个小时就完成了全部配置。Ambari的核心优势在于它的集中化管理能力。通过一个统一的Web界面我们可以实时监控所有节点的服务状态一键启停整个集群动态调整资源配置自动生成可视化报表特别适合中小型企业的技术团队不需要雇佣专门的Hadoop运维专家普通Linux管理员经过简单培训就能上手。我在给某电商客户做技术咨询时他们的运维团队只用了一周时间就完全掌握了Ambari的日常使用。2. 部署前的环境准备2.1 硬件与系统要求在开始安装前我们需要确保所有节点都满足基本要求。根据我的项目经验这里给出两个配置方案最小化测试环境配置CPU4核内存8GB主节点建议16GB磁盘100GB/var目录至少50GB网络千兆网卡生产环境推荐配置CPU16核以上内存32GB起步磁盘RAID10阵列1TB以上网络万兆互联我去年部署的一个生产集群就吃了配置不足的亏。客户为了省钱选了最低配结果运行Spark作业时频繁OOM。后来把DataNode内存从8GB提升到32GB性能直接提升了5倍。系统方面推荐使用CentOS 7.x或RHEL 7.x。曾经有个客户坚持要用Ubuntu结果在安装HDP时各种依赖冲突最后不得不重装系统。以下是必须的基础软件包# 基础编译环境 yum groupinstall Development Tools -y yum install -y epel-release # 必要工具 yum install -y wget curl tar unzip sshpass pdsh2.2 系统基础配置主机名与hosts配置是很多新手容易踩坑的地方。建议使用FQDN格式比如hadoop01.example.com。最近帮一个客户排查问题发现他们直接用ip当主机名导致ZK服务总是注册失败。这是我的标准hosts配置模板192.168.1.101 hadoop01 hadoop01.example.com 192.168.1.102 hadoop02 hadoop02.example.com 192.168.1.103 hadoop03 hadoop03.example.comSSH免密登录是Ambari自动化部署的关键。有个小技巧很多人不知道不仅要配置主节点到从节点的免密每个节点自身也要能免密登录。去年有个学员在培训时卡在这步报错信息是Permission denied折腾半天才发现是忘了配置localhost免密。完整的免密配置流程# 所有节点执行 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 主节点执行 for node in hadoop{01..03}; do ssh-copy-id -i ~/.ssh/id_rsa.pub $node done3. Ambari服务安装与配置3.1 搭建本地YUM仓库由于网络环境限制我强烈建议搭建本地YUM源。上周给一个政府客户部署时他们的服务器不能连外网幸好提前准备了本地源。首先在主节点安装HTTP服务yum install -y httpd systemctl start httpd systemctl enable httpd然后解压安装包到web目录。这里有个细节要注意Ambari和HDP的版本必须严格匹配。我见过有人混用Ambari2.7和HDP3.0结果各种兼容性问题。mkdir -p /var/www/html/ambari tar -zxvf ambari-2.7.5.0-centos7.tar.gz -C /var/www/html/ambari配置repo文件时priority参数很重要。曾经有个集群因为没设priority导致安装了错误版本的HBase数据全部损坏。这是我的标准repo配置[ambari-2.7.5.0] nameAmbari 2.7.5.0 baseurlhttp://hadoop01/ambari/centos7/2.7.5.0-72/ gpgcheck0 enabled1 priority13.2 数据库配置生产环境强烈推荐使用外部数据库。我习惯用MySQL但要注意字符集必须是utf8。去年有个客户用了默认的latin1结果中文字段全部乱码。创建数据库的完整SQLCREATE DATABASE ambari CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON ambari.* TO ambari% IDENTIFIED BY Ambari123; FLUSH PRIVILEGES;初始化Ambari时这个交互式命令很多人会卡壳ambari-server setup关键选项要这样选JDK路径/usr/jdk64/jdk1.8.0_232数据库类型3 (MySQL)数据库名称ambari用户名密码和前面创建的保持一致4. 集群部署实战4.1 Ambari Web界面初体验首次访问http://hadoop01:8080 时默认账号密码都是admin。建议第一时间修改密码去年有个客户的测试集群被黑了就是因为用了默认密码。登录后的第一个操作是Launch Install Wizard。这里有个实用技巧先点击Advanced Repository Setup手动指定本地源地址。我见过有人直接使用公网源结果下载速度只有10KB/s安装花了8个小时。正确的仓库配置应该是HDP: http://hadoop01/HDP/centos7/3.1.5.0-152/ HDP-UTILS: http://hadoop01/HDP-UTILS/centos7/1.1.0.22/4.2 服务分配策略Ambari会自动推荐服务部署方案但我的经验是手动调整更好。比如NameNode和ResourceManager要分开部署Hive Metastore最好单独一个节点ZooKeeper要奇数个节点且分散部署上个月优化一个客户集群时发现他们把所有服务都堆在主节点导致主节点负载长期90%。调整后整体性能提升了40%。4.3 配置调优建议安装向导的默认配置通常比较保守。根据我的实战经验这些参数需要重点关注HDFS配置dfs.namenode.handler.count 40 (默认30)dfs.datanode.max.transfer.threads 8192 (默认4096)YARN配置yarn.nodemanager.resource.memory-mb 物理内存的80%yarn.scheduler.maximum-allocation-mb 单节点最大容器内存Hive配置hive.exec.reducers.bytes.per.reducer 256MB (默认1GB)hive.tez.container.size 4GB (默认2GB)5. 常见问题排查5.1 安装失败处理日志是排查问题的关键。Ambari的日志主要在两个位置Server日志/var/log/ambari-server/ambari-server.logAgent日志/var/log/ambari-agent/ambari-agent.log最近遇到一个典型问题Agent报Unable to connect to Server。经查发现是防火墙没关执行以下命令解决systemctl stop firewalld systemctl disable firewalld5.2 服务启动异常如果HDFS无法启动首先检查磁盘空间df -h内存使用free -m端口冲突netstat -tulnp | grep 8020上周有个案例DataNode一直启动失败最后发现是磁盘满了。添加新磁盘后执行hdfs dfsadmin -report # 检查新磁盘是否被识别 hdfs diskbalancer -plan hadoop01 # 执行数据均衡5.3 性能优化技巧对于慢查询问题我的三板斧是检查YARN资源使用yarn top分析HDFS阻塞情况hdfs dfsadmin -report查看最近作业日志/var/log/hadoop-yarn/containers有个客户反映Hive查询特别慢后来发现是Tez容器内存设置太小。调整以下参数后性能提升3倍property namehive.tez.container.size/name value8192/value /property6. 日常运维管理6.1 监控与告警配置Ambari自带的监控已经很强大了但我习惯再配置邮件告警。最近半夜收到告警及时处理了一个即将写满的磁盘避免了生产事故。配置路径Admin Notifications Alert Notifications推荐设置这些关键告警DataNode磁盘使用率 80%NodeManager心跳丢失ZooKeeper进程状态6.2 扩容新节点上个月给一个电商集群扩容时总结出这个标准化流程新节点做好基础配置主机名、SSH、YUM源在Ambari界面点击Hosts Add New Hosts选择要安装的服务执行部署特别注意扩容后要重新平衡HDFS数据否则新节点会一直空闲。我常用的命令hdfs balancer -threshold 10 # 10%的均衡阈值6.3 版本升级指南Ambari支持原地升级但一定要先备份去年一个客户没备份就直接升级结果元数据库损坏最后只能重建集群。安全升级步骤备份元数据库mysqldump -uambari -p ambari ambari_backup.sql停止所有服务升级Ambari Serveryum upgrade ambari-server升级Ambari Agents升级HDP版本整个升级过程可能需要2-4小时建议在业务低峰期进行。
Ambari集群部署实战:从零搭建Hadoop管理平台
1. 为什么选择Ambari管理Hadoop集群第一次接触Hadoop集群管理时我被各种繁琐的配置文件搞得晕头转向。直到发现了Ambari这个神器才真正体会到什么叫一键式管理。Ambari就像是Hadoop集群的智能管家它能帮我们自动化完成从安装部署到监控维护的全过程。想象一下传统方式部署一个10节点的Hadoop集群需要在每台机器上手动配置几十个参数文件光是校对配置就要花上一整天。而使用Ambari后同样的工作只需要在可视化界面上点几下鼠标喝杯咖啡的功夫就能搞定。我去年负责的一个金融项目原本预计需要3天的部署时间用了Ambari后只用了4个小时就完成了全部配置。Ambari的核心优势在于它的集中化管理能力。通过一个统一的Web界面我们可以实时监控所有节点的服务状态一键启停整个集群动态调整资源配置自动生成可视化报表特别适合中小型企业的技术团队不需要雇佣专门的Hadoop运维专家普通Linux管理员经过简单培训就能上手。我在给某电商客户做技术咨询时他们的运维团队只用了一周时间就完全掌握了Ambari的日常使用。2. 部署前的环境准备2.1 硬件与系统要求在开始安装前我们需要确保所有节点都满足基本要求。根据我的项目经验这里给出两个配置方案最小化测试环境配置CPU4核内存8GB主节点建议16GB磁盘100GB/var目录至少50GB网络千兆网卡生产环境推荐配置CPU16核以上内存32GB起步磁盘RAID10阵列1TB以上网络万兆互联我去年部署的一个生产集群就吃了配置不足的亏。客户为了省钱选了最低配结果运行Spark作业时频繁OOM。后来把DataNode内存从8GB提升到32GB性能直接提升了5倍。系统方面推荐使用CentOS 7.x或RHEL 7.x。曾经有个客户坚持要用Ubuntu结果在安装HDP时各种依赖冲突最后不得不重装系统。以下是必须的基础软件包# 基础编译环境 yum groupinstall Development Tools -y yum install -y epel-release # 必要工具 yum install -y wget curl tar unzip sshpass pdsh2.2 系统基础配置主机名与hosts配置是很多新手容易踩坑的地方。建议使用FQDN格式比如hadoop01.example.com。最近帮一个客户排查问题发现他们直接用ip当主机名导致ZK服务总是注册失败。这是我的标准hosts配置模板192.168.1.101 hadoop01 hadoop01.example.com 192.168.1.102 hadoop02 hadoop02.example.com 192.168.1.103 hadoop03 hadoop03.example.comSSH免密登录是Ambari自动化部署的关键。有个小技巧很多人不知道不仅要配置主节点到从节点的免密每个节点自身也要能免密登录。去年有个学员在培训时卡在这步报错信息是Permission denied折腾半天才发现是忘了配置localhost免密。完整的免密配置流程# 所有节点执行 ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 主节点执行 for node in hadoop{01..03}; do ssh-copy-id -i ~/.ssh/id_rsa.pub $node done3. Ambari服务安装与配置3.1 搭建本地YUM仓库由于网络环境限制我强烈建议搭建本地YUM源。上周给一个政府客户部署时他们的服务器不能连外网幸好提前准备了本地源。首先在主节点安装HTTP服务yum install -y httpd systemctl start httpd systemctl enable httpd然后解压安装包到web目录。这里有个细节要注意Ambari和HDP的版本必须严格匹配。我见过有人混用Ambari2.7和HDP3.0结果各种兼容性问题。mkdir -p /var/www/html/ambari tar -zxvf ambari-2.7.5.0-centos7.tar.gz -C /var/www/html/ambari配置repo文件时priority参数很重要。曾经有个集群因为没设priority导致安装了错误版本的HBase数据全部损坏。这是我的标准repo配置[ambari-2.7.5.0] nameAmbari 2.7.5.0 baseurlhttp://hadoop01/ambari/centos7/2.7.5.0-72/ gpgcheck0 enabled1 priority13.2 数据库配置生产环境强烈推荐使用外部数据库。我习惯用MySQL但要注意字符集必须是utf8。去年有个客户用了默认的latin1结果中文字段全部乱码。创建数据库的完整SQLCREATE DATABASE ambari CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON ambari.* TO ambari% IDENTIFIED BY Ambari123; FLUSH PRIVILEGES;初始化Ambari时这个交互式命令很多人会卡壳ambari-server setup关键选项要这样选JDK路径/usr/jdk64/jdk1.8.0_232数据库类型3 (MySQL)数据库名称ambari用户名密码和前面创建的保持一致4. 集群部署实战4.1 Ambari Web界面初体验首次访问http://hadoop01:8080 时默认账号密码都是admin。建议第一时间修改密码去年有个客户的测试集群被黑了就是因为用了默认密码。登录后的第一个操作是Launch Install Wizard。这里有个实用技巧先点击Advanced Repository Setup手动指定本地源地址。我见过有人直接使用公网源结果下载速度只有10KB/s安装花了8个小时。正确的仓库配置应该是HDP: http://hadoop01/HDP/centos7/3.1.5.0-152/ HDP-UTILS: http://hadoop01/HDP-UTILS/centos7/1.1.0.22/4.2 服务分配策略Ambari会自动推荐服务部署方案但我的经验是手动调整更好。比如NameNode和ResourceManager要分开部署Hive Metastore最好单独一个节点ZooKeeper要奇数个节点且分散部署上个月优化一个客户集群时发现他们把所有服务都堆在主节点导致主节点负载长期90%。调整后整体性能提升了40%。4.3 配置调优建议安装向导的默认配置通常比较保守。根据我的实战经验这些参数需要重点关注HDFS配置dfs.namenode.handler.count 40 (默认30)dfs.datanode.max.transfer.threads 8192 (默认4096)YARN配置yarn.nodemanager.resource.memory-mb 物理内存的80%yarn.scheduler.maximum-allocation-mb 单节点最大容器内存Hive配置hive.exec.reducers.bytes.per.reducer 256MB (默认1GB)hive.tez.container.size 4GB (默认2GB)5. 常见问题排查5.1 安装失败处理日志是排查问题的关键。Ambari的日志主要在两个位置Server日志/var/log/ambari-server/ambari-server.logAgent日志/var/log/ambari-agent/ambari-agent.log最近遇到一个典型问题Agent报Unable to connect to Server。经查发现是防火墙没关执行以下命令解决systemctl stop firewalld systemctl disable firewalld5.2 服务启动异常如果HDFS无法启动首先检查磁盘空间df -h内存使用free -m端口冲突netstat -tulnp | grep 8020上周有个案例DataNode一直启动失败最后发现是磁盘满了。添加新磁盘后执行hdfs dfsadmin -report # 检查新磁盘是否被识别 hdfs diskbalancer -plan hadoop01 # 执行数据均衡5.3 性能优化技巧对于慢查询问题我的三板斧是检查YARN资源使用yarn top分析HDFS阻塞情况hdfs dfsadmin -report查看最近作业日志/var/log/hadoop-yarn/containers有个客户反映Hive查询特别慢后来发现是Tez容器内存设置太小。调整以下参数后性能提升3倍property namehive.tez.container.size/name value8192/value /property6. 日常运维管理6.1 监控与告警配置Ambari自带的监控已经很强大了但我习惯再配置邮件告警。最近半夜收到告警及时处理了一个即将写满的磁盘避免了生产事故。配置路径Admin Notifications Alert Notifications推荐设置这些关键告警DataNode磁盘使用率 80%NodeManager心跳丢失ZooKeeper进程状态6.2 扩容新节点上个月给一个电商集群扩容时总结出这个标准化流程新节点做好基础配置主机名、SSH、YUM源在Ambari界面点击Hosts Add New Hosts选择要安装的服务执行部署特别注意扩容后要重新平衡HDFS数据否则新节点会一直空闲。我常用的命令hdfs balancer -threshold 10 # 10%的均衡阈值6.3 版本升级指南Ambari支持原地升级但一定要先备份去年一个客户没备份就直接升级结果元数据库损坏最后只能重建集群。安全升级步骤备份元数据库mysqldump -uambari -p ambari ambari_backup.sql停止所有服务升级Ambari Serveryum upgrade ambari-server升级Ambari Agents升级HDP版本整个升级过程可能需要2-4小时建议在业务低峰期进行。