HiveServer2 Service Crashes(hiveServer2 服务崩溃)

这篇具有很好参考价值的文章主要介绍了HiveServer2 Service Crashes(hiveServer2 服务崩溃)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Troubleshooting Hive | 5.9.x | Cloudera Documentation

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

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

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

4.hs2实例数太少

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

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

Symptoms Displayed When HiveServer2 Heap Memory is Full

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

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

3.查询提交重复失败

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

原因:HiveServer2 Service Crashes

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

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2 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"
    

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

问题2:HiveServer2 General Performance Problems or Connections Refused

 HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

这里没啥说的,就是内存不够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配置

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

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

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

High number of concurrent queries

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

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

Queries that access a large number of table partitions:

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

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

如何解决呢?

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

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

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

HiveServer2 Service Crashes(hiveServer2 服务崩溃),cdp,hiveserver2

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

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

Component Java Heap CPU Disk
HiveServer 2 Single Connection 4 GB Minimum 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 connections 4-6 GB
11-20 connections 6-12 GB
21-40 connections 12-16 GB
41 to 80 connections 16-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 Metastore Single Connection 4 GB Minimum 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 connections 4-10 GB
11-20 connections 10-12 GB
21-40 connections 12-16 GB
41 to 80 connections 16-24 GB

Set this value using the Java Heap Size of Hive Metastore Server in Bytes Hive configuration property.文章来源地址https://www.toymoban.com/news/detail-734447.html

Beeline CLI Minimum: 2 GB N/A N/A

到了这里,关于HiveServer2 Service Crashes(hiveServer2 服务崩溃)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hiveserver2经常挂断的原因

    HiveServer2 经常挂断可能有多种原因,以下是一些可能导致挂断的常见原因: 资源不足:HiveServer2 需要足够的内存和 CPU 资源来处理查询请求。如果资源不足,可能会导致 HiveServer2 挂断。请确保在配置 HiveServer2 实例时分配了足够的资源。 配置问题:不正确的配置可能导致 Hi

    2024年02月06日
    浏览(27)
  • hive-无法启动hiveserver2

    启动hiveserver2没有反应,客户端也无法连接( beeline -u jdbc:hive2://node01:10000 -n root) 查看hive的Log日志,发现如下报错 在hive的hive_site.xml中添加如下代码

    2024年02月12日
    浏览(25)
  • HiveServer2 常见异常和处理方法

    可能原因: HiveServer 连接数达到上限。因为每个 jdbc,HiveServer 需要一个线程。 HiveServer OOM 不能及时处理客户请求 Hive Metastore 没有响应或者后台数据库卡住。 HiveServer2 Server socket 的 backlog 默认是 0,在centos 系统中查看 HiveServer2 的 backlog 是50。当Socket accept 的速度变慢,操作系

    2024年02月03日
    浏览(33)
  • hive 入门 配置hiveserver2 (三)

    Hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户 提供远程访问Hive数据的功能 ,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2。 在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问

    2024年02月11日
    浏览(25)
  • 合并文件解决HiveServer2内存溢出方案

    • 表文件数量为6522102 • 分区为string 类型的time字段,分了2001个区。 •可以看到Jvm内存使用明显增大,Hiveserver2内存溢出,进程挂掉了;查看HiveServer2状态标红。 •详细日志如下 • 将每个分区里的若干个小文件合并成一个文件,最终文件个数为分区数。合并流程如下: 2.1.

    2024年02月11日
    浏览(28)
  • hue实现对hiveserver2 的负载均衡

    如果你使用的是CDH集群那就很是方便的 在Cloudera Manager中,进入HDFS Service 进入Instances标签页面,点击Add Role Instances按钮,如下图所示 点击Continue按钮,如下图所示 返回Instances页面,选择HttpFS角色,并点击Start启动服务,如下图所示 HttpFS服务启动后,点击进入Hue Service Configur

    2024年02月08日
    浏览(26)
  • spark的jdbc接口,类似于hiveserver2

    https://spark.apache.org/docs/2.4.0/sql-distributed-sql-engine.html#running-the-thrift-jdbcodbc-server Spark SQL可以作为一个分布式查询引擎,通过其JDBC/ODBC或命令行接口进行操作。通过JDBC/ODBC接口,用户可以使用常见的数据库工具或BI工具来连接和查询Spark SQL,这使得Spark SQL可以与现有的数据分析工

    2024年01月20日
    浏览(28)
  • 常见的bug---3、没有启动metaStore和Hiveserver2服务导致在本机上的IDEA无法连接上虚拟机上的HIve

    在IEDA连接虚拟机上的Hive报的 Exception in thread “main” org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:11

    2024年02月15日
    浏览(36)
  • Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!

    前言 使用的集群环境为: hive 3.1.2 spark 3.0.2 dayofweek 函数官方说明 dayofweek(date) - Returns the day of the week for date/timestamp (1 = Sunday, 2 = Monday, …, 7 = Saturday). 根据所给日期,返回该日期对应的周几数字,如: 周日 —— 1 周一 —— 2 周二 —— 3 … 周六 —— 7 BUG 重现 当前我有一张订

    2024年02月11日
    浏览(19)
  • 【Hadoop】-Hive客户端:HiveServer2 & Beeline 与DataGrip & DBeaver[14]

    在启动Hive的时候,除了必备的Metastore服务外,我们前面提过有2种方式使用Hive: 方式1: bin/hive 即Hive的Shell客户端,可以直接写SQL 方式2: bin/hive --service hiveserver2 后台执行脚本: nohup bin/hive --service hiveserver2 logs/hiveserver2.log 21 bin/hive --service metastore ,启动的是元数据管理服务

    2024年04月28日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包