Apache Hive er en ramme, der sidder øverst på Hadoop til at udføre ad-hoc forespørgsler om data i Hadoop. Hive understøtter HiveQL, der ligner SQL, men understøtter ikke de komplette konstruktioner af SQL.
Hive dækker HiveQL-forespørgslen i et Java MapReduce-program og sender den derefter til Hadoop-klyngen. Det samme resultat kan opnås ved hjælp af HiveQL og Java MapReduce, men brug af Java MapReduce kræver, at en masse kode skal skrives / debugges sammenlignet med HiveQL. Så HiveQL øger udviklerens produktivitet.
For at opsummere giver Hive gennem HiveQL-sprog et abstraktion på højere niveau over Java MapReduce-programmering. Som med enhver anden abstraktion på højt niveau er der en smule præstationsomkostning ved hjælp af HiveQL sammenlignet med Java MapReduce, men Hive-samfundet arbejder på at indsnævre dette hul i de fleste af de ofte anvendte scenarier.
På samme linje giver grisen en abstraktion på højere niveau over MapReduce. Pig understøtter PigLatin-konstruktioner, der konverteres til Java MapReduce-programmet og derefter indsendes til Hadoop-klyngen.
Mens HiveQL er et deklarativt sprog som SQL, er PigLatin et datastrømsprog. Outputtet fra en PigLatin-konstruktion kan sendes som input til en anden PigLatin-konstruktion og så videre.
For en tid tilbage offentliggjorde Cloudera statistikker om arbejdsbelastningskarakteren i en typisk Hadoop-klynge, og det kan let observeres, at grise- og Hive-job udgør en god del af jobbet i en Hadoop-klynge. På grund af den højere udviklerproduktivitet vælger mange virksomheder abstrakt på højere niveau som Pig and Hive. Så vi kan satse på, at der vil være en masse jobåbninger omkring Hive og Pig sammenlignet med MapReduce-udvikling.
Selvom Programming Pig-bogen blev udgivet i oktober 2011, blev Programming Hive-bogen udgivet for nylig, i oktober 2012. For dem, der har erfaring med at arbejde med RDBMS, ville det være en bedre mulighed at komme i gang med Hive end at komme i gang med Pig. Bemærk også, at PigLatin-sprog ikke er meget vanskeligt at komme i gang med.
For den underliggende Hadoop-klynge er det gennemsigtigt, om der indsendes et Java MapReduce-job eller et MapReduce-job indsendes via Hive og Pig. På grund af den batchorienterede karakter af MapReduce-job, er de job, der indsendes gennem Hive og Pig, også batchorienterede i naturen.
For reaktionskrav i realtid opfylder Hive og Pig ikke kravene på grund af den tidligere nævnte batchorienterede karakter af MapReduce-job. Cloudera udviklede Impala, som er baseret på Dremel (en publikation fra Google) til interaktive ad-hoc-forespørgsler oven på Hadoop. Impala understøtter SQL-lignende forespørgsler og er kompatibel med HiveQL. Så alle applikationer, der er bygget oven på Hive, skal fungere med minimale ændringer med Impala. Den største forskel mellem Hive og Impala er, at mens HiveQL konverteres til Java MapReduce-job, importerer Impala ikke SQL-forespørgslen til et Java MapReduce-job.
Bør du gå med svin eller bikube for et bestemt krav? Det er et emne for en anden blog.
Genudgivet med tilladelse fra Praveen Sripati. Original artikel kan findes her: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html