MapReduce Mustafa Agâh ÖZTÜRK 08260543.

Slides:



Advertisements
Benzer bir sunumlar
MAP SINIFI. MAP C + + da Haritalar değer çiftlerini benzersiz anahtar içeren birleşmeli konteyner olarak sıralar. Haritalar onların anahtarlarına göre.
Advertisements

Ders İçeriği Ağaç Veri Modeli Tanım ve Gerçekleştirim İkili Ağaç
Karmaşıklık Giriş.
Ayrık Yapılar Algoritma Analizi.
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Web 2.0 Araçları Rıdvan Gezici
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
Nesneye Yönelik Programlama
BTEP 203 – İnternet ProgramcIlIğI - I
C Programlama Diline Giriş
İşletim Sistemlerine Giriş
Değişken Bildirimleri
Numbers of Opcodes Nihal Güngör.
GAMZE KAYA JSON.
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
İndeksler Sibel SOMYÜREK.
İkili Arama Ağaçları (Binary Search Trees) BST
Excel’de VBA programlama (Visual Basic Application) Ders 4
NESNEYE DAYALI MODELLEME VE TASARIM
SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma Çiğdem İNAN, M. Fatih AKAY Çukurova Üniversitesi Bilgisayar.
Fork and Join Framework
Java Programlama Koleksiyon(Collection) Sınıfları
XML Genişletilebilir İşaretleme Dili (eXtensible Markup Language), hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmayı.
IT 504 İnternet ve Web Programlama Tanıtım Yrd. Doç. Yuriy Mishchenko.
Çizge Teorisi, Dağıtık Algoritmalar ve Telsiz Duyarga Ağları
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN. Sunu Planı Bu derste, çizgelerin bilgisayarda gösterimine ilişkin iki standart yaklaşımı inceleyeceğiz.
Veri Yapıları Ve Algoritmalar
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
Veri Yapıları ve Algoritmalar
MPI İle Paralel Programlama Tunahan Altıntop
Yazılım Gelişimi. Donanım gelişimine paralel olarak süren yazılım gelişimi, son on yılda kayda değer bir ivmelenme ile bilgisayarları, herhangi bir uzmanlık.
GRAF TEORİSİ Ders 1 TEMEL KAVRAMLAR.
Görsel Programlama Dr. Muhammet Balcılar
CONTENT MANAGEMENT SYSTEM (İÇERİK YÖNETİM SİSTEMLERİ)
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
ÇİZGELERİN GÖSTERİMİ Yılmaz KILIÇASLAN.
Bilgisayar Programlama
Ümran Onay.
JAVA’DA DİZİLER Dr.Galip AYDIN.
Ders İçeriği Liste Soyut veri yapısı (ADT)
Veri Yapıları ve Algoritmaları ders_1
Sarper Aydoğan – Turkcell Teknoloji Staj’2010
BURCUGÜL B İ LG İ N TÜRKÇE Ö Ğ RETMENL İĞİ ( İ.Ö.) EĞİTİMDE WEB 2.0 ARAÇLARI.
Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri Dizgi Çıktı İşlemleri Dizgi Fonksiyonları Karakter Fonksiyonları Gösterge Dizgileri.
HAZIRLAYAN: BURCU OLGUN
Karar Bilimi 1. Bölüm.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
İnsan Kaynakları Bilgi Sistemleri
Bilgisayar Bileşenleri
PHP ve HTML İnternet Programlama - 2. Koşullu İfadeler ve Döngüler Döngü ya da çevirim diyebileceğimiz, belli şart ve koşullarda istenilen değerleri yapabilmemizi.
Bölüm 4 : VERİ MADENCİLİĞİ
Python Programlama Dili R. Emre Başar 5 Ocak 2005 Guido Van Rossum da kim oluyor?
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
Örnek Uygulama Öğr. Gör. Yasin ÇİÇEK.
Bir bilgisayar sisteminin 4 bileşeni vardır;
Bilgisayar Programlamasına ve Veri Analizine Giriş
Fırat Üniversitesi Mühendislik Fakültesi Elektrik-Elektronik Müh.
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
Bilgisayar Programlamasına ve Veri Analizine Giriş
BLOCKCHAİN NEDİR ? Blok zinciri, ilk defa Bitcoin ile ortaya konulmuş olan, içerisinde kayıtların birbirine kriptografik elementlerle bağlı olduğu sürekli.
C ile Programlamaya Giriş
Bilgisayar Bilimi Problem Çözme Süreci-3.
Sunum transkripti:

MapReduce Mustafa Agâh ÖZTÜRK 08260543

Giriş Dağıtımlı çalışma, iş süreçlerinin bölümlendirilmesidir. Böylece iş yükü azalır, performans artar. Yazılım dünyasındaki iş süreçlerinin bölümlendirilmesi ise dağıtık programlamadır ve dağıtık programlama performansı ve dolayısıyla hızı arttırır. Google’ın arama, depolama ve indexleme gibi işlemleri birden fazla bilgisayara dağıtarak yaptırması, dağıtılmış programlamaya bir örnektir ve bu dağıtımlı programlamayı MapReduce ile yapmaktadır.

Nedir MapReduce ? MapReduce, Google tarafından geliştirilmiş, birbirine bağlı ve birlikte çalışan bilgisayar grubunun (computer cluster) büyük veri kümeleri üzerinde dağıtılmış programlamayı destekleyen bir yazılım kütüphanesidir. Yazılım kütüphanesinde, genellikle fonksiyonel programlamada kullanılan haritalama (map) ve azaltma (reduce) fonksiyonlarından esinlenilse de, bu fonksiyonların MapReduce’deki amaçları orijinal biçimleriyle aynı değildir. MapReduce kütüphanesi C++, C#, Erlang, Java, Ocaml, Python, Ruby, F#, R ve diğer programlama dilleri ile yazılmıştır.

Nedir MapReduce ? Çok sayıda veriyi işleyerek başka verileri türetmek, çok zahmetli bir iş olabilir, fakat bu işlem MapReduce ile çok daha kısa zamanda daha performanslı şekilde yapılabilir. MapReduce, Otomatik Paralellik ve Dağıtım Hata Toleransı I/O Zamanlama Durum ve İzleme gibi özellikler sağlar.

Genel Bakış MapReduce, çok sayıda bilgisayar kullanarak dağıtılabilir problemlerin belli çeşitlerinde geniş datasetleri işlemek için bir yazılım kütüphanesidir. Hesaplamalı işleme yapılandırılmamış bir dosya sistemi ya da bir yapısal veritabanı içinde depolanan veriler üzerinde oluşabilir.

Genel Bakış Map Adımı Ana düğüm girişi alır, daha küçük alt problemlere ayırır ve bunları çalışan düğümlere dağıtır. Çalışan düğüm bunu tekrar sırayla yapabilir, bu da çok seviyeli ağaç yapısına yol açar. Çalışan düğüm küçük problemleri işler, ve cevapları tekrar ana düğüme verir. Reduce Adımı Ardından ana düğüm alt problemlerin tümünden cevapları alır ve onları bazı yollarla birleştirerek cevabı elde eder.

Map Fonksiyonu MapReduce ‘un Map ve Reduce fonksiyonlarının ikisi de, (key, value) çiftinde yapılandırılmış verilere göre tanımlanmıştır. Map veri alanında bir türle verinin bir çiftini alır, farklı alanda bir liste çifti döndürür. Map(k1,v1) -> list(k2,v2) Map fonksiyonu giriş dataset’indeki her maddeyi paralel olarak uygular. Bu her çağrı için (k2,v2) çiftinin bir listesini üretir. Ardından MapReduce tüm liste ve gruptan aynı anahtar ile çiftleri birleştirir, böylece farklı üretilen anahtarların her biri için bir grup oluşturulur.

Reduce Fonksiyonu Reduce fonksiyonu da her grubu paralel olarak uygular, aynı alandaki değerlerin bir yığınını sırayla üretir. Reduce(k2, list (v2)) -> list(v3) Her Reduce çağrısına bir v3 değeri, ya da boş değer üretir, yine de bir çağrı birden fazla değerin dönmesine izin verir. Böylece MapReduce değerleri içeren bir listeden (key, value) çiftleri listesi dönüştürür.

Map ve Reduce map(String input_key, String input_value): // input_key: document name // input_value: document contents for each word w in input_value: EmitIntermediate(w, "1"); reduce(String output_key, Iterator intermediate_values): // output_key: a word // output_values: a list of counts int result = 0; for each v in intermediate_values: result += ParseInt(v); Emit(AsString(result));

MapReduce Örnek : İçerisinde meyve adı ve satın alınan fiyat bilgisi bulunan veriler düşünelim, ve bu verilerin işlenmesi, o meyveye ait toplam harcama bilgisi isteniyor. MapReduce ile bu basit ve hızlı şekilde yapılabilir. Verilerimiz aşağıdaki şekilde olsun : armut 10 portakal 3 incir 9 armut 9 incir 3 mandalina 2 erik 29

MapReduce Anahtar değerleri meyve isimleri olacak, ve 2 adet MapReduce düğümümüz var ise bu veriler 2 parçaya bölünür ve MapReduce’a verilir. armut 10 portakal 3 incir 9 armut 9 ------ incir 3 mandalina 2 incir 29

MapReduce Her düğüm, kendi içinde Map fonksiyonunu çalıştırırken, benzer anahtar değerlerini aynı toplama yazacaktır. Bölüm 1) armut = 19, portakal = 3, incir = 9. Bolum 2) armut 10, incir = 32, mandalina = 2. Böylece Map işlemi bitmiştir, indirgeme (Reduce) işlemine geçilecektir.

Reduce kısmında her bölümdeki anahtarlar kendi aralarında toplanır ve sonuç elde edilir. armut = 29 portakal = 3 incir = 41 mandalina = 2 Veriler MapReduce ile kolayca işlenmiştir.

Hadoop Hadoop, Java programlama dilinde yazılmış açık kaynak kodlu bir yazılım kütüphanesidir. Amacı Google dosya sistemi teknolojisi olan MapReduce algoritmasını birçok bilgisayara dağıtarak uygulamayı sağlamaktır. Hadoop’un MapReduce’dan farkı açık kaynak kodlu olmasıdır. Temelindeki teknik ise “eşle/indirge (map/reduce)” adındaki bir tekniktir. Bu teknik Apache tarafindan açık kaynak ortamına getirilmiş ve Hadoop bu şekilde dünyaya gelmiştir.

Hadoop Hadoop kullanımı gün geçtikçe artmaktadır. Bunun en büyük örnekleri; Facebook Hadoop kullanarak kullanıcı davranışlarının analizini yapmaktadır (yaklaşık 50 milyon kişi ve ilişkileri) ve sosyal reklamların etkisini ölçmektedir. New York Times bilgi işlem ekibi Hadoop kullanarak 150 yıllık arşivindeki 11 milyon makaleyi dijitalleştirmiş ve aranabilir hale getirmiştir. Normalde bu işlem, aylar sürebilir fakat Hadoop ile çok daha kısa sürede, birkaç günde bitirilmiştir.

Kaynaklar Google Labs, labs.google.com/papers/mapreduce.html MapReduce, en.wikipedia.org/wiki/MapReduce How Google Works: Reducing Complexity baselinemag.com/c/a/Infrastructure/How-Google-Works-1/5/ Dağıtık Sistemler, burakisikli.wordpress.com/category/distributed-systems/