内容简介:本篇文章系统讲解Hadoop生态系统中核心组件的运维操作手册,涵盖HDFS、YARN、Hive、HBase、Kafka等组件的日常运维、故障处理、性能调优等实战内容。提供详细的操作步骤、命令示例和故障排查方法,帮助运维人员掌握Hadoop核心组件的运维技能,保障集群稳定运行。参考Apache Hadoop官方文档、Apache Hive官方文档、Apache HBase官方文档、Apache Kafka官方文档。
目录大纲
- Part01-基础概念与理论知识
- 1.1 Hadoop核心组件架构
- 1.2 运维职责与工作流程
- 1.3 运维工具与监控体系
- Part02-生产环境规划与建议
- 2.1 运维规范与标准
- 2.2 监控告警体系
- 2.3 备份恢复策略
- Part03-生产环境项目实施方案
- 3.1 HDFS运维操作手册
- 3.2 YARN运维操作手册
- 3.3 Hive运维操作手册
- Part04-生产案例与实战讲解
- 4.1 HDFS故障处理案例
- 4.2 YARN故障处理案例
- 4.3 Hive故障处理案例
- Part05-风哥经验总结与分享
- 5.1 运维常见问题
- 5.2 运维最佳实践
- 5.3 自动化运维经验
Part01-基础概念与理论知识
1.1 Hadoop核心组件架构
Hadoop生态系统核心组件架构:
- HDFS:分布式文件系统,提供高可靠、高吞吐的数据存储
- YARN:资源管理系统,负责集群资源调度和任务管理
- MapReduce:分布式计算框架,支持大规模数据处理
- Hive:数据仓库工具,提供SQL查询接口
- HBase:分布式数据库,支持实时读写
- Kafka:分布式消息队列,支持高吞吐消息处理
- ZooKeeper:分布式协调服务,提供配置管理、 leader选举等功能
更多视频教程www.fgedu.net.cn
1.2 运维职责与工作流程
Hadoop运维主要职责:
- 集群部署:负责Hadoop集群的安装、配置和部署
- 日常维护:负责集群日常巡检、监控和维护
- 故障处理:负责集群故障的排查和处理
- 性能优化:负责集群性能调优和优化
- 备份恢复:负责数据备份和恢复
- 升级扩容:负责集群升级和扩容
运维工作流程:
- 日常巡检:检查集群状态、资源使用情况
- 监控告警:监控集群运行状态,及时发现异常
- 故障处理:处理集群故障,恢复服务
- 性能优化:优化集群性能,提高资源利用率
- 备份恢复:定期备份数据,确保数据安全
1.3 运维工具与监控体系
常用运维工具:
- Ambari:Hadoop集群管理工具,提供Web界面
- Cloudera Manager:Cloudera提供的集群管理工具
- Ganglia:集群监控系统
- Prometheus:开源监控系统
- Grafana:可视化监控面板
- ELK Stack:日志收集和分析系统
风哥提示:选择合适的运维工具可以大大提高运维效率,建议根据实际情况选择合适的工具组合。
Part02-生产环境规划与建议
2.1 运维规范与标准
运维规范与标准:
- 配置管理:统一配置管理,使用配置管理工具
- 变更管理:建立变更流程,记录所有变更
- 文档管理:完善运维文档,记录操作步骤
- 权限管理:合理设置权限,确保安全
- 日志管理:统一日志收集,便于问题排查
运维标准:
- SLA标准:明确服务级别协议,确保服务质量
- 响应时间标准:明确故障响应时间,确保及时处理
- 备份标准:明确备份策略,确保数据安全
- 监控标准:明确监控指标,确保全面监控
更多视频教程www.fgedu.net.cn
2.2 监控告警体系
监控告警体系建设:
- 基础设施监控:CPU、内存、磁盘、网络等
- 服务监控:HDFS、YARN、Hive等服务状态
- 应用监控:任务执行情况、查询性能等
- 业务监控:业务指标、用户体验等
告警级别:
- P0:严重故障,需要立即处理
- P1:重要故障,需要尽快处理
- P2:一般故障,需要在工作时间内处理
- P3:轻微故障,可以安排在合适时间处理
2.3 备份恢复策略
备份恢复策略:
- 数据备份:定期备份重要数据,确保数据安全
- 配置备份:备份配置文件,便于快速恢复
- 元数据备份:备份HDFS元数据、Hive元数据等
- 恢复演练:定期进行恢复演练,验证备份有效性
备份策略:
- 全量备份:定期进行全量备份
- 增量备份:每天进行增量备份
- 异地备份:重要数据异地备份
- 备份验证:定期验证备份数据的完整性
更多视频教程www.fgedu.net.cn
Part03-生产环境项目实施方案
3.1 HDFS运维操作手册
HDFS常用运维命令:
# HDFS集群状态检查
hdfs dfsadmin -report
# HDFS安全模式操作
hdfs dfsadmin -safemode enter # 进入安全模式
hdfs dfsadmin -safemode leave # 退出安全模式
hdfs dfsadmin -safemode get # 查看安全模式状态
# HDFS数据块检查
hdfs fsck / -files -blocks -locations
# HDFS数据块平衡
hdfs balancer -threshold 5
# HDFS目录配额设置
hdfs dfsadmin -setQuota 1000 /data/user
hdfs dfsadmin -clrQuota /data/user
# HDFS空间配额设置
hdfs dfsadmin -setSpaceQuota 10T /data/user
hdfs dfsadmin -clrSpaceQuota /data/user
# HDFS快照操作
hdfs dfs -allowSnapshot /data/user
hdfs dfs -createSnapshot /data/user snapshot_20240115
hdfs dfs -deleteSnapshot /data/user snapshot_20240115
hdfs dfs -disallowSnapshot /data/user
# HDFS数据恢复
hdfs dfs -cp /data/user/.snapshot/snapshot_20240115/file.txt /data/user/file.txt
# HDFS节点管理
hdfs dfsadmin -report -live
hdfs dfsadmin -report -dead
hdfs dfsadmin -report -decommissioning
# HDFS节点退役
hdfs dfsadmin -refreshNodes
hdfs dfsadmin -getDatanodeInfo datanode1.fgedu.net.cn:50010
# HDFS清理操作
hdfs dfs -du -h /data/user
hdfs dfs -count -q /data/user
hdfs dfs -expunge
2024-01-15 21:00:01,234 INFO DFSAdmin – Configured Capacity: 100 TB
2024-01-15 21:00:02,345 INFO DFSAdmin – Present Capacity: 95 TB
2024-01-15 21:00:03,456 INFO DFSAdmin – DFS Used: 60 TB
2024-01-15 21:00:04,567 INFO DFSAdmin – Non DFS Used: 5 TB
2024-01-15 21:00:05,678 INFO DFSAdmin – DFS Remaining: 30 TB
2024-01-15 21:00:06,789 INFO DFSAdmin – Live Nodes: 20
2024-01-15 21:00:07,890 INFO DFSAdmin – Dead Nodes: 0
2024-01-15 21:00:08,901 INFO DFSAdmin – Decommissioning Nodes: 0
更多视频教程www.fgedu.net.cn
3.2 YARN运维操作手册
YARN常用运维命令:
# YARN集群状态检查
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn node -list
# YARN队列管理
yarn queue -status default
yarn queue -list
# YARN应用管理
yarn application -list
yarn application -status application_1705318201234_0001
yarn application -kill application_1705318201234_0001
yarn application -movetoqueue application_1705318201234_0001 -queue root.default
# YARN日志查看
yarn logs -applicationId application_1705318201234_0001
yarn logs -applicationId application_1705318201234_0001 -log_files stderr
# YARN节点管理
yarn node -list -states RUNNING
yarn node -list -states LOST
yarn node -status node1.fgedu.net.cn:8042
# YARN资源管理
yarn rmadmin -refreshQueues
yarn rmadmin -getGroups user1
# YARN调度器管理
yarn scheduler -info
yarn scheduler -list
# YARN诊断信息
yarn rmadmin -checkHealth
yarn rmadmin -getClusterMetrics
# YARN配置更新
yarn rmadmin -refreshAdminAcls
yarn rmadmin -refreshServiceAcl
yarn rmadmin -refreshUserToGroupsMappings
# YARN节点退役
yarn rmadmin -refreshNodes
# YARN HA切换
yarn rmadmin -transitionToActive rm1
yarn rmadmin -transitionToStandby rm1
yarn rmadmin -getServiceState rm1
2024-01-15 22:00:01,234 INFO RMAdmin – Service State: ACTIVE
2024-01-15 22:00:02,345 INFO RMAdmin – Cluster Metrics: Total Nodes: 20, Active Nodes: 20
2024-01-15 22:00:03,456 INFO RMAdmin – Total Memory: 1310720 MB, Available Memory: 524288 MB
2024-01-15 22:00:04,567 INFO RMAdmin – Total VCores: 480, Available VCores: 192
2024-01-15 22:00:05,678 INFO RMAdmin – Running Applications: 15
2024-01-15 22:00:06,789 INFO RMAdmin – Pending Applications: 5
风哥提示:YARN的队列管理非常重要,需要根据业务需求合理配置队列资源,避免资源竞争。
3.3 Hive运维操作手册
Hive常用运维命令:
# Hive服务管理
hive --service metastore &
hive --service hiveserver2 &
hive --service hwi &
# Hive元数据管理
hive -e "SHOW DATABASES;"
hive -e "SHOW TABLES;"
hive -e "DESCRIBE FORMATTED table_name;"
hive -e "SHOW PARTITIONS table_name;"
# Hive表管理
hive -e "MSCK REPAIR TABLE table_name;" # 修复分区
hive -e "ANALYZE TABLE table_name COMPUTE STATISTICS;" # 收集统计信息
hive -e "ANALYZE TABLE table_name COMPUTE STATISTICS FOR COLUMNS;" # 收集列统计信息
# Hive查询管理
hive -e "SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict;"
hive -e "EXPLAIN SELECT * FROM table_name WHERE date='2024-01-15';"
# Hive性能优化
hive -e "SET hive.auto.convert.join=true; SET hive.map.aggr=true;"
hive -e "SET hive.optimize.skewjoin=true; SET hive.skewjoin.key=100000;"
# Hive数据清理
hive -e "DROP TABLE IF EXISTS table_name PURGE;"
hive -e "TRUNCATE TABLE table_name;"
hive -e "ALTER TABLE table_name DROP IF EXISTS PARTITION (date='2024-01-15');"
# Hive权限管理
hive -e "GRANT ALL ON DATABASE db_name TO USER user1;"
hive -e "REVOKE ALL ON DATABASE db_name FROM USER user1;"
hive -e "SHOW GRANT USER user1 ON DATABASE db_name;"
# Hive配置管理
hive -e "SET -v;" # 查看所有配置
hive -e "SET hive.exec.reducers.bytes.per.reducer;" # 查看特定配置
# Hive日志管理
hive -e "SET hive.querylog.enabled=true;"
hive -e "SET hive.querylog.location=/data/hive/logs;"
# Hive备份恢复
hive -e "EXPORT TABLE table_name TO '/backup/table_name';"
hive -e "IMPORT TABLE table_name FROM '/backup/table_name';"
# Hive Metastore管理
hive -e "SHOW LOCKS;"
hive -e "UNLOCK TABLE table_name;"
2024-01-15 23:00:01,234 INFO HiveServer2 – Starting HiveServer2
2024-01-15 23:00:02,345 INFO HiveServer2 – Thrift server started on port 10000
2024-01-15 23:00:03,456 INFO HiveServer2 – HTTP server started on port 10002
2024-01-15 23:00:04,567 INFO HiveServer2 – HiveServer2 is fully operational
2024-01-15 23:00:05,678 INFO HiveMetastore – Starting Hive Metastore
2024-01-15 23:00:06,789 INFO HiveMetastore – Metastore started on port 9083
更多视频教程www.fgedu.net.cn
Part04-生产案例与实战讲解
4.1 HDFS故障处理案例
故障现象:HDFS NameNode突然不可用,集群无法提供服务
故障排查:
- 检查NameNode进程状态:jps查看NameNode进程是否存在
- 检查NameNode日志:查看NameNode日志,找出错误原因
- 检查NameNode资源:检查NameNode的CPU、内存、磁盘使用情况
- 检查网络连接:检查NameNode与其他节点的网络连接
故障处理:
- 如果是NameNode进程异常,尝试重启NameNode
- 如果是NameNode资源不足,增加NameNode资源
- 如果是NameNode磁盘故障,更换故障磁盘
- 如果是网络问题,修复网络连接
故障恢复:
# 重启NameNode
sudo -u hdfs hdfs --daemon stop namenode
sudo -u hdfs hdfs --daemon start namenode
# 检查NameNode状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
# 如果需要切换Active NameNode
hdfs haadmin -failover nn1 nn2
# 检查HDFS集群状态
hdfs dfsadmin -report
2024-01-16 00:00:01,234 INFO NameNode – Starting NameNode
2024-01-16 00:00:02,345 INFO NameNode – Namenode up at: namenode1.fgedu.net.cn/192.168.1.101:9000
2024-01-16 00:00:03,456 INFO NameNode – Registered with standby namenode: namenode2.fgedu.net.cn:9000
2024-01-16 00:00:04,567 INFO NameNode – HA transition: ACTIVE
2024-01-16 00:00:05,678 INFO NameNode – Safemode is OFF
2024-01-16 00:00:06,789 INFO NameNode – NameNode is fully operational
NameNode故障处理需要谨慎,建议在非业务高峰期进行,并做好备份。
4.2 YARN故障处理案例
故障现象:YARN ResourceManager不可用,任务无法提交
故障排查:
- 检查ResourceManager进程状态:jps查看ResourceManager进程是否存在
- 检查ResourceManager日志:查看ResourceManager日志,找出错误原因
- 检查ResourceManager资源:检查ResourceManager的CPU、内存使用情况
- 检查ZooKeeper状态:检查ZooKeeper是否正常
故障处理:
- 如果是ResourceManager进程异常,尝试重启ResourceManager
- 如果是ResourceManager资源不足,增加ResourceManager资源
- 如果是ZooKeeper问题,修复ZooKeeper
- 如果是HA切换问题,手动切换Active ResourceManager
故障恢复:
# 重启ResourceManager
sudo -u yarn yarn --daemon stop resourcemanager
sudo -u yarn yarn --daemon start resourcemanager
# 检查ResourceManager状态
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
# 如果需要切换Active ResourceManager
yarn rmadmin -transitionToActive rm1
# 检查YARN集群状态
yarn node -list
yarn application -list
2024-01-16 01:00:01,234 INFO ResourceManager – Starting ResourceManager
2024-01-16 01:00:02,345 INFO ResourceManager – Registered with ZooKeeper
2024-01-16 01:00:03,456 INFO ResourceManager – Transitioning to ACTIVE state
2024-01-16 01:00:04,567 INFO ResourceManager – ResourceManager is fully operational
2024-01-16 01:00:05,678 INFO Scheduler – Scheduler initialized
更多视频教程www.fgedu.net.cn
4.3 Hive故障处理案例
故障现象:Hive查询执行缓慢,甚至超时
故障排查:
- 检查HiveServer2状态:检查HiveServer2是否正常运行
- 检查查询执行计划:使用EXPLAIN查看查询执行计划
- 检查集群资源:检查YARN集群资源使用情况
- 检查数据分布:检查数据是否存在倾斜
故障处理:
- 优化SQL查询,减少数据扫描量
- 增加查询资源,提高并行度
- 处理数据倾斜,均匀分布数据
- 优化Hive配置,提高查询性能
故障恢复:
# 优化Hive配置
SET hive.exec.parallel=true;
SET hive.exec.parallel.thread.number=16;
SET hive.auto.convert.join=true;
SET hive.map.aggr=true;
SET hive.optimize.skewjoin=true;
# 优化SQL查询
EXPLAIN
SELECT user_id, COUNT(*) as cnt
FROM orders
WHERE order_date >= '2024-01-01'
GROUP BY user_id;
# 增加查询资源
SET mapreduce.map.memory.mb=4096;
SET mapreduce.reduce.memory.mb=8192;
SET mapreduce.job.maps=1000;
SET mapreduce.job.reduces=500;
# 处理数据倾斜
SET hive.optimize.skewjoin=true;
SET hive.skewjoin.key=100000;
SET hive.skewjoin.mapaggr.checkinterval=100000;
2024-01-16 02:00:01,234 INFO HiveServer2 – Query started
2024-01-16 02:00:02,345 INFO HiveServer2 – Query execution plan generated
2024-01-16 02:00:03,456 INFO HiveServer2 – Map tasks: 1000, Reduce tasks: 500
2024-01-16 02:05:12,678 INFO HiveServer2 – Query completed successfully
2024-01-16 02:05:13,789 INFO HiveServer2 – Query execution time: 5分11秒
风哥提示:Hive查询性能优化需要综合考虑SQL优化、配置优化、资源优化等多个方面,需要根据实际情况选择合适的优化策略。
Part05-风哥经验总结与分享
5.1 运维常见问题
运维常见问题:
- 监控不全面:监控指标覆盖不全,无法及时发现异常
- 告警设置不合理:告警阈值设置不合理,导致误报或漏报
- 备份不及时:备份不及时,导致数据丢失
- 文档不完善:运维文档不完善,导致操作不规范
- 权限管理不当:权限管理不当,导致安全问题
更多视频教程www.fgedu.net.cn
5.2 运维最佳实践
运维最佳实践:
- 建立监控体系:建立完善的监控体系,全面监控集群状态
- 完善文档:完善运维文档,规范操作流程
- 定期备份:定期备份重要数据,确保数据安全
- 权限管理:合理设置权限,确保安全
- 自动化运维:使用自动化工具,提高运维效率
5.3 自动化运维经验
自动化运维经验:
- 自动化部署:使用Ansible、Puppet等工具实现自动化部署
- 自动化监控:使用Prometheus、Grafana等工具实现自动化监控
- 自动化告警:使用Alertmanager等工具实现自动化告警
- 自动化备份:使用脚本实现自动化备份
- 自动化恢复:使用脚本实现自动化恢复
风哥提示:自动化运维可以大大提高运维效率,减少人为错误,建议根据实际情况选择合适的自动化工具。
更多视频教程www.fgedu.net.cn
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
