HiveServer2 Service Crashes(hiveServer2 服务崩溃)

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.rhkb.cn/news/151604.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【好玩】如何在github主页放一条贪吃蛇

前言 🍊缘由 github放小蛇,就问你烧不烧 起因看到大佬github上有一条贪吃蛇扭来扭去,觉得好玩,遂给大家分享一下本狗的玩蛇历程 🥝成果初展 贪吃蛇 🎯主要目标 实现3大重点 1. github设置主页 2. git…

多功能频率计周期/脉宽/占空比/频率测量verilog,视频/代码

名称:多功能频率计周期、脉宽、占空比、频率测量verilog 软件:Quartus 语言:Verilog 代码功能: 多功能频率计,可测量信号的周期、脉冲宽度、占空比、频率,语言为verilog,quartus软件设计仿真…

【C++设计模式之组合模式:结构型】分析及示例

简介 组合模式是一种结构型设计模式,它能够将对象组合成树形结构以表示“整体-部分”的层次结构,并且能够使用相同的方式处理单个对象和组合对象。组合模式使得客户端可以一致地处理单个对象和组合对象,无需关心具体的对象类型。 组合模式将对…

3D模型格式转换工具HOOPS Exchange助力Halocline开发VR

挑战: 支持客户群使用各种CAD系统和CAD文件格式。快速准确的加载可视化硬件数据。提供访问模型详细信息,同时确保高帧频性能。 结果: 确保支持标准文件格式和来自领先工程软件包的CAD数据。 通过查看简化模型或根据需要访问高层次的细节&am…

文本自动输入/删除的加载动画效果

效果展示 CSS 知识点 绕矩形四周跑的光柱动画实现animation 属性的 steps 属性值运用 页面基础结构实现 <div class"loader"><!-- span 标签是围绕矩形四周的光柱 --><span></span><span></span><span></span>&l…

Javascript中的模块化详解

1.什么是模块化、模块化开发&#xff1f; 事实上模块化开发最终的目的是将程序划分成一个个小的结构&#xff1b; 这个结构中编写属于自己的逻辑代码&#xff0c;有自己的作用域&#xff0c;不会影响到其他的结构&#xff1b; 这个结构可以将自己希望暴露的变量、函数、对象等…

自动驾驶技术的基础知识

自动驾驶技术是现代汽车工业中的一项革命性发展&#xff0c;它正在改变着我们对交通和出行的理解。本文将介绍自动驾驶技术的基础知识&#xff0c;包括其概念、历史发展、分类以及关键技术要素。 1. 自动驾驶概念 自动驾驶是一种先进的交通技术&#xff0c;它允许汽车在没有人…

ADuM1250 ADuM1251 模块 I2C IIC总线2500V电磁隔离 接口保护

功能说明&#xff1a; 1&#xff0c;2500V电磁隔离&#xff0c;2通道双向I2C&#xff1b; 2&#xff0c;支持电压在3到5.5V&#xff0c;最大时钟频率可达1000KHz&#xff1b; 3&#xff0c;将该隔离模块接入总线&#xff0c;可以保护主MCU引脚&#xff0c;降低I2C总线上的干…

周总结【java项目】

项目进度&#xff1a; 学习了JavaFX&#xff0c;下载了sceneBuilder辅助工具构建窗口&#xff08;目前建立了登陆&#xff0c;注册&#xff0c;忘记密码的界面&#xff09;&#xff0c;然后是学习了MySQL的连接&#xff0c;现在的项目是刚连上数据库&#xff1b; 下一步&…

Tasmota系统之外设配置

Tasmota系统之外设配置 &#x1f388;相关篇《ESP32/ESP8266在线刷写Sonoff Tasmota固件以及配置简要》&#x1f516;这里以ESP32配置DS18B20温度传感器和dht11温湿度传感器为例。 ✨如果想接特定型号的显示屏幕&#xff0c;需要下载指定的固件&#xff0c;目前官方所提供的固件…

计算机毕设 招聘网站爬取与大数据分析可视化 - python 分析 可视化 flask

文章目录 0 前言1 课题背景2 实现效果3 Flask框架4 Echarts5 爬虫6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自…

web漏洞-SSRF服务端请求伪造

目录 SSRF服务端请求伪造一、定义二、漏洞成因三、漏洞探测四、漏洞利用五、复现pikachu靶场SSRF实验&#xff0c;并且探测靶机端口开放情况。六、利用SSRF探测内网环境并获取shell七、绕过技巧八、SSRF防御方案九、总结 SSRF服务端请求伪造 一、定义 SSRF&#xff08;Server-…

vue实现拖拽排序

在业务中列表拖拽排序是比较常见的需求&#xff0c;常见的JS拖拽库有Sortable.js&#xff0c;Vue.Draggable等&#xff0c;大多数同学遇到这种需求也是更多的求助于这些JS库&#xff0c;其实&#xff0c;使用HTML原生的拖放事件来实现拖拽排序并不复杂&#xff0c;结合Vue的tra…

AK F.*ing leetcode 流浪计划之最近公共祖先(倍增算法)

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 本期话题&#xff1a;在树上查找2个结点的最近公共祖先 问题提出 最近公共祖先定义 最近公共祖先简称 LCA&#xff08;Lowest Common Ancestor&#xff09;。两个节…

机器学习算法分类

学习视频黑马程序员 监督学习 无监督学习 半监督学习 强化学习

Windows11 安全中心页面不可用问题(无法打开病毒和威胁防护)解决方案汇总(图文介绍版)

本文目录 Windows版本与报错信息问题详细图片&#xff1a; 解决方案:方案一、管理员权限&#xff08;若你确定你的电脑只有你一个账户&#xff0c;则此教程无效&#xff0c;若你也不清楚&#xff0c;请阅读后再做打算&#xff09;方案二、修改注册表(常用方案)方案三、进入开发…

【Python从入门到进阶】38、selenium关于Chrome handless的基本使用

接上篇《37、selenium关于phantomjs的基本使用》 上一篇我们介绍了有关phantomjs的相关知识&#xff0c;但由于selenium已经放弃PhantomJS&#xff0c;本篇我们来学习Chrome的无头版浏览器Chrome Handless的使用。 一、Chrome Headless简介 Chrome Headless是一个无界面的浏览…

mysql面试题22:SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义 SQL优化的一般步骤如下: 分析和理解问题:首先,要确保对问…

CDN体系架构及部署方案探索

如今是科技技术飞速发展的时代&#xff0c;特别是互联网技术在各个方面都得到了质的提升。对于CDN技术来说&#xff0c;该项技术的基本功能、体系构架以及运营部署等方面都取得了长足的发展&#xff0c;不仅技术日新月异&#xff0c;而且整个体系日趋成熟&#xff0c;并且不断朝…

用全栈智能,联想如何“零故障”支持亚运会?

作者 | 曾响铃 文 | 响铃说 1912年&#xff0c;电子计时器首次应用&#xff0c;1936年&#xff0c;体育赛事首次在电视上播出&#xff0c;1972年计算机首次进入人类赛事&#xff0c;1996年互联网技术大范围应用&#xff0c;随后3G网络、3D技术、VR技术……以奥运会为代表&…