常见问题

更新时间:
复制 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 Task的Log,获取更多的信息。

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

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