【问题标题】:Hive: Read timeout exceptionHive:读取超时异常
【发布时间】:2017-09-28 16:25:59
【问题描述】:

问题是当我尝试使用我的应用程序从 hive 查询 smth 时,例如 analyze table table_entity compute statistics 或例如select count(*) from table_entity 有时我会遇到这样的异常:java.net.SocketTimeoutException: Read timed out

但是,例如当我查询show tablesshow tblproperties table_entity 时,我没有得到这样的异常。

有人遇到过这个问题吗?

提前谢谢你。

【问题讨论】:

  • 尝试增加集群的 JVM MAX Heap 大小
  • 你可以去这个链接stackoverflow.com/questions/6452765/…
  • @AnkurKumar 我曾尝试以这种方式在我的 cloudera 集群上更改它export CMF_JAVA_OPTS="-Xms512m -Xmx3G -Xmx3G -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp" 但这没有帮助
  • @AnkurSingh 我知道这个问题发布已经有一段时间了,但你能解决这个问题吗?我正和同事一起遇到这个问题,网上没有任何帮助。
  • 请查看我的答案,这肯定会有所帮助!

标签: scala hadoop hive


【解决方案1】:

我知道这有点晚了,但我遇到了同样的问题,我们无法放下桌子,我们向 Cloudera 提出了一个案例,以下是他们提供的建议:

在调查日志和我们观察到的消息堆栈后 在执行表“tableName”的 DROP 查询期间, 由于 HiveServer2 中的“读取超时”,查询失败 HiveMetastore。这意味着表的删除操作无法 在元数据级别完成。 (一般来说——DROP操作 从 HMS 中删除表的元数据详细信息)我们怀疑 该表的元数据不是最新的,可能有更多 可能导致超时的数据。请你执行 请按照以下步骤告诉我们您的反馈?

  1. 登录 Beeline-Hive。

  2. 更新 Hive Metastore 中的分区级元数据: MSCK REPAIR TABLE db.table_name DROP PARTITIONS;

  3. 计算表的统计信息: ANALYZE TABLE db.tableName partition(col1, col2) 计算统计 noscan;

  4. 首先使用查询删除表的分区: ALTER TABLE db.tableName DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...] 请根据表的分区相应地替换上述命令中的分区值。

  5. 增加 Hive Metastore 客户端套接字超时。 设置 hive.metastore.client.socket.timeout=1500。 这将只为此会话增加套接字超时。因此,在同一会话中运行下一步 #6。

  6. 删除表tableName; DROP TABLE db.tableName;

虽然这里的问题是关于分析表问题,但这个答案旨在涵盖与读取超时错误相关的所有其他问题。

我已经展示了我的场景(drop 语句),但是这些步骤肯定会帮助解决导致读取超时异常的各种查询。

干杯!

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多