网站首页 > 文章精选 正文
1.1. 日志搜集
1.1.1. HiveServer日志获取
Hive调优需要看HiveServer的运行日志及GC日志。
HiveServer日志路径为:HiveServer节点的
/var/log/Bigdata/hive/hiveserver/。
文件名 | 日志内容 |
hive.log | HiveServer运行日志 |
hive-omm-gc.log.0.current | HiveServer GC日志 |
通过Manager界面也可以下载,如下:
1.1.2. MapReduce日志查看
Hive提交的MapReduce的日志中详细地记录了map和reduce任务的运行情况。
通过Yarn原生界面可以查看,如下:
1.2. 定位调优思路
第一步,分析SQL待处理的表及文件。
统计待处理的表的文件数、数据量、条数、文件格式、压缩格式,分析是否有更适合的文件存储格式、压缩格式,是否能够使用上分区或分桶,是否有大量小文件需要map前合并。如果有优化空间,则执行优化。
第二步,分析SQL的结构
是否有重复的子查询可以存到中间表,是否可以使用相关性优化器,是否出现笛卡尔积需要去除,是否可以使用Multiple Insert语句,是否使用了低性能的UDF或SerDe需要替换。如果有优化空间,则执行优化。
第三步,分析SQL的操作
是否可利用MapJoin,是否可使用SMB Join,是否需要设置map端聚合,是否需要优化count(distinct),是否全局排序可以使用局部排序代替,是否可以使用向量化优化、基于代价的优化等优化器。如果有优化空间,则执行优化。
第四步,观察SQL启动的MR运行情况
如果map运行缓慢,考虑减小Map处理的最大数据量提高并发度,考虑增大map的内存和虚拟核数;如果是reduce运行缓慢,是否有group by倾斜需要解决,是否有join倾斜需要处理,当大量重复数据做去重时减少Reduce数量,当大量匹配记录做关联时增加Reduce数量。
1.3. 常见问题处理
1.3.1. OOM(内存溢出)
1.3.1.1. 问题描述
HiveServer运行日志及MR日志报以下错误:
Container [pid=48338,containerID=container_1417574466181_3484_01_000043] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 2.0 GB of 2.1 GB virtual memory used. Killing container. Dump of the process-tree for container_1417574466181_3484_01_000043 : |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE |- 48345 48338 48338 48338 (java) 2432 61 2062110720 272981 |
1.3.1.2. 解决方案
从日志可以看出,Container物理内存不够用了,观察YARN界面该container是map还是reduce。
如果是map,则增大mapreduce.map.memory.mb的设置,如设置成6144(默认值为4096),但不能超过
yarn.scheduler.maximum-allocation-mb的值。
如果是reduce,则增大
mapreduce.reduce.memory.mb的设置,如设置成6144(默认值为4096),但不能超过
yarn.scheduler.maximum-allocation-mb的值。
猜你喜欢
- 2025-03-07 阿里云云原生一体化数仓—数据治理新能力解读
- 2025-03-07 Apache Hive分区:定义、实现方式、优劣势分析、分区管理实践
- 2025-03-07 Delta Lake在Soul的应用实践
- 2025-03-07 大数据开发工程师面试主要面试内容
- 2025-03-07 Sqoop高频面试题知识点总结
- 2025-03-07 大数据技术之Hive
- 2025-03-07 Hive最全总结,学习与面试,收藏这一篇就够了!
- 2025-03-07 Hive 迁移参考方案及测试(上)
- 2025-03-07 2021年超全超详细的最新大数据开发面试题
- 2025-03-07 【大数据】Hive 小文件治理和 HDFS 数据平衡讲解
- 最近发表
-
- 100%开源免费的低代码/可视化数据分析、数据展示平台
- Spring Boot跨域问题终极解决方案:3种方法根治CORS报错
- 永久免费内网穿透很简单,一看就明白
- Odoo 用户菜单架构解析及创建和管理实战
- 关于编码的那些事 - URL 编码(编码url是什么意思)
- 20 个让人惊叹的 JavaScript 单行代码技巧,效率瞬间提升
- 如何使用java.net.URLConnection发起和处理HTTP请求
- 崩溃!代码总掉链子?6 个 JavaScript 技巧助你稳操胜券
- 抓狂!代码总出错?5 个 JavaScript 技巧助你逆风翻盘
- 前端性能拉胯?这 8 个 JavaScript 技巧让你的代码飞起来!
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)