Tez VS Spark - огромные различия производительности - PullRequest
0 голосов
/ 19 ноября 2018

Я использую HDP 2.6.4 и вижу огромные различия в Spark SQL и Hive на TeZ.Вот простой запрос к таблице из ~ 95 M строк

SELECT DT, Sum(1) from mydata GROUP BY DT

DT - столбец раздела, строка, помечающая дату.

В оболочке spark, с 15 исполнителями, памятью 10Gдля драйвера и 15G для исполнителя запрос выполняется в течение 10-15 секунд.

При работе в Hive (из beeline ) запрос выполняется (фактически выполняется) в течение 500+ секунд.(!!!) Что еще хуже, это приложение потребляет даже больше ресурсов (значительно), чем сеанс spark shell, в котором я выполнял задание.

ОБНОВЛЕНИЕ: Завершено 1 row selected (672.152 seconds)

Подробнееинформация о среде:

  • Используется только одна очередь с планировщиком емкости

  • Пользователь, под которым выполняется задание, является моим собственным пользователем.Kerberos используется с LDAP

  • AM Ресурс: 4096 МБ

  • с использованием tez.runtime.compress с Snappy

  • данные в формате паркета, сжатие не применяется

  • tez.task.resource.memory 6134 МБ

  • tez.counters.max 10000

  • tez.counters.max.groups 3000

  • tez.runtime.io.sort.mb 8110 МБ

  • tez.runtime.pipelined.sorter.sort.threads 2

  • tez.runtime.shuffle.fetch.buffer.percent 0.6

  • tez.runtime.shuffle.memory.limit.percent 0.25

  • tez.runtime.unordered.output.buffer.size-mb 460 МБ

  • Включить векторизацию и векторизацию карты true

  • Включить Уменьшить векторизацию false

  • hive.vectorized.groupby.checkinterval 4096

  • hive.vectorized.groupby.flush.percent 0.1

  • улей.tez.container.size 682

Больше обновлений:

При проверке векторизации по этой ссылке я заметил, что не вижу Векторизованное исполнение: true везде, где я использовал 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'

Любые сравнения между искрой и тезом обычно сводятся к одному и тому же.термины, но я вижу существенные различия.

Что должно быть первым, что нужно проверить?

Thx

...