### Hive监控巡检优化知识点详解
#### 一、Hive监控系统
**1.1 Yarn监控任务**
在Hadoop生态系统中,YARN (Yet Another Resource Negotiator) 是一个资源管理器,它负责管理和调度集群上的计算资源。通过Yarn监控任务,可以实时了解Hive任务的执行状态和资源使用情况。
- **跑hive任务检查应用id是否正常**
- 在YARN中提交的每一个Hive任务都会有一个唯一的应用ID,这个ID可以帮助我们追踪和管理任务的生命周期。
- 可以通过`yarn application -list`命令来查看所有正在运行的任务列表,并从中找到Hive任务的应用ID,以此来检查任务的状态。
- **Cdh集群-yarn-resourcemanager-web-ui**
- Cloudera Data Hub(CDH)提供了一个Web UI接口,可以通过浏览器访问ResourceManager,查看整个集群的任务状态、资源使用情况等。
- **URL**: `http://<ResourceManager IP>:8088`
- 通过该界面,不仅可以查看任务状态,还可以深入了解各个节点的资源分配情况,有助于问题定位和性能优化。
**1.2 查看hiveserver2运行状态**
- **运行状态是否有爆红异常**
- 检查HiveServer2的运行状态,确保没有异常错误发生。
- 可以通过命令行工具如`hive --service hiveserver2`启动时的日志来查看异常信息。
- **Jvm堆栈内存是否有激增**
- 监控HiveServer2的JVM内存使用情况,防止因内存不足导致的服务不稳定或中断。
- 使用`jmap`、`jstat`等工具来监控JVM内存。
- **角色cpu使用率使用有激增或者异常**
- 定期检查HiveServer2进程的CPU使用率,确保服务器资源得到合理利用。
- 使用`top`或`ps`命令来监控进程CPU使用情况。
#### 二、自建监控系统
随着业务规模的扩大,简单的命令行工具已经无法满足监控需求。此时,自建一套监控系统变得尤为重要。
- **实现方式**
- 可以基于开源项目如HiveFalcon来构建。
- **HiveFalcon功能**:
- 监控Hadoop集群中被提交的任务及运行状态。
- 查看YARN中的任务详情,包括任务ID、提交者、任务类型、完成状态等信息。
- 编写和运行Hive SQL,查看SQL运行详情。
- 查看Hive仓库中存在的表及其表结构等信息。
- **GitHub项目**:
- [HiveCube](https://github.com/smartloli/hive-cube)
- **支持功能**:
- HiveClients:监控Hive客户端的连接状态和活动。
- HiveTables:显示Hive中的所有表及其元数据。
- HadoopDataNodes:监控Hadoop数据节点的状态。
- YARNTasks:跟踪YARN中运行的所有任务。
- HiveClientsGraph:可视化Hive客户端的活动图。
#### 三、Hive巡检
定期进行Hive巡检是保障Hive稳定运行的重要手段之一。
- **查看CDH集群-hive-事件**
- 检查Cloudera Manager中Hive服务的事件日志,确保没有异常事件发生。
- **查看CDH集群-hive-hive2实例-角色日志**
- 通过Cloudera Manager的Web界面查看HiveServer2的具体角色日志,以便于发现问题。
- **Hive常用巡检语句**
- **模糊搜索表**:`show tables like '*name*'` ——搜索名称中包含特定字符串的所有表。
- **查看表结构**:`desc table_name` ——查看表的基本信息;`desc formatted table_name` ——查看表的详细元数据。
- **根据分区查询数据**:`select table_column from table_name where partition_name = '2020-05-25'` ——查询指定分区的数据。
- **查看分区信息**:`show partitions table_name` ——查看表的所有分区信息。
#### 四、Hive优化
为了提高Hive查询性能和资源利用率,合理的优化措施必不可少。
- **1. Hive优化参数**
- **减小map数**:通过调整`hive.exec.reducers.bytes.per.reducer`等参数控制map输出大小。
- **减少job数**:设置`hive.merge.mapfiles`和`hive.merge.mapredfiles`为`true`,可以合并小文件,减少map/reduce job的数量。
- **CDH-hive优化参数**:参考Cloudera提供的调优文档,针对不同场景调整参数配置。
通过以上对Hive监控、巡检和优化的知识点介绍,可以更好地管理和维护Hive系统,提升大数据处理效率和稳定性。