tez vs spark-巨大的性能差异

e5nszbig  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(1488)

我正在使用hdp2.6.4,并且看到了sparksql和tez上的hive之间的巨大差异。下面是一个关于~95m行表的简单查询

  1. SELECT DT, Sum(1) from mydata GROUP BY DT
  2. ``` `DT` 是分区列,一个标记日期的字符串。
  3. 在sparkshell中,有15个执行器,10g内存用于驱动程序,15g内存用于执行程序,查询运行10-15秒。
  4. 在配置单元上运行时(从直线开始),查询将运行(实际上仍在运行)500多秒。(!!!)更糟糕的是,这个应用程序比我在其中运行作业的sparkshell会话需要更多的资源(显著地)。
  5. 更新:完成了 `1 row selected (672.152 seconds)` 有关环境的更多信息:
  6. 仅使用一个队列,使用容量调度程序
  7. 运行作业的用户是我自己的用户。我们将kerberos用于ldap
  8. am资源:4096 mb
  9. 使用tez.runtime.compress和snappy
  10. 数据为Parquet格式,未应用压缩
  11. tez.task.resource.memory 6134 mb内存
  12. tez.counters.max 10000个
  13. tez.counters.max.groups 3000个
  14. tez.runtime.io.sort.mb 8110 mb
  15. tez.runtime.pipelined.sorter.sort.threads线程2
  16. tez.runtime.shuffle.fetch.buffer.percent 0.6
  17. tez.runtime.shuffle.memory.limit.percent 0.25
  18. tez.runtime.unordered.output.buffer.size-mb 460 mb
  19. 启用矢量化和Map矢量化为真
  20. 启用减少矢量化错误
  21. hive.vectoried.groupby.checkinterval 4096
  22. hive.vectoried.groupby.flush.percent 0.1
  23. Hive.tez.container.size 682
  24. 更多更新:
  25. 当检查这个链接上的向量化时,我注意到我在任何地方都没有看到向量化的执行:当我使用 `explain` . 另一件引起我注意的事情是: `table:{"input format:":"org.apache.hadoop.mapred.TextInputFormat","output format:":"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat","serde:":"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"}` 即检查表本身时: `STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'` 以及 `OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'` spark和tez之间的任何比较通常都是相对一致的,但我看到了巨大的差异。
  26. 首先要检查的是什么?
  27. 谢谢
nue99wik

nue99wik1#

最后,我们放弃并安装了llap。我要接受它作为一个答案,因为我有点强迫症,这个没有答案的问题已经戳我的眼睛足够长的时间了。

相关问题