Apache Hive - це рамка, яка сидить на вершині Hadoop для виконання спеціальних запитів щодо даних у Hadoop. Hive підтримує HiveQL, схожий на SQL, але не підтримує повних конструкцій SQL.
Hive охоплює запит HiveQL в програму Java MapReduce і подає його до кластеру Hadoop. Такого ж результату можна досягти за допомогою HiveQL та Java MapReduce, але для використання Java MapReduce потрібно буде записати / налагодити багато коду порівняно з HiveQL. Отже, HiveQL підвищує продуктивність розробника.
Підводячи підсумок, Hive, використовуючи мову HiveQL, забезпечує абстрагування більш високого рівня щодо програмування Java MapReduce. Як і у будь-якої іншої абстракції високого рівня, у HiveQL порівняно з Java MapReduce є надмірна ефективність роботи, але спільнота Hive працює над тим, щоб зменшити цей розрив для більшості часто використовуваних сценаріїв.
У цій же лінії Pig забезпечує абстрагування більш високого рівня над MapReduce. Pig підтримує конструкції PigLatin, які перетворюються в програму Java MapReduce і подаються в кластер Hadoop.
Хоча HiveQL є декларативною мовою, як SQL, PigLatin є мовою потоку даних. Вихід однієї конструкції PigLatin може бути надісланий як вхід до іншої конструкції PigLatin тощо.
Через деякий час Cloudera опублікував статистику щодо характеру навантаження в типовому кластері Hadoop, і можна легко помітити, що завдання Pig and Hive складають значну частину робочих місць у кластері Hadoop. Через більш високу продуктивність для розробників багато компаній вибирають конспекти вищого рівня, такі як Pig and Hive. Отже, ми можемо поставити під сумнів, що навколо вулика та свині буде багато відкритих робочих місць порівняно з розробкою MapReduce.
Хоча книга «Програмування свиней» була опублікована в жовтні 2011 року, книга «Програмування вуликів» була опублікована зовсім недавно, у жовтні 2012 року. Для тих, хто має досвід роботи з RDBMS, краще почати роботу з вуликом, ніж розпочати роботу зі Свині. Також зауважте, що з мовою PigLatin почати не дуже складно.
Для основного кластера Hadoop зрозуміло, подано завдання Java MapReduce чи подано завдання MapReduce через Hive та Pig. Через пакетно-орієнтований характер завдань MapReduce робочі місця, що подаються через вулик та свиню, також мають партійну орієнтацію.
Що стосується вимог реагування в реальному часі, вулик та свиня не відповідають цим вимогам через раніше згаданий пакетний характер завдань MapReduce. Cloudera розробила Impala, яка базується на Dremel (публікація від Google) для інтерактивних спеціальних запитів на вершині Hadoop. Impala підтримує SQL-подібні запити і сумісний з HiveQL. Отже, будь-які додатки, побудовані на вершині Hive, повинні працювати з мінімальними змінами з Impala. Основна відмінність Hive від Impala полягає в тому, що, хоча HiveQL перетворюється на завдання Java MapReduce, Impala не перекриває SQL-запит у завдання Java MapReduce.
Чи варто їхати зі Свині чи Вуликом для певної вимоги? Це тема для іншого блогу.
Перевидано з дозволу Praveen Sripati. Оригінальну статтю можна знайти тут: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html