【问题标题】:"Too many fetch-failures" while using Hive使用 Hive 时出现“太多获取失败”
【发布时间】:2014-06-12 09:44:58
【问题描述】:

我正在对 3 个节点的 hadoop 集群运行配置单元查询。我收到一个错误,上面写着“获取失败太多”。我的蜂巢查询是:

  insert overwrite table tablename1 partition(namep)
  select id,name,substring(name,5,2) as namep from tablename2;

这就是我试图运行的查询。我要做的就是将数据从 tablename2 传输到 tablename1。任何帮助表示赞赏。

【问题讨论】:

    标签: hadoop mapreduce hive hiveql


    【解决方案1】:

    这可能是由各种 hadoop 配置问题引起的。这里有一对特别要寻找的:

    • DNS 问题:检查您的/etc/hosts
    • reducer 的映射器端没有足够的 http 线程

    一些建议的修复(来自 Cloudera 故障排除)

    • 设置mapred.reduce.slowstart.completed.maps = 0.80
    • tasktracker.http.threads = 80
    • mapred.reduce.parallel.copies = sqrt (node count) but in any case >= 10

    这里是故障排除链接以获取更多详细信息

    http://www.slideshare.net/cloudera/hadoop-troubleshooting-101-kate-ting-cloudera

    2020 年更新 事情发生了很大变化,AWS 主要占据主导地位。这是一些故障排除

    https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot-error-resource-1.html

    获取失败次数过多 PDF格式 点燃 步骤或任务尝试日志中存在“太多获取失败”或“读取任务输出错误”错误消息表明正在运行的任务依赖于另一个任务的输出。这通常发生在reduce任务排队执行并且需要一个或多个map任务的输出而输出尚不可用时。

    输出可能不可用的原因有多种:

    前提任务仍在处理中。这通常是地图任务。

    如果数据位于不同的实例上,则可能由于网络连接不佳而导致数据不可用。

    如果使用 HDFS 检索输出,则 HDFS 可能存在问题。

    此错误的最常见原因是上一个任务仍在处理中。如果在 reduce 任务第一次尝试运行时发生错误,这种情况尤其可能发生。您可以通过查看返回错误的集群步骤的 syslog 日志来检查是否是这种情况。如果 syslog 显示 map 和 reduce 任务都在进行中,这表明 reduce 阶段已经开始,而还有尚未完成的 map 任务。

    要在日志中查找的一件事是地图进度百分比达到 100%,然后又回落到较低的值。当地图百分比为 100% 时,这并不意味着所有地图任务都已完成。它只是意味着 Hadoop 正在执行所有映射任务。如果此值回落到 100% 以下,则意味着映射任务失败,根据配置,Hadoop 可能会尝试重新调度任务。如果日志中的地图百分比保持在 100%,请查看 CloudWatch 指标,特别是 RunningMapTasks,以检查地图任务是否仍在处理中。您还可以使用主节点上的 Hadoop Web 界面找到此信息。

    如果您遇到此问题,可以尝试以下几种方法:

    指示 reduce 阶段在开始之前等待更长的时间。您可以通过将 Hadoop 配置设置 mapred.reduce.slowstart.completed.maps 更改为更长的时间来做到这一点。有关详细信息,请参阅创建引导操作以安装其他软件。

    将reducer 计数与集群的总reducer 能力相匹配。为此,您可以调整作业的 Hadoop 配置设置 mapred.reduce.tasks。

    使用组合器类代码来最小化需要获取的输出数量。

    检查 Amazon EC2 服务是否存在影响集群网络性能的问题。您可以使用服务运行状况仪表板执行此操作。

    查看集群中实例的 CPU 和内存资源,以确保您的数据处理不会占用节点资源。有关详细信息,请参阅配置集群硬件和网络。

    检查您的 Amazon EMR 集群中使用的 Amazon 系统映像 (AMI) 的版本。如果版本是 2.3.0 到 2.4.4(含),请更新到更高版本。指定范围内的 AMI 版本使用可能无法从映射阶段传递输出的 Jetty 版本。当 reducer 无法从 map 阶段获取输出时,会发生 fetch 错误。

    Jetty 是一个开源 HTTP 服务器,用于 Hadoop 集群内的机器对机器通信

    【讨论】:

    • 你好。我可以通过 ambari 找到第一个属性,但不能找到另一个。你能告诉我他们在哪个网站吗?
    • @FlorianCastelain 这是很久以前的事了,也许属性名称已经改变了?我已经为这个问题添加了一个更新的链接
    • 感谢您的更新。仅供参考,最后两个在 mapred 站点中。
    猜你喜欢
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多