Domuz ve Kovan arasındaki fark nedir? Neden ikisi de var? [kapalı]


256

Geçmişim - Hadoop dünyasında 4 haftalık. Cloudera'nın Hadoop VM'sini kullanarak Hive, Pig ve Hadoop'ta biraz dabbled. Google'ın Harita Azaltma ve GFS ( PDF bağlantısı ) ile ilgili makalesini okudunuz .

Onu anlıyorum-

  • Domuzun dili Domuz Latin, programcıların düşünce tarzı gibi SQL'den bir geçiştir (Hive'ın sorgu dili SQL'e çok benzer.

  • Domuz Hadoop'un üzerine oturur ve prensip olarak Dryad'ın üzerine de oturabilir. Yanılıyor olabilirim ama Hive Hadoop ile yakından ilişkilidir.

  • Hem Pig Latin hem de Hive komutları işleri Haritalamak ve Azaltmak için derler.

Benim sorum - Birinin (Domuz deyin) amaca hizmet edebileceği zaman ikisine sahip olmanın amacı nedir? Sadece Domuz Yahoo! ve Hive tarafından Facebook?


24
Kovan yapılandırılmış veriler içindir. Domuz yapılandırılmamış veriler içindir.
Ölü Programcı

Yanıtlar:


151

Şuna bak yazıyı Hive yerine domuz gibi bir SQL işleviyle karşılaştırır Alan Gates'in, Yahoo Domuz mimarı !, dan. Pig (bildirimsel SQL'e karşı) gibi yordamsal bir dilin ve veri akışı tasarımcılarına faydası konusunda çok ikna edici bir durum ortaya koyuyor.


Alan ayrıca, aşağıda j03m olarak paylaşılan Hive'ı özel olarak tartışan bir makale de yapıyor. Ondan güzel şeyler!
Dolan Antenucci

14
Kovan yapılandırılmış veriler içindir. Domuz yapılandırılmamış veriler içindir.
Ölü Programcı

7
Kafam karıştı. Şunu mu demek istediniz: "[...] Domuz gibi işlemsel bir dilin yararlılığı " mı? Çünkü makale defalarca "Domuz Latince Yordamsal" olduğunu iddia ediyor.
Matt Fenwick

4
Geçici olup olmadığından emin değilim, ancak makale gitmiş gibi görünüyor. Bağlantıyı güncelleyebilir misiniz (hızlı bir arama ile bulamadım)?
Peter Klipfel

1
Alan Gates yazısı burada .. lütfen
gözden geçirin

57

Hive, SQL ile rahat bir topluluğa hitap etmek için tasarlanmıştır. Felsefesi, başka bir betik diline ihtiyacımız olmadığıydı. Hive, haritayı destekler ve dönüşüm komut dosyalarını kullanıcının tercih ettiği dilde (SQL yan tümcelerine gömülebilir) azaltır. Python'da programlama yapan veri madencilerinin yanı sıra SQL'de rahat analistler tarafından Facebook'ta yaygın olarak kullanılmaktadır. Pig'deki SQL uyumluluk çabaları AFAIK'den vazgeçildi - bu yüzden iki proje arasındaki fark çok açık.

SQL sözdizimini desteklemek, Microstrategy gibi mevcut BI araçlarıyla entegre olabilmeniz anlamına da gelir. Hive, bunun yakın gelecekte gerçekleşmesine izin vermesi gereken bir ODBC / JDBC sürücüsüne (devam eden bir çalışma) sahiptir. Ayrıca, bu tür ortamlarda yaygın olan detaya inme sorguları için desteğe izin veren dizinler için destek eklemeye başlıyor.

Son olarak - bu doğrudan soru ile ilgili değildir - Kovan, analitik sorgulama yapmak için bir çerçevedir. Baskın kullanımı düz dosyaları sorgulamak olsa da, diğer mağazaları sorgulayamamasının bir nedeni yoktur. Şu anda Hive, Hbase'de (çoğu RDBMS'nin bağırsaklarında bulunanlar gibi bir anahtar / değer deposu) depolanan verileri sorgulamak için kullanılabilir ve HadoopDB projesi, bir federasyon RDBMS katmanını sorgulamak için Hive'ı kullanmıştır.


37

Bunu en yararlı buldum (yine de, bir yaşında) - http://yahoohadoop.tumblr.com/post/98256601751/pig-and-hive-at-yahoo

Özellikle Pig vs Hive ve Yahoo'da ne zaman ve nerede çalıştıklarından bahsediyor. Bunu çok anlayışlı buldum. Bazı ilginç notlar:

Veri kümelerinde yapılan artımlı değişikliklerde / güncellemelerde:

Bunun yerine, yeni artımlı verilere katılmak ve sonuçları bir önceki tam birleşmeden elde edilen sonuçlarla birlikte kullanmak doğru yaklaşımdır. Bu sadece birkaç dakika sürecektir. Standart veritabanı işlemleri Pig Latin'de bu kademeli olarak uygulanabilir, bu da Pig'i bu kullanım durumu için iyi bir araç haline getirir.

Akış yoluyla diğer araçları kullanma hakkında:

Akışla domuz entegrasyonu, araştırmacıların zaten küçük bir veri kümesinde hata ayıkladıkları Perl veya Python betiğini almasını ve büyük bir veri kümesine karşı çalıştırmasını kolaylaştırır.

Hive'ı veri ambarı için kullanma hakkında:

Her iki durumda da, ilişkisel model ve SQL en uygun olanıdır. Gerçekten de, veri ambarı, geçmişinin çoğu boyunca SQL için temel kullanım durumlarından biri olmuştur. Analistlerin kullanmak istediği sorgu ve araç türlerini desteklemek için doğru yapılara sahiptir. Sahada hem araçlar hem de kullanıcılar tarafından zaten kullanılıyor.

Hadoop alt projesi Hive, Hadoop için bir SQL arayüzü ve ilişkisel model sağlar. Hive ekibi, ODBC gibi arayüzler aracılığıyla BI araçlarıyla entegrasyon için çalışmaya başladı.


1
Yahoo'nun, yani Pig'in orijinal yaratıcısını anladığım kadarıyla veya en azından çok büyük bir savunucuyla karşılaştırmasını görmek harika. Düzenleme: yukarıdaki Jakob'dan, yazarın (Alan Gates) Yahoo'da Domuz Mimar olduğunu görüyorum - çok büyük bir pay :)
Dolan Antenucci

3
Bağlantı öldü. Şu anda doğru URL'nin olduğunu düşünüyorum: https://developer.yahoo.com/blogs/hadoop/pig-hive-yahoo-464.html .
agarie

1
Yukarıdaki bağlantı güncellenmiş
j03m


Yukarıda paylaşılan 2 bağlantı artık bulunmuyor.
Keshav Pradeep Ramanath

28

Bir "dezyre" makalesinden bir somun kabuğundaki Domuz Vs Kovan Karşılaştırmasına bir göz atın

Hive , PIG'den daha iyidir : Bölümler, Sunucu, Web arayüzü ve JDBC / ODBC desteği.

Bazı farklılıklar:

  1. Kovan yapılandırılmış Veriler için en iyisidir ve PIG yarı yapılandırılmış veriler için en iyisidir

  2. Kovan raporlama için ve PIG programlama için kullanılır

  3. Kovan , yordamsal bir dil olarak bildirimsel SQL ve PIG olarak kullanılır

  4. Kovan destekler bölümleri ve DOMUZ değil

  5. Kovan isteğe bağlı tasarruf tabanlı bir sunucu başlatabilir ve PIG yapamaz

  6. Hive tabloları önceden tanımlar ( şema ) + şema bilgilerini bir veritabanında depolar ve PIG'nin özel bir veritabanı meta verisi yoktur

  7. Kovan Avro'yu desteklemez, ancak PIG destekler . DÜZENLEME: Kovan Avro'yu destekler, serde'yi org.apache.hadoop.hive.serde2.avro olarak belirtin

  8. Domuz ayrıca dış birleşimleri gerçekleştirmek için ek COGROUP özelliğini destekler , ancak kovan desteklemez . Ancak hem Hive hem de PIG dinamik olarak katılabilir, sipariş verebilir ve sıralayabilir .


17

Sorunuzun gerçek cevabının, onların bağımsız projeler oldukları / merkezi bir koordinasyon hedefi olmadığı inancındayım. Daha önce farklı alanlardalardı ve her iki proje de genişledikçe zamanla örtüşmeye başladılar.

Hadoop O'Reilly kitabından yorumlanmıştır:

Domuz: çok büyük veri kümelerini keşfetmek için kullanılan bir veri akışı dili ve ortamı.

Kovan: dağıtılmış bir veri ambarı


22
Kovan RDBMS'ye benzemez. Domuz gibi düz dosyaları işler. Her ikisi de temelde aynı şeyi yapıyor. İşi derlerken kullandıkları optimize edicilere bakın, çünkü bu en büyük gerçek farktır.
Steve Severance

12

Domuz / kovan sorguları ile benzer sonuçlar elde edebilirsiniz. Temel fark sorguları anlama / yazma / oluşturma yaklaşımında yatmaktadır.

Domuz bir veri akışı yaratma eğilimindedir: her işlemde bazı işlemler yaptığınız küçük adımlar
Kovan, verileriniz üzerinde çalışmanız için SQL benzeri bir dil sağlar, bu nedenle RDBMS'den dönüşüm çok daha kolaydır (Domuz, daha önce deneyimi olmayan biri için daha kolay olabilir SQL ile)

Ayrıca, Hive için bu verilerle çalışmak için güzel bir arayüz (HUE için Balmumu veya Hive web arayüzü) yapabileceğinizi ve ayrıca verileriniz (şema vb.) verileriniz hakkında merkezi bilgiler.

Farklı sorgular için Hive ve Pig kullanıyorum (sorguyu daha hızlı / kolay yazabileceğim bir yöntem kullanıyorum, çoğunlukla ad-hoc sorguları bu şekilde yapıyorum) - giriş olarak aynı verileri kullanabilirler. Ama şu anda işlerimin çoğunu Balmumu ile yapıyorum.


12

Domuz, kişinin boru hattının herhangi bir noktasına veri ve kullanıcı kodu yüklemesine izin verir. Bu özellikle veriler bir veri akışı ise, örneğin uydulardan veya cihazlardan gelen veriler için önemli olabilir.

RDBMS tabanlı olan kovanın ilk olarak içe aktarılması (veya yüklenmesi) ve daha sonra üzerinde çalışılması gerekir. Dolayısıyla, veri akışında Hive kullanıyorsanız, yeni gelen verileri saklamak için diğer kovaları kullanırken, kovaları (veya dosyaları) doldurmaya devam etmeniz ve doldurulmuş her kovada kovan kullanmanız gerekir .

Domuz ayrıca tembel değerlendirme kullanır. Daha fazla programlama kolaylığı sağlar ve veriyi Hive gibi SQL benzeri bir dilden daha özgürce farklı şekillerde analiz etmek için kullanabilir. Dolayısıyla, sahip olduğunuz bazı yapılandırılmamış verilerdeki matrisleri veya desenleri gerçekten analiz etmek ve bunlarla ilgili ilginç hesaplamalar yapmak istiyorsanız, Pig ile adil bir mesafeye gidebilirsiniz, Hive ile ise sonuçlarla oynamak için başka bir şeye ihtiyacınız vardır.

Domuz, veri içe aktarmada daha hızlı, ancak gerçek yürütmede Hive gibi RDBMS dostu bir dile göre daha yavaştır.

Domuz paralellik için çok uygundur ve bu nedenle veri kümelerinin çok büyük olduğu sistemler için bir kenara sahiptir, yani sonuçlarınızın gecikme süresinden (sonuçların herhangi bir belirli datumunu alma zamanı) daha fazla veriminizle ilgili olduğunuz sistemlerde.


10

Kovan Vs Domuz

Kovan sql meraklı kullanıcılar veya Tableu / Microstrategy / sql arayüzü olan herhangi bir araç veya dil gibi diğer araçlara izin veren SQL arayüzü gibidir.

PIG daha çok bir ETL boru hattı gibidir ... değişkenleri bildirmek, döngü, yineleme, koşullu ifadeler vb. Adım adım komutlarla.

Adım adım mantık karmaşık adım yazmak istediğinizde kovan QL üzerinde Domuz komut dosyaları yazmayı tercih ederim. Ne zaman ı istemek veri çekmek için tek bir sql yazma rahat Hive kullanın. kovan için sorgulamadan önce tablo tanımlamanız gerekir (RDBMS'de yaptığınız gibi)

Her ikisinin amacı farklıdır ancak her ikisi de aynı şeyi yapar, harita azaltma programlarına dönüştürür.Ayrıca Apache açık kaynak topluluğu, her iki projeye de daha fazla özellik eklemek



7
  1. Pig-latin veri akışı tarzıdır, yazılım mühendisi için daha uygundur. Sql, sql alışkın analitik kişi için daha uygun olsa da. Karmaşık görev için, kovan için ara verileri saklamak için manuel olarak geçici tablo oluşturmanız gerekir, ancak domuz için gerekli değildir.

  2. Domuz latin, karmaşık veri yapısı (küçük grafik gibi) için uygundur. Domuzda Tuple koleksiyonu olan DataBag adlı bir veri yapısı var. Bazen birden fazla tuple içeren metrikleri hesaplamanız gerekir (tuples arasında gizli bir bağlantı vardır, bu durumda grafik olarak adlandırırım). Bu durumda, birden fazla tuple içeren metrikleri hesaplamak için bir UDF yazmak çok kolaydır. Tabii ki kovanda yapılabilir, ancak domuzda olduğu kadar uygun değildir.

  3. Bence domuzda UDF yazmak Hive'dakinden çok daha kolay.

  4. Domuzun meta veri desteği yoktur (veya isteğe bağlı olarak gelecekte hcatalog entegre edebilir). Hive, veritabanında depolanan tabloların meta verilerini içerir.

  5. Domuz betiğinin yerel ortamda hata ayıklayabilirsiniz, ancak kovanın bunu yapması zor olacaktır. Nedeni 3. noktadır. Yerel ortamınızda kovan meta verilerini ayarlamanız gerekir, bu çok zaman alıcıdır.




4

Bağlantıdan: http://www.aptibook.com/discuss-technical?uid=tech-hive4&question=What-kind-of-datawarehouse-application-is-suitable-for-Hive ?

Kovan tam bir veritabanı değildir. Hadoop ve HDFS'nin tasarım kısıtlamaları ve sınırlamaları, Hive'ın yapabileceklerine sınırlar getirir.

Kovan en çok veri ambarı uygulamaları için uygundur.

1) Nispeten statik veriler analiz edilir,

2) Hızlı tepki süreleri gerekli değildir ve

3) Veriler hızla değişmediğinde.

Hive, OLTP, Çevrimiçi İşlem İşleme için gerekli önemli özellikleri sağlamaz. Çevrimiçi Analitik İşleme OLAP aracı olmaya daha yakın. Bu nedenle, Hive, büyük bir veri kümesinin içgörüler, raporlar vb. İçin tutulduğu ve çıkarıldığı veri ambarı uygulamaları için en uygunudur.


4

Daha basit bir deyişle, Pig Hadoop ile kullanılan MapReduce programları oluşturmak için üst düzey bir platformdur, domuz komut dosyalarını kullanarak büyük miktarda veriyi istenen formatta işleyeceğiz.

İşlenen veriler elde edildikten sonra, bu işlenen veriler daha sonra işlenmek üzere HDFS'de tutulur ve istenen sonuçlar elde edilir.

Saklanan işlenen verilerin üzerine, istenen sonuçları almak için HIVE SQL komutlarını uygulayacağız, dahili olarak bu kovan sql komutları MAP Reduce programlarını çalıştırır.


Bu gerçekten bilgi tabanına anlamlı bir katkı değil. daha fazla bilgi eklemeyi deneyin
agconti

4

Kısaca her ikisine de çok yüksek düzeyde genel bir bakış vermek için:

1) Domuz, hadoop üzerinde ilişkisel bir cebirdir

2) Kovan hadoop üzerinde bir SQL (Domuzun bir seviye üstünde)


Cebir karşılaştırma ilginç
Ravindra babu

3

PIG'de mümkün olmayan ne HIVE yapabilir?

Bölümleme HIVE kullanılarak yapılabilir, ancak PIG'de gerçekleştirilemez, çıktıyı atlamanın bir yoludur.

HIVE'da mümkün olmayan ne PIG yapabilir?

Konumsal referans - Alan adlarınız olmasa bile, ilk alan için $ 0, ikinci alan için $ 1 gibi konumları kullanarak referans verebiliriz.

Ve bir başka temel fark, PIG'nin değerleri yazmak için bir şemaya ihtiyacı yoktur, ancak HIVE'ın bir şemaya ihtiyacı vardır.

JDBC ve diğerlerini kullanarak herhangi bir harici uygulamadan HIVE'a bağlanabilirsiniz, ancak PIG ile bağlanamazsınız.

Not: Her ikisi de HDFS (hadoop dağıtılmış dosya sistemi) üzerinde çalışır ve ifadeler Harita Azaltma programlarına dönüştürülür.


3

Bu Hadoopanlamda kullandığımız zaman , büyük veri işlemeye çalıştığımız anlamına gelir. Veri işlemenin nihai amacı, içerik / raporlar oluşturmak olacaktır.

Yani dahili olarak 2 ana faaliyetten oluşur:

1) Veri İşleme Yükleme

2) İçerik oluşturun ve raporlama / vb. İçin kullanın.

Yükleme / Veri İşleme -> Domuz bu konuda yardımcı olacaktır.

Bu bir ETL olarak yardımcı olur (Domuz betikleri kullanarak etl işlemleri gerçekleştirebiliriz.).

Sonuç işlendikten sonra, işlenen sonuca göre raporlar oluşturmak için kovanı kullanabiliriz.

Kovan: Depo işleme için hdfs üzerine inşa edilmiştir.

Domuzdan üretilen işlenmiş içerikten gelen kovanı kullanarak kolayca geçici raporlar oluşturabiliriz.


1

Domuz bir şey yiyor! Yani yapılandırılmamış verileri tüketebilir.

Kovan bir şema gerektirir.


1

Domuz genellikle konuşan ETL tür iş yükleri için kullanışlıdır. Örneğin, verilerinize her gün yapmanız gereken dönüşümler kümesi.

Geçici sorguları çalıştırmanız gerektiğinde veya yalnızca verileri keşfetmek istediğinizde kovan parlar. Bazen görselleştirme katmanınıza (Tableau / Qlikview) arayüz görevi görebilir.

Her ikisi de şarttır ve farklı amaçlara hizmet eder.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.