常见问题

更新时间:
复制为 MD 格式

本文汇总了Hive使用时的常见问题。

作业长时间处于等待状态,如何处理?

您可以通过以下步骤定位问题:
  1. EMR控制台的访问链接与端口页面,单击YARN UI所在行的链接。
  2. 单击Application ID。
  3. 单击Tracking URL的链接。
    可以看到有多个作业处于等待状态。
  4. 在左侧导航中,单击Scheduler
    即可进入队列,您可以看一下当前队列的繁忙程度,来分析是因为队列中没有空闲资源,还是当前任务确实比较耗时。如果是队列资源紧张,您可以考虑切换到空闲队列,否则需要优化代码。在 YARN ResourceManager 页面左侧导航栏中,单击 Scheduler,在 Application Queues 区域可查看各队列的 Capacity 与 Used 占比,据此判断队列资源是否紧张。

Map端是否读取了小文件?

您可以通过以下步骤定位问题:
  1. EMR控制台的访问链接与端口页面,单击YARN UI所在行的链接。
  2. 单击Application ID。
    进入Map Task的详情页面,可以看到每个Map Task读取的数据量,例如,读取的数据量是2个字节记录。如果大部分的Map Task读取的文件量都比较小,就需要考虑小文件合并。

    您也可以通过查看Map TaskLog,获取更多的信息。

Reduce Task任务耗时,是否出现了数据倾斜?

您可以通过以下步骤定位问题:
  1. EMR控制台的访问链接与端口页面,单击YARN UI所在行的链接。
  2. 单击Application ID。
  3. Reduce Task列表页面,按照完成时间逆序排序,找出Top耗时的Reduce Task任务。重点关注 State 列确认任务执行状态,以及 Successful Attempt 中的 Shuffle Finish TimeMerge Finish TimeFinish Time 分析各阶段耗时,判断是否存在数据倾斜。
  4. 单击TaskName链接。
  5. Task详情页面,单击左侧的Counters。
    查看当前Reduce TaskReduce Input bytesReduce shuffle bytes的信息,如果比其他的Task处理的数据量大很多,则说明出现了倾斜问题。在TaskCounters页面的Map-Reduce Framework区域中查看Reduce input recordsReduce shuffle bytes的值,与其他Task对比判断是否存在数据倾斜。