HiveServer2 常见异常和处理方法

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

1. Connection timed out

java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default: java.net.ConnectException: Connection timed out (Connection timed out)
	at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:256)
	at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at com.baidu.hive.jdbc.MultiThreadStatementTest.singleConnectionForAllStatementsExecute(MultiThreadStatementTest.java:88)
	at com.baidu.hive.jdbc.MultiThreadStatementTest.execute(MultiThreadStatementTest.java:73)
	at com.baidu.hive.jdbc.MultiThreadStatementTest.lambda$parallelExecute$0(MultiThreadStatementTest.java:55)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

可能原因:

  1. HiveServer 连接数达到上限。因为每个 jdbc,HiveServer 需要一个线程。
<property>
   <name>hive.server2.thrift.max.worker.threads</name>
   <value>500</value>
   <description>Maximum number of Thrift worker threads</description>
 </property>
  1. HiveServer OOM 不能及时处理客户请求
  2. Hive Metastore 没有响应或者后台数据库卡住。

2. Connection reset by peer

Caused by: java.net.SocketException: Connection reset by peer (connect failed)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.thrift.transport.TSocket.open(TSocket.java:221)
	... 14 more

HiveServer2 Server socket 的 backlog 默认是 0,在centos 系统中查看 HiveServer2 的 backlog 是50。当Socket accept 的速度变慢,操作系统接收的新的请求满的时候。就会丢掉新的请求,报这个错误。
查看当前HiveServer 的 backlog 命令如下:

ss -antp > antp

3. Running, pool size = 100, active threads = 100, queued tasks = 100, completed tasks = xxx

异常信息如下

org.apache.hive.service.cli.HiveSQLException: java.lang.RuntimeException: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@6ef9d564 rejected from java.util.concurrent.ThreadPoolExecutor@6e2c02d2[Running, pool size = 100, active threads = 100, queued tasks = 100, completed tasks = 234]
	at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:300)
	at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:286)
	at org.apache.hive.jdbc.HiveStatement.runAsyncOnServer(HiveStatement.java:324)
	at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:265)
	at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:497)
	at com.baidu.hive.jdbc.MultiThreadStatementTest.execute(MultiThreadStatementTest.java:82)
	at com.baidu.hive.jdbc.MultiThreadStatementTest.lambda$parallelExecute$0(MultiThreadStatementTest.java:56)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

原因是队列满了,调整以下2个参数可以解决。文章来源地址https://www.toymoban.com/news/detail-772034.html

<property>
   <name>hive.server2.async.exec.threads</name>
   <value>100</value>
   <description>Number of threads in the async thread pool for HiveServer2</description>
 </property>
 <property>
   <name>hive.server2.async.exec.wait.queue.size</name>
   <value>100</value>
   <description>
     Size of the wait queue for async thread pool in HiveServer2.
     After hitting this limit, the async thread pool will reject new requests.
   </description>
 </property>

到了这里,关于HiveServer2 常见异常和处理方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • hiveserver2经常挂断的原因

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

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

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

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

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

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

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

    2024年02月08日
    浏览(35)
  • hive 配置metastore hiveserver2服务开启

    hive-site.xml: hive-site.xml: hive-site.xml: 重启MetaStore服务: 启动hive服务: 启动后需要等待一段时间,jdbc才能连接上hive服务 使用beeline客户端验证是否可以连接:

    2024年02月03日
    浏览(37)
  • 【大数据之Hive】五、Hiveserver2服务部署

      hiveserver2提供JDBC/ODBC接口,使得用户可以远程访问Hive数据,即作为客户端的代理与Hadoop集群进行交互。   hiveserver2部署时需要部署到一个能访问集群的节点上,保证能够直接往Hadoop上提交数据。   用户在客户端提交SQL语句时,由hiveserver请求HDFS或者提交计算任务到

    2024年02月13日
    浏览(38)
  • 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日
    浏览(38)
  • (十七)大数据实战——Hive的hiveserver2服务安装部署

    HiveServer2 是 Apache Hive 的一个服务器端组件,用于支持客户端与 Hive 进行交互和执行查询。HiveServer2服务的作用是提供jdbc/odbc接口,为用户提供远程访问Hive数据的功能。HiveServer2 允许多个客户端同时连接并与 Hive 交互。这些客户端可以通过 JDBC、ODBC 或 Thrift API 连接到 HiveServe

    2024年01月17日
    浏览(42)
  • 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日
    浏览(28)
  • 【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日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包