Возможности Hadoop с отчетами MSSQL

Я оценивал возможности Hadoop в Azure HDInsight, чтобы найти решение для работы с большими данными для нашего приложения для создания отчетов. Ключевой частью этой оценки технологии является то, что мне нужно интегрироваться со службами отчетов MSSQL, поскольку это то, что уже использует наше приложение. У нас очень мало ресурсов разработчиков, поэтому чем больше я смогу превратить это в инженерное упражнение, тем лучше. Что я пробовал до сих пор

  • Используйте подключение ODBC из MSSQL, сопоставленное с Hive в HDInsight.
  • Используйте подключение ODBC из MSSQL с помощью HBASE в HDInsight.
  • Используйте SPARKQL локально на лазурном удаленном рабочем столе HDInsight.

Я обнаружил, что HBASE и Hive намного медленнее используются с нашими отчетами. Для тестовых данных я использовал таблицу с 60 тыс. строк и обнаружил, что отчет по MSSQL выполняется менее чем за 10 секунд. Я запустил запрос в консоли запросов hive и через соединение ODBC и обнаружил, что его выполнение заняло больше минуты. Spark был быстрее (30 секунд), но к нему невозможно подключиться извне, так как порты не могут быть открыты в кластере HDInsight.

Большие данные и Hadoop для меня в новинку. Мой вопрос в том, ищу ли я Hadoop для выполнения чего-то, для чего он не предназначен, и есть ли способы сделать это быстрее? Я подумал о кэшировании результатов и их периодическом обновлении, но это звучит как кошмар управления. Kylin выглядит многообещающе, но мы довольно сильно женаты на лазурных окнах, поэтому я не уверен, что это жизнеспособное решение.


person JMB    schedule 09.06.2015    source источник
comment
Есть ли причина, по которой вы хотите заменить SQL Server на Hadoop? Что не работает в текущей реализации?   -  person Marek Grzenkowicz    schedule 13.06.2015
comment
@marek Это запрос сверху вниз в компании, в который я не хочу вдаваться. По сути, мы ищем решение для отчетности с очень малой задержкой для больших наборов данных. Что касается установки дистрибутива Cloudera, у меня сложилось впечатление, что это не сработает из-за ограничения портов в кластерах HDInsight. goo.gl/EeKvdX. Кроме того, в чем преимущество, если таковое имеется, от использования Impala по сравнению с Tez?   -  person JMB    schedule 15.06.2015
comment
Hive подходит для сложных, длительных запросов (например, ETL или механизмов рекомендаций), а не для создания отчетов. Он использует MapReduce под капотом. Hive-on-Tez или Hive-on-Spark будут быстрее, но без практического опыта я не могу их рекомендовать.   -  person Marek Grzenkowicz    schedule 15.06.2015
comment
Здесь нет возможностей Azure, но Cloudera можно установить из Marketplace azure.microsoft. .com/en-us/marketplace/partners/cloudera/. Это предварительный выпуск, так что это должно быть что-то новое.   -  person Marek Grzenkowicz    schedule 15.06.2015
comment
Я упомянул Импалу, потому что использую ее. Это не идеально, но быстро. Загрузите виртуальную машину Cloudera QuickStart, запустите ее на своем ноутбуке, загрузите тестовый набор данных, и вы сможете сравнить Hive и Impala.   -  person Marek Grzenkowicz    schedule 15.06.2015
comment
Марек, спасибо за информацию. По вашему опыту, достаточно ли быстро Impala для создания отчетов в реальном времени?   -  person JMB    schedule 19.06.2015
comment
Это зависит. Сколько данных? Сколько узлов в кластере? Насколько сложны отчеты? Будет ли SSRS передавать обработку в Impala или пытаться получить все данные для обработки самостоятельно? Включает ли Impala все необходимые вам функции (например, статистические функции могут отсутствовать)? Вам нужна полная поддержка Unicode?   -  person Marek Grzenkowicz    schedule 20.06.2015


Ответы (2)


Посмотрите эту документацию по оптимизации запросов Hive: https://azure.microsoft.com/en-us/documentation/articles/hdinsight-hadoop-optimize-hive-query/

В частности, посмотрите на ORC и использование Tez. Я бы создал кластер с включенным Tez по умолчанию, а затем сохранил бы ваши данные в формате ORC. Ваши запросы должны быть намного более производительными.

person Rashim Gupta    schedule 10.06.2015

Если использование Spark достаточно быстрое, вам следует рассмотреть возможность использования Microsoft Spark. Драйвер ODBC. Я использую его, и производительность несопоставима с тем, что вы получите с MSSQL, другими СУБД или чем-то вроде ElasticSearch, но он работает довольно надежно.

person benohead    schedule 12.09.2015