hive on tez,使用sql查询数据时的卡死问题
问题描述:
hive on tez,使用sql查询数据时,同样的SQL,第一次查没问题,第二次差卡住了
解决方法:
这个问题可能是由于 Hadoop 的磁盘缓存和 Tez 的缓存机制导致访问速度变慢。在第一次查询时,热数据已经被缓存到了磁盘缓存和 Tez 缓存中,所以查询速度会很快。但是在第二次查询时,由于缓存不够新鲜或缓存过期,需要重新加载数据,这样就会导致查询速度变慢。
要解决这个问题,可以尝试以下几个方法:
- 增加磁盘缓存和 Tez 缓存的大小
在 hive-site.xml 中可以通过以下两个参数来增加磁盘缓存和 Tez 缓存的大小:
set hive.tez.container.size=8192;
set hive.tez.java.opts=-Xmx6144m;
其中,hive.tez.container.size 是 Tez 容器的大小,hive.tez.java.opts 是 JVM 的堆内存大小。可以根据实际情况来设置这两个参数。
- 关闭 Tez 缓存
可以在 hive-site.xml 中设置以下参数来关闭 Tez 缓存:
set hive.tez.auto.reducer.parallelism=false;
set hive.tez.exec.print.summary=true;
这样关闭 Tez 缓存后,查询速度可能会变慢,但是能够避免缓存过期或不够新鲜导致的查询卡顿问题。
- 增加 YARN 的内存和 CPU 资源
如果在查询过程中发现 Tez 容器没有被使用充分,可以考虑增加 YARN 管理节点的内存和 CPU 资源,以保证 Tez 容器能够充分利用资源,提高查询效率。
以上是一些可能的解决方法,但是具体的解决方案需要根据实际情况和集群配置来确定。建议先了解集群配置和系统资源使用情况,然后再选择合适的方法来解决问题。