Hive查询运行速度很慢

时间:2014-06-25 20:11:30

标签: hadoop hive hiveql

我的任务是安装和配置双节点集群,以用作Hadoop的概念验证。群集包含一台主机和从机,另一台机器是从机。两者都安装在具有16GB RAM的Ubuntu 14.04虚拟机上。

所以我能够在两台机器上安装Hadoop 2.4,成功运行hdfs,yarn,hive等。我现在的问题是,一旦我开始添加更大的文件/更多数据,查询就会变得非常慢。

例如从程序中选择count()。程序包含45000行,总计约2.5 MB。初始化后,只需几秒钟即可获得结果。 现在在包含近1700万行(3.6GB)的另一个表上运行相同的查询需要更长的时间(据我所知)。如果我在这个大表上运行count(),或者它的变化,它需要不同的时间。第一次需要4分钟。我在第一次完成后立即运行它需要17分钟。运行之间没有任何变化,所以我不确定发生了什么。通常在这些长时间运行期间,机器将冻结并且对任何输入都没有响应。地图将保持0%持续5分钟,跃升至约30%,然后缓慢增加。

我的问题是:这是正常行为吗?如果我再次运行它,我希望同样的工作能够保持一致的运行时间。也许Ubuntu存在潜在的问题,我不确定。如果我在工作期间监视CPU或磁盘使用情况,他们都不会是疯狂的高地,所以我不确定它在哪里被挂起。查看日志文件不会显示任何异常。如果作业特别慢(超过45分钟),日志文件将显示一堆SocketTimeoutExceptions。

我玩过不同的配置选项,但似乎没有任何帮助。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

这不是正常行为。在Hive中,我可以在不到一分钟的时间内处理大约1700万个点,包括在map / reduce初始化期间花费的时间。我将列出一些可能导致您性能下降的问题。

  • 虚拟机并不适合Hadoop。您希望机器具有专用的本地存储,因为磁盘I / O通常是最大的性能瓶颈。
  • 您只有两台运行所有Hadoop服务的计算机(并且它们是虚拟机... ),包括但不限于主服务,例如资源管理器(YARN), Hive Server NameNode (HDFS)。这并没有为map / reduce任务留下太多空间。

供参考 - 在我们的开发群集中,我们有3台专用于这些主服务的机器。它们不运行任何map / reduce任务,也不属于分布式存储。

Hadoop当然不是每个用例的最佳或最快的选择,但是你的沙盒集群并没有给它太大的机会。