Как повысить производительность загрузки данных из таблицы разделов NON в таблицу разделов ORC в HIVE

Я новичок в Hive Querying, я ищу передовые методы получения данных из таблицы Hive. мы включили TeZ с механизмом выполнения и включили векторизацию.

Мы хотим делать отчеты из таблицы Hive, я прочитал из документа TEZ, что ее можно использовать для отчетов в реальном времени. Сценарий взят из моего веб-приложения, я хотел бы показать результат Hive Query Select * из таблицы Hive в пользовательском интерфейсе, но для любого запроса в командной строке улья требуется минимум 20-60 секунд, даже если таблица улья имеет данные 60 ГБ,.

1) Может ли кто-нибудь сказать мне, как отображать отчеты в реальном времени, запрашивая таблицу Hive и сразу отображать результаты в пользовательском интерфейсе в течение 10-30 секунд

2) Еще одна проблема, которую мы выявили, заключается в том, что изначально у нас есть несекционированная таблица, указывающая на большой двоичный объект / файл в HDFS, она имеет размер 60 ГБ с 200 столбцами, когда мы выгружаем данные из несекционированной таблицы в таблицу ORC (ORC таблица разбита на разделы), это занимает 3+ часа. Есть ли способ улучшить производительность при сбросе данных в таблицу ORC.

3) Когда мы выполняем запросы к таблице Non Partition с ведением, вставкой в ​​таблицу куста и запросами, занимающими меньше времени, чем запрос выбора в таблице ORC, но при увеличении количества записей в таблице куста, запрос SELECT таблицы ORC лучше, чем таблица с корзинами. Есть ли способ повысить производительность и для небольших наборов данных. Поскольку это начальный этап, каждый месяц мы загружаем 50 ГБ данных в таблицу Hive. но он может увеличиваться, мы стремимся улучшить производительность загрузки данных в секционированную таблицу Orc.

4) TEZ поддерживает интерактивность, меньшую задержку и поддержку детализации для отчетов. Как включить в моих детализированных отчетах данные из Hive (которые должны быть интерактивными) в пределах времени ответа человека, то есть 5-40 секунд.

мы тестируем 4 узла, каждый узел имеет 4 ядра процессора, 7 ГБ ОЗУ и 3 диска, подключенных к каждой виртуальной машине.

Спасибо, Махендер


person user145610    schedule 07.03.2015    source источник


Ответы (2)


Чтобы повысить скорость вставки данных в таблицу ORC, вы можете попробовать поиграть со следующим параметры:

hive.exec.orc.memory.pool 
hive.exec.orc.default.stripe.size
hive.exec.orc.default.block.size 
hive.exec.orc.default.buffer.size
dfs.blocksize

Кроме того, вы можете увидеть, может ли сжатие вам помочь. Например:

SET mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
SET hive.exec.compress.intermediate = true;

Надеюсь, это поможет!

person Victor F    schedule 09.03.2015
comment
спасибо Виктор, я постараюсь - person user145610; 11.03.2015
comment
@ user145610, вы уже пришли к какому-либо выводу, как ускорить вставку данных в таблицу ORC? - person Grzes; 27.03.2015

Прежде всего. HIVE не предназначен для обработки данных в реальном времени. Независимо от того, насколько малы данные, запрос займет некоторое время, чтобы вернуть данные.

Настоящая сила улья заключается в пакетной обработке огромного количества данных.

person sunil    schedule 09.03.2015
comment
SUnil, есть ли способ в HDInsight / Hadoop привязать результаты моего запроса к UI. (pz Игнорировать HBase). Я слышал о Node + hive, доступен ли он в Microsoft Azure. Мы хотим предоставить интерактивный запрос с использованием tez, spark и т. Д. - person user145610; 20.03.2015
comment
Я считаю, что Tez и Spark очень перспективны в этой области. Вы можете попробовать эти варианты. - person sunil; 22.03.2015
comment
через TEZ мне не удалось добиться привязки в реальном времени ... не пробовал Spark..позвольте проверить с помощью Spark - person user145610; 23.03.2015