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

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

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

Map端是否读取了小文件?

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

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

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

您可以通过以下步骤定位问题:
  1. 在EMR控制台的访问链接与端口页面,单击YARN UI所在行的链接。
  2. 单击Application ID。
  3. 在Reduce Task列表页面,按照完成时间逆序排序,找出Top耗时的Reduce Task任务。Reduce Task
  4. 单击Task的Name链接。
  5. 在Task详情页面,单击左侧的Counters。Counters
    查看当前Reduce Task中Reduce Input bytes和Reduce shuffle bytes的信息,如果比其他的Task处理的数据量大很多,则说明出现了倾斜问题。Reduce Input bytes