Download
apache pig ile b y k veri analizi n.
Skip this Video
Loading SlideShow in 5 Seconds..
Apache Pig ile Büyük Veri Analizi PowerPoint Presentation
Download Presentation
Apache Pig ile Büyük Veri Analizi

Apache Pig ile Büyük Veri Analizi

557 Views Download Presentation
Download Presentation

Apache Pig ile Büyük Veri Analizi

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. ApachePig ile Büyük Veri Analizi Berkin Gülay 10011038 Doğukan Murat Kabatepe 09011052

  2. Ajanda • MapReduce Nedir ? • ApachePig Nedir ? • ApachePig’in Özellikleri ve Avantajları • ApachePigKullanımı • Last FM Veritabanı Örneği • Hadoop Kullanılarak Yapılan ApachePig Demo Uygulaması

  3. MapReduce • Google tarafından geliştirilmiştir • Dağıtık mimari üzerinde büyük verilerin analiz edilmesi • Java tabanlı • Map ve Reduce fonksiyonları

  4. Map • Ana düğüm verileri alır ve işçi düğümlere dağıtır • İşçi düğümler sonuçları ana düğüme gönderir • Select cümlesi ile seçme, where ile sınırlama • İşlemler birbirinden bağımsız, paralel yapıda çalışır.

  5. Reduce • Map aşaması sonucunda alınan verilerin analizi • Veri üzerinde count, sumhaving gibi işlemler

  6. MapReduce • Çok büyük verileri analiz etmek için milyon dolarlık makine ihtiyacının ortadan kalkması • Google, Facebook, Twitter gibi şirketler kullanır

  7. ApachePig nedir? • ApacheHadoop üzerinde prosedurel bir data akışı yazmayı sağlayan bir veri işleme platformu • İki parçadan oluşur --Pig Latin --PigEngine

  8. Neden ApachePig? • Üretkenliği dramatik bir şekilde arttırır. • Pig Latin ile farklı formatta verileri yükleyip, bu veriler üzerinde filtreleme, sıralama, grouplama, aritmetik işlemler ve en önemlisi join’ler yapabiliyorsunuz. Yani SQL ile yapabildiğiniz neredeyse herşeyiPig ile yapabilmeniz mümkün. • Aslında Pig’in çalışması için Hadoop’un kurulu olması gerekmiyor. Yani “standalone” modunda da veri analizi yapılabiliyor. Bu özelliği sayesinde kodları kendi bilgisayarınızda test edebiliyorsunuz. Ancak veri işleyebilmek için veri setlerinin Hadoop üzerinden verilmesi gerekiyor. Bundan dolayı kurulum dökümanındaHadoop kurulumuna da değindik. Örnek: 18-25 yaş aralığındaki kullanıcıların en çok ziyaret ettiği 5 site --PigLatin ile 10 satır kod = Java MapReduce ile 200 satır kod --PigLatin kodu yazmak 15 dakika, Java kodu yazmak 4 saat

  9. Pig Latin neler barındırır? • Anlaşılması kolay, yüksek seviye bir veri akış dili. • -Veri işlemleri (filter, join, order) • -İç içe geçmiş tipler (tuple, bag, map) • -Hadoop'unjava programcısı olmayanların da kullanılmasına olanak tanır.

  10. Pig nasıl çalışır? - script yazılır -script parse edilir -optimize edilir -execution planlanır -jar dosyasıHadoop'agönderilir -tanımlananişmonitöredilir

  11. Pig Latin scriptleri geliştirmek • -EclipsePluginleri: • PigEditor, PigPen, Pig-Eclipse • -Vim, Emacs, TextMatepluginleri

  12. Piglatinscriptleri çalıştırmak • -HadoopMode: Hadoop'un özelliklerinden faydalanılır. • -Scripti doğrudan çalıştırma (batchmode) : • $ pig -p input=someInputscript.pig • script.pig • Lines = LOAD '$input' AS (...); • -Pig Shell: • grunt> Lines = LOAD '/data/books/' • AS (line: chararray); • grunt> Unique = DISTINCT Lines; • grunt> DUMP Unique;

  13. Pig ne kadar hızlı? • -Ortalamada, MapReduce'dan 1.16x yavaş (PigMix2 benchmark sorgularına göre) • -Pig vs. MapReduce: Pig, MapReduce sorgularına dönüştürülür, bu yüzden iyi yazılmış bir MapReduce kodundan hızlı olamaz. Pig'de yapılan optimizasyonlar sebebiyle bazen MR kodlarından hızlı çalışabilir. MR konusunda tecrübesi olmayan programcıların yazdığı kodlar, Pig'den yavaş çalışır.

  14. Pig Latin veri tipleri • -Skaler tipler int, long, float, double, chararray, bytearray, boolean • -Kompleks tipler Tuple: Herhangi tipte olabilen alanların dizisi ('Poland', 2, 0.66) Bag: Tuple koleksiyonu {('Poland', 2), ('Greece'), (3.14)} Map: Anahtar/Değer ikilileri. Anahtarlar karakter dizisi olmalıdır. Değer ise herhangi bir tip olabilir ['Poland'#'Euro2012']

  15. Last.FM veri tabanı • ● Veriler tablar ile ayrılmış iki dosyada bulunur ○ yaklaşık 1000 kullanıcı tarafından dinlenen parçalar userid <tab> timestamp <tab> musicbrainz-artist-id <tab> artist-name <tab> musicbrainz-track-id <tab> track-name ○ kullanıcı profilleri userid <tab> gender ('m'|'f'|empty) <tab> age (int|empty) <tab> country (str|empty) <tab> signup (date|empty) ● ~2.35GB veri miktarı

  16. Her artistin parçalarını bulmak

  17. Hadoop Kullanılarak Yapılan ApachePig Demo Uygulaması • Pig’inçalışma prensibini görmek için sadece verilerimizi yükleyip konsola basan bir script yazalım. • A = LOAD 'products.csv' USING PigStorage(); • B = FOREACH A GENERATE $0 AS id, $1 AS name; • dump B; İlk satırda A değişkenine products.csv dosyası içerisindeki verileri PigStorage ile yükleyeceğimizi belirtiyoruz. PigStorage sınıfı jenerik olarak yazılmış, csv formatındaki verileri yükleyip parçalayabilen bir sınıf. Örnek verimiz tab karakteri ile ayrılmış olduğu için başka bir parametre belirtimiz yok. İkinci satırda ise A verisi içerisinde foreach döngüsüyle dönüyoruz. Buraya kadar olan kısımda henüz yazdığımız kodlar çalışmadılar. DUMP komutu ile kodların çalışmasını ve sonucun ekrana çıkmasını sağlıyoruz.

  18. Hadoop Kullanılarak Yapılan ApachePig Demo Uygulaması • Örneğimizi biraz ilerletirsek  companies.csv dosyasını yükleyip içersindeid alanı 3 değerinden büyük olan firmaları bulan kodu test.pig dosyası içerisine yazalım. ( Companies.csv ve products.csv dosyası hadoop a import edilmiş dosyalardır ) • A = LOAD 'companies.csv' USING PigStorage() AS (productId:int, productName:chararray); • B = FILTER A BY productId > 3; • C = FOREACH B GENERATE *; • DUMP C; İlk örnekten farklı olarak B değişkenimize “FILTER” metoduyla verileri filtreleyerek atıp dump ile yazdırıyoruz.

  19. Hadoop Kullanılarak Yapılan ApachePig Demo Uygulaması • Son olarak, products.csv ve companies.csv dosyalarını join operasyonuyla birleştirip, sonucu HDFS üzerinde pigresult klasörüne kaydeden bir örnek yapalım. • /* loadproducts */ • A1 = LOAD 'products.csv' USING PigStorage() AS (productId:int, productName:chararray); • B1 = FOREACH A1 GENERATE productId, productName; • /* loadcompanies */ • A2 = LOAD 'companies.csv' USING PigStorage() AS (productId:int, companyName:chararray); • B2 = FOREACH A2 GENERATE productId, companyName; • /* join */ • J = JOIN B1 BY productId, B2 BY productId; • R = FOREACH J GENERATE $0, $1, $3; • STORE R INTO 'pigresult' USING PigStorage();

  20. Teşekkürler,Sorularınız?