HiveServer2 Service Crashes(hiveServer2 服务崩溃)

news2024/11/19 5:53:10

Troubleshooting Hive | 5.9.x | Cloudera Documentation

原因:别人用的都好好的,我的集群为什么会崩溃?

1.hive分区表太多(这里没有说具体数量。)

2.并发连接太多,我记的以前默认是200个连接 

3.复杂的hive查询访问表的的分区

4.hs2实例数太少

如果存在这些情况中的任何一种,Hive可能运行缓慢,或者可能崩溃,因为整个HS2堆内存已满。

现象:如果堆内存满了,hive集群一般会有什么表现呢?

Symptoms Displayed When HiveServer2 Heap Memory is Full

1.hs2服务直接挂掉,或者你开启新会话失败。

2.hs2服务看起来是好的,但是你连接被拒绝

3.查询提交重复失败

4.查询一直在提交,查询时间长

原因:HiveServer2 Service Crashes

这里太长了,我直接用我自己做例子告诉大家,怎么看hs2服务是否崩溃

1.打开cm主页,选择hive(我这里是hive on tez)->点击实例->点击hiveServer2

2.点击完hiveServer2后->点击日志文件->点击stdout

官网与我的页面有点差异,自行寻找 

 3.打开stdout.log后查看是否有以下日志

  1. # java.lang.OutOfMemoryError: Java heap space
    # -XX:OnOutOfMemoryError="/usr/lib64/cmf/service/common/killparent.sh"
    # Executing /bin/sh -c "/usr/lib64/cmf/service/common/killparent.sh"
    

问题2:HiveServer2 General Performance Problems or Connections Refused

 

这里没啥说的,就是内存不够jvm需要暂停下去分配资源 

最佳方案:HiveServer2 Performance Best Practices

官网说了一大堆废话,总结下来

1.修改heap的大小

2.减少查询的分区表数量

3.增加hs2的实例数

4.增加机器的内存。因为你增加hive的heap大小,可能这台机器的内存被其他服务占用

如何修改heap大小

1.cdh5.7以上默认是4GB 

   如何修改Home > Hive > Configuration > HiveServer2 > Resource Management. 然后保存+重启

hive配置

hive on tez的配置(这个才是真正的) 

注意这里有意思的是我们发现hs2有两个配置一个4g一个256M,其中4g的是cdp-node05,256M的是cdp-node06

发现确实如此一个给了4g内存 一个给了256M。。这。。无言以对。

如果HS2已经配置为使用4GB或更大的堆大小运行,并且仍然存在性能问题,那么工作负载特性可能会导致内存压力。增加堆大小以减少HS2上的内存压力。Cloudera不建议每个实例超过16 GB,因为垃圾收集暂停时间很长。请参阅识别增加内存压力的工作负载特征,了解优化查询工作负载以降低HS2内存需求的提示。Cloudera建议将HS2拆分为多个实例,并在开始为HS2分配超过16GB的资源后进行负载平衡。

这里说的意思是4g默认,逐渐增大,如果16G不满足,就开起多个hiveserver2,负载均衡

High number of concurrent queries

大量并发查询会增加连接数。每个查询连接都会消耗查询计划、访问的表分区数和部分结果集的资源。 

建议是每个hs2 instance 支持40个连接,如果你有400个的并发,建议增加hs2 instance的数据为10,同时检查你的调度任务(类似于 比如所有任务没必要都是每天0点开始,0:10分不行吗?)

Many abandoned Hue sessions

用户在Hue中打开许多浏览器选项卡会导致多个会话和连接,没有及时关闭

解决办法

hive.server2.idle.operation.timeout=7200000  默认是21600000=6h

hive.server2.idle.session.timeout=21600000 默认43200000=12h

修改Home > Hive > Configuration > HiveServer2 > Advanced

Queries that access a large number of table partitions:

比如 select * from partition_table limit 10  这句查询也会加载所有表。

通过explain dependency select * from partition_table limit 10 -- 可以看到加载了所有分区。

如何解决呢?

加上分区的过滤条件例如 select * from partition_table where partition_column='a' 

设置 hive.metastore.limit.partition.request 好像新版本变成 hive.limit.query.max.table.partition

我的hive版本是3.1.3这两个参数都没用

最后一点说了,分区一般几千个就行了,你分几万个是以秒分区的?不分区效率太低,几千万上亿的表不分区就要思考自己的问题了。

Wide tables or columns:

内存需求与列的数量和单个列的大小成正比。通常,一个宽表包含1000多列。如果列的数量很大,宽表或列可能会导致内存压力。对于Parquet文件尤其如此,因为行组的所有数据都必须在内存中才能写入磁盘。尽可能避免使用宽表。

解决办法:不要select *

High query complexity

复杂的查询通常有大量的联接,通常每个查询超过10个联接。随着查询中联接数量的增加,HS2堆大小要求显著增加。

解决办法:1.对于每个join的表的分区都尽量过滤

2.将复杂的join拆分为小点的join,就是不要一下子加载10个表,比如分3次加载10个表

create  temporay table abc as select xx from a join b join c 

create  temporay table def as select xx from d join e join f

select abc join def

Improperly written user-defined functions (UDFs)

编写不当的udf函数也会导致hs2压力过大

解决办法:了解udf的编写过程,使用前测试

最后附上视频里出现的hive配置建议 网址,视频里的不可以

Configuring HiveServer2 for CDH | 6.3.x | Cloudera Documentation

ComponentJava HeapCPUDisk
HiveServer 2Single Connection4 GBMinimum 4 dedicated cores

Minimum 1 disk

This disk is required for the following:

  • HiveServer2 log files
  • stdout and stderr output files
  • Configuration files
  • Operation logs stored in the operation_logs_dir directory, which is configurable
  • Any temporary files that might be created by local map tasks under the /tmp directory
2-10 connections4-6 GB
11-20 connections6-12 GB
21-40 connections12-16 GB
41 to 80 connections16-24 GB

Cloudera recommends splitting HiveServer2 into multiple instances and load balancing them once you start allocating more than 16 GB to HiveServer2. The objective is to adjust the size to reduce the impact of Java garbage collection on active processing by the service.

Set this value using the Java Heap Size of HiveServer2 in Bytes Hive configuration property.

Hive MetastoreSingle Connection4 GBMinimum 4 dedicated cores

Minimum 1 disk

This disk is required so that the Hive metastore can store the following artifacts:

  • Logs
  • Configuration files
  • Backend database that is used to store metadata if the database server is also hosted on the same node
2-10 connections4-10 GB
11-20 connections10-12 GB
21-40 connections12-16 GB
41 to 80 connections16-24 GB

Set this value using the Java Heap Size of Hive Metastore Server in Bytes Hive configuration property.

Beeline CLIMinimum: 2 GBN/AN/A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue面试题一】、说说你对 Vue 的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗&#xff…

Apple developer证书、标识符和描述文件

Apple developer证书、标识符和描述文件 一、准备1,开发者账号2,CSR文件3,DeviceID 二、过程1,证书(Certificates)2、标识符(Identifiers)3、描述文件(Profiles&#xff…

C语言之动态内存管理篇(1)

目录 为什么存在动态内存分配 动态内存函数的介绍 malloc free calloc realloc 常见的动态内存错误 今天收假了,抓紧时间写几篇博客。我又来赶进度了。今天我们来讲解动态内存管理。🆗🆗 为什么存在动态内存分配 假设我们去实现一个…

Iris for Mac:轻松实现高质量录屏的最佳选择

随着数字化时代的到来,录屏软件已经成为了许多人必备的工具之一。无论是教育、工作还是娱乐,录屏软件都可以帮助我们将重要的操作过程或内容记录下来,并与他人分享。而对于Mac用户来说,一款简单易用且功能强大的录屏软件尤为重要。…

划片机:半导体生产的必备设备

划片机是半导体加工行业中的重要设备,主要用于将晶圆切割成晶片颗粒,为后道工序粘片做好准备。随着国内半导体生产能力的提高,划片机市场的需求也在逐渐增加。 在市场定位上,划片机可以应用于半导体芯片和其他微电子器件的制造过程…

015 Spring Boot网上商城(仿天猫)

一、系统介绍 需求设计主要参考天猫商城的购物流程: 用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一&#xff0…

为什么公司里月薪八千的PLC工程师经常离职?

今日话题,为什么公司里月薪八千的PLC工程师经常离职?这个问题涉及到工程师的个人偏好和工作性质的不同。许多工程师更喜欢在一个稳定的地方工作,而不是经常出差。然而,也有一些工程师喜欢出差,他们更愿意在不同的现场工…

PMP认证,对项目经理有什么用?

PMP是什么?学什么? PMP是由美国项目管理协会(PMI)在全球范围内推出的针对项目经理的资格认证体系,严格评估项目管理人员知识技能是否具有高品质的资格认证考试,其目的是为了给项目管理人员提供统一的行业标…

【Python_PySide2学习笔记(十七)】QPlainTextEdit末尾增加文本时设置文本颜色

QPlainTextEdit末尾增加文本时设置文本颜色 前言正文1、QPlainTextEdit末尾增加文本时设置文本颜色方法2、f_changeQPlainTextEditColor()方法调用前言 此篇文章中介绍PySide2中 QPlainTextEdit 多行文本框在末尾增加文本的同时设置文本颜色的方法,而对插入的文本进行区分,有…

设计模式13、模版方法模式 Template Method

解释说明:模版方法模式(Template Method Pattern)定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 抽象类(AbstractClass)&…

二分查找 红蓝染色法 【基础算法精讲 04】

视频链接 : 二分查找 红蓝染色法_哔哩哔哩_bilibili 在排序数组中查找元素的第一个和最后一个位置 链接 : 在排序数组中查找元素的第一个和最后一个位置 思想 : 暴力 : 在lc上,直接暴力枚举左端点和右端点也是能够通过的! 二分 : 题目要求在O(log n)的时…

ToBeWritten之威胁狩猎环境应用

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

放弃36年的鞋服业务转而“卖粮”,贵人鸟胜算几何?

正处“中年”的运动鞋服老品牌贵人鸟,却开始了一场大转型。 近日,贵人鸟发布了优化调整公司经营业务的公告。公告提到,公司将逐步退出运动鞋服业务,聚焦粮食贸易。 回顾来看,贵人鸟曾在运动鞋服领域颇受市场认可。据了…

千兆光模块和万兆光模块已经过时了吗?

千兆和万兆光模块在过去很长一段时间里是网络交换机和路由器的核心所在,它们基于光纤传输技术,具有高速、稳定、效率高的特点。随着数字时代的来临,网络端也催生了更大带宽需求,这无疑对光模块的性能提出了更高的要求。我们不得不…

vue3富文本编辑器的二次封装开发-Tinymce

欢迎点击领取 -《前端面试题进阶指南》:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 简介 1、安装:pnpm add tinymce / pnpm add tinymce/tinymce-vue > Vue3 tinymce tinymce/tinymce-vue 2、功能实现图片上传…

分布式锁:5种方案解决商品超卖的方案

一 分布式锁 1.1 分布式锁的作用 在多线程高并发场景下,为了保证资源的线程安全问题,jdk为我们提供了synchronized关键字和ReentrantLock可重入锁,但是它们只能保证一个工程内的线程安全。在分布式集群、微服务、云原生横行的当下&#xff…

w10系统 如何使用 C++、cmake、opencv、

w10系统的C环境配置 1.安装 vscode编辑器 首先安装:VScode 安装后开始安装插件: C 插件 2.配置w10系统的C环境 使用编译器MinGW 官方地址:https://www.mingw-w64.org/ 下载地址:https://sourceforge.net/projects/mingw-w64/f…

AI产品经理-能力模型

一、概况 AI产品经理/助理(需求工程师):大多数入门的AI产品经理应该都在这里,顾名思义,就是在整体产品规划中帮助大PD实现部分产品功能的助理或者需求工程师,需要具备比较强的AI知识框架与理解能力以保障各…

Openlayers 教程 - 地图以及图层数据导出(打印)图片

Openlayers 教程 - 地图以及图层数据导出(打印)图片 地图导出核心代码完整代码:在线示例 本文包括地图导出核心代码、完整代码以及在线示例。 地图导出核心代码 这里放上 ES 封装的核心代码,创建多边形或者其他几何对象&#xff…

做小说推文和短剧推广,找数据好的授权平台

小说推文和短剧推广很多平台吃单怎么办?可以试试”巨量推文“,一个不吃单的平台 众所周知 小说推文和短剧推广很多平台会吃单,比如你实际官方数据是10个订单,很多平台只给你5个,这样你损失可能就是一半的利润&#xf…