Czym jest Apache Hive
Hive, nazywany hurtownią danych przechowywanych na HDFS, jest kolejnym sposobem dostępu do danych przechowywanych w infrastrukturze Big Data, głównie w systemie plików HDFS, ale również umożliwia integrację z silnikami tradycyjnych relacyjnych baz danych. Hive pierwotnie został wymyślony i napisany przez Facebooka, który potem udostępnił jego kod źródłowy w postaci otwartego projektu Apache Foundation.
Interfejsem dostępu do danych w Hive jest HiveQL, czyli język bardzo przypominający tradycyjnego SQL'a. I to właśnie HiveQL stanowił główną motywację powstania platformy Hive.
Pierwsze wersje platformy Hadoop składały się z dwóch komponentów:
- HDFS - rozproszonego systemu plików
- Map-reduce - frameworku pisania aplikacji przetwarzających dane w środowisku rozproszonym i jednocześnie środowiska uruchamiania tych aplikacji
Tworzenie rozwiązań wykorzystujących HDFS i map-reduce wymagało od programistów mentalnej zmiany podejścia do tworzenia rozwiązań, zrozumienia paradygmatu programowania map-reduce, ale również dobrej znajomości sposobu przetwarzania danych rozproszonych. Był to więc bloker wykorzystania komponentów Hadoop-a przez analityków danych.
Hive jest jedną z pierwszych odpowiedzi na opisany problem, która udostępnia dostęp do danych przechowywanych w Hadoop'ie za pomocą poleceń bardzo przypominających tradycyjnego SQL-a.
Przypadki użycia Apache Hive
Dane przechowywane w HDFS mają postać nieustrukturalizowaną. Jednym z głównym przypadków użycia Hive jest chęć stworzenia struktury z tej postaci nieustrukturalizowanej i wykonywania na tej postaci analiz. Analizy te mogą mieć charakter zapytań ad-hoc, mogą mieć również postać bardziej skomplikowaną.
Czym nie jest Hive
Hive nie jest silnikiem bazy danych. Różnica jest taka, że silnik bazy danych zarządza danymi przechowywanymi we własnych strukturach, natomiast Hive stanowi interfejs do danych przechowywanych na HDFS. Hive jest dedykowany do przetwarzania dużych zbiorów danych i nie powinien być stosowany w rozwiązaniach wymagających małego opóźnienia w uzyskaniu odpowiedzi. Jest przystosowany i dedykowany do przetwarzania batchowego, przynajmniej jeśli chodzi o zastosowania, w którym korzysta on bezpośrednio z danych zapisanych na HDFS. Wynika to z faktu tłumaczenia zapytań HiveQL na instrukcje map-reduce, które operują na rozproszonych danych zapisanych na HDFS.
Hive nie wspiera transakcji jak również operacji typu UPDATE i DELETE.