Merhaba
map-redurce
bence bigdata olayında işin özü. Eğer map-reduce kodlaması yapabiliyorsanız,
tüm sorgulamaları vs. rahatlıkla gerçekleştirebilirsiniz.
Bigdata öğrenmek isteyenlere şunu söylüyorum: Bigdata pek çok disiplini bir arada barındırıyor.
Bigdata öğrenmek isteyenlere şunu söylüyorum: Bigdata pek çok disiplini bir arada barındırıyor.
Sistem bilginiz
olması gerekiyor. Yani linux, kurulum, shell komutları vs.
Database,veriambarı,veri, structered olmayan data vs. vs. bilginiz olması gerekir.
Programlama bilginiz olması gerekir. map-reduce komutları yazabilmek için başta java bilmeniz gerekiyor. Hadoop ve diğer tüm bileşenleri hive-pig-hbase-sqoop-flume vs. vs. hepsi java ile yazılmıştır. Klasik relational databaseden farklı bir ortam yer almaktadır burada. Önceden sqlserver-oracle-teradata vs. kullanmış olanlara bigdatayı biraz anlattığımda hani select nerede şeklinde dönüş yapmaktadırlar. Bu konuyla ilgili yanlış anlamaları da başka bir blog yazımda tartışmak ve yazmak isterim. Select nerede? hadi bigdatanı hızını görelim şeklindeki bilinmeden sorulan soruları yazmak isterim.
Database,veriambarı,veri, structered olmayan data vs. vs. bilginiz olması gerekir.
Programlama bilginiz olması gerekir. map-reduce komutları yazabilmek için başta java bilmeniz gerekiyor. Hadoop ve diğer tüm bileşenleri hive-pig-hbase-sqoop-flume vs. vs. hepsi java ile yazılmıştır. Klasik relational databaseden farklı bir ortam yer almaktadır burada. Önceden sqlserver-oracle-teradata vs. kullanmış olanlara bigdatayı biraz anlattığımda hani select nerede şeklinde dönüş yapmaktadırlar. Bu konuyla ilgili yanlış anlamaları da başka bir blog yazımda tartışmak ve yazmak isterim. Select nerede? hadi bigdatanı hızını görelim şeklindeki bilinmeden sorulan soruları yazmak isterim.
Konuyu
dağıtmadan map-reduce ile ilgili bu ilk blog yazımıza devam edelim. Unutmadan
söyleyeyim map-reduce mantığını tek bir blog ile anlatmak zor. Bundan sonra bir
kaç map-reduce yazısını da blog aracılığı ile paylaşacağım.
Map-reduce işlemini en iyi anlatan resim aşağıdadır.
Map-reduce işlemini en iyi anlatan resim aşağıdadır.
İnternette map-reduce
wordcount örneği diye araştırdığınızda tonlarca site ve java kod örneğini
bulabilirsiniz. WordCount örneği aslında o kadar önemlidir ki. Her türlü sorgu
vs. işlemlerinde de kullanabilirsiniz.
Map kısmı ile
reduce kısmı ayrıdır. Bunu kodlama yaparken de göreceksiniz.
Map class’ ı ve Reduce class’ ı olarak iki ayrı class ve metodlar yer almaktadır. Bunlar neden ayrı bunun da cevabını bundan sonraki blog yazılarımda yazacağım.
Map kısmında vermiş olduğunuz dökümanı row by row alır ve istediğiniz hesaplama yöntemini parser ile gerçekleştirirsiniz. Bu kısım ilk başta çok es geçiliyor. Üzerini vurgulamak için tekrar yazıyorum. Dosyanın satır satır bir döngü ile tek tek bakılmakta-işlenmektedir.
Map class’ ı ve Reduce class’ ı olarak iki ayrı class ve metodlar yer almaktadır. Bunlar neden ayrı bunun da cevabını bundan sonraki blog yazılarımda yazacağım.
Map kısmında vermiş olduğunuz dökümanı row by row alır ve istediğiniz hesaplama yöntemini parser ile gerçekleştirirsiniz. Bu kısım ilk başta çok es geçiliyor. Üzerini vurgulamak için tekrar yazıyorum. Dosyanın satır satır bir döngü ile tek tek bakılmakta-işlenmektedir.
Mesela bir örnek
verelim. Senaryolaştırarak anlatayım. Siz bir insan kaynakları bürosunda
çalışıyorsunuz. Bu büroya mail aracılığı ile her gün tonlarca cv akmaktadır.
Doğal olarak word ile gelen bu cv’ lerin formatları her bir başvuran kişi için
farklıdır. Kimisi staj bilgisini yazar, kimisi çok deneyimli olduğundan belki
10 sayfa cv yazısı gönderir. Yani formatlar ve sayfa sayıları bile farklıdır.
Sizden istenen ise bu gelen tonlarca word dökümanlarında içinde “Bilgisayar Mühendisi” yada içinde “Endüstri Mühendisi”, yada içinde “İnşaat Mühendisi” geçen dosyaları ve bunların sayıları istenebilir.
Bilgisayar Mühendisi : 10000 adet
Endüsti Mühendisi : 5000 adet
İnşaat Mühendisi : 4000 adet gibi bir sonuç ve bu dosyaların isimlerini bulmanız istenmektedir.
Bu durumda ne yapabilirsiniz?
Sizden istenen ise bu gelen tonlarca word dökümanlarında içinde “Bilgisayar Mühendisi” yada içinde “Endüstri Mühendisi”, yada içinde “İnşaat Mühendisi” geçen dosyaları ve bunların sayıları istenebilir.
Bilgisayar Mühendisi : 10000 adet
Endüsti Mühendisi : 5000 adet
İnşaat Mühendisi : 4000 adet gibi bir sonuç ve bu dosyaların isimlerini bulmanız istenmektedir.
Bu durumda ne yapabilirsiniz?
İşte tam bir
bigdata konusu esasında. Bigdata çünkü veri büyük, bigdata çünkü relational
olmayan bir yapıdan sorgulama isteniyor, bigdata çünkü sayısal bir sonuç
isteniyor. Bu örneği aslında pek çok şeye uyarlayabilirsiniz. İnternette
genelde apache-log ları saydırma vardır mesela. Ne kadar get metodu oldu, ne
kadar post metodu oldu, hangi tarihte ve saatte ne kadar işlem yapıldı vs. vs.
İşte map classı ve metodu tek tek bir döngü ile dosyaları dolaşır. Her bir dosyada ise satır satır işlemi yapar. Her bir satır işleminde siz şunu diyebilirsiniz.
Eğer bu satırda “Bilgisayar Mühendisi”, veya “Endüstri Mühendisi” veya “İnşaat Mühendisi” geçiyor ise bunu reduce et. Yani nihai hesaplamada +1 koy. i=i+1 işlemini gerçekle yani.
İşte map classı ve metodu tek tek bir döngü ile dosyaları dolaşır. Her bir dosyada ise satır satır işlemi yapar. Her bir satır işleminde siz şunu diyebilirsiniz.
Eğer bu satırda “Bilgisayar Mühendisi”, veya “Endüstri Mühendisi” veya “İnşaat Mühendisi” geçiyor ise bunu reduce et. Yani nihai hesaplamada +1 koy. i=i+1 işlemini gerçekle yani.
Diyeceksiniz
elimizdeki tonlarca dosyada, row by row bu işlem saatlerce sürmez mi?
İşte burada da dağıtık mimari, dağıtık programlama hadi havalı olsun ingilizce diyelim distributed kavramı devreye giriyor.Bigdata yan yana istediğiniz kadar makinayı kullanabilmenizi sağlıyor. Bu iş biraz tekelden çıktığını gösteriyor. Siz bugün iki adet laptop kullanarak hadoop sistemi oluşturabilirsiniz. Bir master ve bir slave şeklinde. Baktınız işiniz büyüdü yani veriniz arttı buna ikinci, üçüncü, yüzüncü laptop’ ınızı yan yana koyarak hadoop sisteminizi yaygınlaştırabilirsiniz.
Bu konuya yani distributed konusuna ufak girdikten sonra bundan sonraki blogta bu işin detayına gireceğim.
İşte burada da dağıtık mimari, dağıtık programlama hadi havalı olsun ingilizce diyelim distributed kavramı devreye giriyor.Bigdata yan yana istediğiniz kadar makinayı kullanabilmenizi sağlıyor. Bu iş biraz tekelden çıktığını gösteriyor. Siz bugün iki adet laptop kullanarak hadoop sistemi oluşturabilirsiniz. Bir master ve bir slave şeklinde. Baktınız işiniz büyüdü yani veriniz arttı buna ikinci, üçüncü, yüzüncü laptop’ ınızı yan yana koyarak hadoop sisteminizi yaygınlaştırabilirsiniz.
Bu konuya yani distributed konusuna ufak girdikten sonra bundan sonraki blogta bu işin detayına gireceğim.
Bugünkü blog
yazım bu kadar. Hep dediğim gibi. Yavaş yavaş kavramları ve neyin ne olduğunu
anlatmaya çalışıyorum. Bloglar ilerledikçe data fazla detaya giriceğim.
map-reduce ile
ilgili aşağıdaki vereceğim linke lütfen bakınız. İşin özünü burada
senaryolaştırarak çok güzel anlatılmıştır.
Kısa bir sunum. Bakmanızı tavsiye ederim.
Kısa bir sunum. Bakmanızı tavsiye ederim.
http://www.slideshare.net/esaliya/mapreduce-in-simple-terms
mmetin
Merhaba, bilgi paylashiminiz ichin teshekkurler. Ama sunumlar okunakli degil.
YanıtlaSilHocam map ve reduce kısmında satırlarca kodu yazmak yerine scala yazarak aynı işi yapamaz mıyız? Bu arada elinize sağlık.
YanıtlaSil