GOOGLE in depolama mimarisi

Blog taki Ilk Makalem: GOOGLE in depolama mimarisi nedir? (GOOGLE Storage Architecture)
Yazacagim ilk post icin son 10 yilin IT alanindaki en dahiyane firmasinin kendi ic yapisini anlatmak istedim. Zira GOOGLE su anda IT sektorunde dunyanin en onde gelen firmasi, kendi calisacak sistemleri icin tasarladiklari sonrasinda da olusturduklari yapilar herkese ornek ve ilham kaynagi oluyor. Ozellikle `performans`, `erisilebilirlik` ve `olceklenebilirlik` konularinda muhtesemler. Ilgilenenler icin gelistirdikleri depolama teknolojilerini / cozumlerini daha yakindan anlatmak istedim. Makale icin kullandigim kaynaklari, ‘kaynakca’ bolumunde belirttim.
(NOT: Makale icinde elimden geldigince Turkce kullanmaya calistim, ancak bazi teknoloji/urun isimlerini aynen kullanmak zorunda kaldim.)
Platform
Linux isletim sistemleri uzerinde genis bir dil ailesi: Python, Java, C++
Amac
– Genel olarak yapildigi sekilde yatirim maliyeti yuksek guvenilir makineler ve donanimlar kullanarak sistem kurmak yerine; mumkun olan en ucuz donanimlar ile bu donanimlarin uzerinde calisacak yazilimlarin guvenilir hale getirilerek daha fazla performans saglayacak bir sistem kurmak
Genel Bilgi
– 2006 itibariyle 450.000 dusuk-butceli server
– 2005 itibari ile 8 milyar web sayfasini indekslemis durumda bugun ise kim bilir?
– Yapida 200 un uzerinde GFS (Google File System) cluster (kumeleme) mevcut. Tek bir cluster da 1000 ila 5000 makine yer alabiliyor. Toplam 5 petabyte lik GFS cluster havuzundan onbinlerce makine data almakta. Toplam okuma/yazma (read/write) trafigi saniyede 40 gigabyte (40 GB/sec) lara varabiliyor.
– Yapida 6000 den fazla MapReduce programi bulunuyor ve her ay yuzlerce yeni program yaziliyor.
– BigTable milyarlarca URL adresini, yuzlerce terabyte lik uydu goruntulerini ve yuzlerce milyon kullanici bilgileri tutuyor.
Buyume
Google korkutucu bir hizla buyuyen bir firma. Ornek olmasi acisindan asagidaki degerleri inceleyebilirsiniz.
2000 Ocak    —–> 3 datacenter – 2.000 Linux server
2000 Haziran —–> 3 datacenter – 4.000 Linux server
2001 Nisan   —–> 5 datacenter – 8.000 Linux server  – 1 Petabyte storage
2003 Nisan   —–> 5 datacenter – more then 15.000 Linux server
2003 Aralik   —–> 5 datacenter – 18.000 Linux server – 5 Petabyte storage
Yapisal Bilesenler
– Urunler: arama (search), reklam (advertising), email, maps, video, chat, blogger
– Distributed Systems Infrastructure: GFS, MapReduce and BigTable
– Processing: Fiziksel olarak farkli datacenter larda bulunan bir suru server
– Calisanlar icin sistemin ve makinelerin kolay bir sekilde kurulabilmesi
– Her bir program icin ayri maliyet hesabi yapmak, donanimlara daha cok para harcayarak loglarin kaybolmayacagindan emin olmak ancak diger turde datalarin ehemniyeti icin daha az para harcamak. Bunu o kadar onemsiyorlar ki hic bir sekilde data kaybi yasamiyorlar.
Guvenilir Depolama Mekanizmasi – GFS (Google File System)
Her program temelde saglam olceklenebilir depolama alanina ihtiyac duyar. GFS temel depolama platformudur. Google File System – genis olcekli (large scale), daginik loglanabilir (distributed transaction log), kontrol altinda tutulabilen (structured) dosya sistemidir. Bu dosya sistemi Google in kendine ozel olarak gelistirdigi bir sistemdir. Boyle bir sistem gelistirmelerinin sebebi genel dosya sistemlerinin karsilamadigi ihtiyaclari olmasidir. Gereksinimlerini asagida belirttim;
– Farkli datacenter uzerinde calisabilecek guvenilebilir, dayanikli olmasi gerekiyor
– Binlerce makinenin ayni dataya erisimini (read, also write) desteklemesi gerekiyor
– Cok yuksek yazma/okuma performansi saglamasi gerekiyor
– Yuksek boyutlu dosyalari desteklemesi gerekiyor (tek bir dosya buyuklugu)
– Network uzerinden erisen makineler arasinda esit yuk dagilimi saglamasi (distribution of operations) ve darbogaz lari azaltmasi (reduce bottlenecks) gerekiyor
Sistemin `master`(asil) ve `chunk`(asil server ile konusup belli bir miktarda isi kendi uzerine alabilen) server lari var.
– Master server data dosyalarini ve bu soyalara ait `metadata` yi tutuyor.  Data 64 MB chuck lar halinde tutuluyor. Client lar `Master Server` lar ile konusarak erismek istedikleri datanin metadata sina bakarak datanin hangi `chunk`server uzerinde tutuldugunu ogreniyor.
– `Chunk` server lar gercek datayi kendi diskleri uzerinde barindiriyorlar. Her bir chunk server datayi uc farkli chunk server a replike ediyor, herhangi bir server coktugunde (crash) datanin erisilebilir olmasi amaciyla (redundancy). Master server dan datanin hangi chunk server da oldugu ogrenildiginde client program datayi direk olarak chunk server dan aliyor. Yeni bir program olusturuldugunda varolan bir GFS cluster i kullanabiliyor yada yazilima ozel bir GFS cluster olusturulabiliyor. Farkli datacenter lar arasinda disklere erisimin (provisioning) nasil gerceklestigini detaylariyla anlamak gercekten ilginc olacaktir. Insanlarin varolan yada olusturacaklari yazilimlari icin yeterli altyapiyi olusturmak boyle bir yapida anahtar gorevi goruyor. GFS programlarin ihtiyaci olabilecek sekilde ayarlanabiliyor (tuning).
Bir Is icin Data yi Mapreduce ile Kullanmak
– Simdi elinizde yukarida anlattigim her isi yapabilen iyi bir depolama sistemi var. Fakat elde bulunan bu kadar cok miktarda data ile herhangi bir isi nasil gerceklestireceksiniz? (Burada anlattigim senaryonun google a ait oldugunu unutmayin !) Diyelim ki yuzlerce TB data yi farkli datacenter lar uzerinde depolayip 1000 makineyi bu data alanlarina eristirdiniz. Problem, database yapilari olceklenemez yada cok ciddi bir maliyet gerektirir olceklenebilmek icin. Iste bu noktada `MapReduce` devreye giriyor.
MapReduce bir programlama modeli ve buyuk boyutlu data lari olusturmayi, islemeyi ve kullanabilmeyi saglar. Kullanicinin belirtecegi bir semaya islenen anahtar ciftleri daha alt anahtar ciflerini kendi icinde barindirir. Ancak alt anahtar ciftlerinin sayisi azaltan (alt anahtarlari `merge` eden) bir fonksiyon sayesinde birden cok alt anahtari tek bir alt anahtarda toplar. Gercek hayattaki bir cok is bu modelde tanimlanabilir. Bu sekilde yazilan programlar otomatik olarak paralel hale gelir ve dusuk maliyetli server lardan olusan buyuk bir cluster (kumeleme) uzerinde calistirilir. `The Run-Time System` data nin nereden okunacagi yada nereye yazilacagini ve nerede process edilecegini zamanlayarak, makine hatalari tolere eder, makineler arasinda gerceklesmesi gereken ic iletisimi (inter-communication) kontrol eder. Bu sekilde; olusturulan her program icin programcinin paralel ve daginik sistemler uzerinde development yapmasina gerek kalmadan kolay bir sekilde daginik sistemler uzerinde olusturdugu yazilimi calistirabilmesi mumkun kilinir.
Neden MapReduce ?
– Yapilacak bir isi belirli bir makine grubu uzerine atayarak, o makineler uzerinde calisitirabilmek
– Makine hatalarindan etkilenmemek (redundancy)
– Farkli turde yazilimlar tarafindan kullanilabiliyor olmasi (arama, reklam).
– Computation (hesaplama-processing) otomatik olarak en yakindaki IO kaynagina yonlenir. MapReduce sisteminde uc farkli turde server bulunur.
1.) Master server; Kullanicilarin islerini toplayarak, kullanilan server sayisini optimize eder. Ayrica islerin durumunu kontrol eder.
2.) Map server; Kullanicidan gelen input (giris) isteklerini kabul eder ve bu istekleri degerlendirerek processing sayisini azaltir. Bu islemin sonuclari alt anahtar dosyalarina yazilir.
3.) Reduce server; alt anahtar dosyalarini kabul ederek, bu isleri (tasks) server lara dagitir ve server larin islerini azaltir.
Ornegin;
Butun web sayfalarinda kac kelime oldugunu saydirmak istediniz;
GFS uzerinde tutulan butun web sayfalarini MapReduce ile isleyerek; simultane olarak binlerce makine ile islem yapmak, aralarindaki koordinasyonu saglamak, isim ne zaman calistirilicagini belirlemek, hatalari cozmek ve data nin iletilmesini saglamak islerini otomatik olarak halleder. Bu islemler su sirayla gerceklesir;
GFS-> Map -> Shuffle (nerede, ne zaman) -> Reduction -> Store results ——–> GFS
– MapReduce; gelen is icin anahtar ve alt anahtarlar olusturur. Bu ornekte kelime ve kelime sayisi seklinde.
– Shuffling; alt anahtarları turlerine gore ‘merge’ eder ve asil anahtara atar.
– The Reduction; gelen butun anahtarlari ve bunlara bagli alt anahtarlari degerlendirerek sonucu olusturur. Google icerisinde calisan indeks leri uzerinde 20 farkli “reduction” (azaltma) fonksiyonu vardır. Buradaki problem tek bir isi birden cok parcayla tamamlamaya calisirken parcalardan birinin sonucunun gecikmesi (slow IO, bad controller, CPU spike etc.) toplam sonucun gecikmesine yol acacagindan ayni isi birden cok kez compute / process (hesaplatmak) ettirerek once bitireni kabul edip digerlerini iptal ettirme zorunlulugudur. Olusturulan datalar alt anahtarlardan yukari dogru transfer ettirilir ve server lar arasinda data sikistirilarak (compress) bandwith ve I/O tasarrufu saglanir.
BigTable ile Data yı Depolamak
BigTable buyuk olcekli, fault tolerant, kendi basina yonetilebilir bir yapi olup terabyte larca memory i ve petabyte larca depolama alanini kullanabilir, yonetebilen bir yapidir. Saniyede milyonlarca okuma/yazma isini yapabilir. BigTable, GFS in ustunde calisan daginik yapili hash mekanizmasidir.  (Relational Database degildir, Join yada SQL dilindeki sorgulari desteklemez.) Anahtarlar ile kontrol altinda tutulabilen dataya erisim icin sorgulama mekanizmasi saglar. GFS uzerinde depolanan data program/database ler icin olceklenemiyor oldugundan, cogunlukla programlarin belirli bir yapi icerisinde dataya ihtiyac duyması sebebiyle programlarin yada database lerin GFS alanlarina direk erisimi yerine BigTable kullanarak GOOGLE kendi yapisi uzerinde daha fazla kontrol ve esneklik imkanina sahip olmustur.
Ornegin;
Eger farkli lokasyonlardaki datacenter lar uzerindeki operasyonlari daha kolay yapmak isterlerse yapabilirler. Sistem calisirken makine eklemek yada silmek mumkundur, butun sistem kesintisiz sekilde calismaya devam eder. BigTable ile depolanacak her data bir ‘hucre (cell)‘ de depolanir. Hucre lere ‘row key‘ (satir anahtari), ‘column key‘ (kolon anahtari) ya da ‘timestamp‘ (zaman bilgisi) ile erisilebilir. Tek bir satir (row) bir yada daha fazla ‘tablet’ ile depolanabilir. Bir ‘tablet’ 64KB sirali blok (block) lardan olusur, bu yapiya ‘SSTable‘ denir. BigTable yapisinda uc farkli turde server bulunur.
1.) Master server; tablet leri tablet server larina atayan server dir. Hangi tablet in nerde oldugunun bilgisini takip eder ve gerkeiyorsa ayni isi tekrar atayabilir.
2.) Tablet server; Okuma/Yazma (read/write) isteklerini tablet lere isler (processing). Bir tablet in boyutu belirtilen degeri gectiginde tablet leri boler. (usually 100MB-200MB) Bir tablet server coktugunde 100 tablet server in her biri 1 yeni tablet alarak sistemi kurtarirlar.
3.) Lock server; distributed lock service. bir tablet e yazma, cakismalarin cozumlenmesi (master arbitration), erisim kontrol u karsilikli denetleme gereksinimi gorevlerini yerine getirir. Tablet ler mumkun olan maksimum limitler ile RAM uzerinde ‘cache‘  lenir.
GOOGLE ın kendi yapisinda donanımlari icin olusturdugu cozumler;
–  Cok fazla makine varsa, makinelerin kurulumlari maliyet ve guc (elektrik) icin nasil optimize edilebilir ?
Cok ucuz genel amacli donanim kullanarak ve uzerinde calisacak yazilimin makinenin olmesi durumunda devam edebilmesi saglayarak.
Highly reliable bilesen iceren makineler yerine unreliable makineler kullanarak daha fazla guc tuketimi ancak 33 kere daha az sahip olma maliyeti ile.    Lınux kullanarak, in-house (kendi uretimi olan) rack design, PC class mother boards, low end storage (dusuk maliyetli depolama urunleri)
GOOGLE in kendi cozumunden cikarttigi dersler;
Altyapi rekabet avantaji olusturabilir;
Google icin gercekten boyle. Yeni internet hizmetlerini daha hizli, ucuza ve cok az firmanin rekabet edebilecegi hale getirebiliyorlar. Cogu firma tamamen farkli olarak altyapi yenilemeyi yada iyilestirmeyi gider olarak gorur. Google kendisini sistem muhendisligi firmasi olarak goruyor, bu da komple yeni bir bakis acisi yazilim gelistirmek icin.
Coklu DataCenter Mimarisi hala cozulmemis bir problem;
Cogu websitesi bir yada en fazla iki datacenter a yayilmis durumda.
Darwinian Altyapisi Olusturmak;
Zaman tuketen operasyonlari paralel gerceklestiren, kazaniyor.
Guncelleme;
‘Greg Linden’ in bolg unda belirtigi uzere yeni bir Google makalesi ‘Mapreduce: Simplified Data Processing on Large Clusters’ yayinlandi. Bazi istatistiki bilgiler; Her gun 100K MapReduce isi calisiyor, gunluk 20 petabyte n fazla data process ediliyor; 10K dan fazla MapReduce programi uygulanmis; makineler ise cift islemcili, 4-8 GB memory li ve gigabit ethernet li.
Guncelleme 2;
‘Sorting 1 PB with MapReduce’ makalesine gore; 6 saat 2 dakikada 1 PB (10 trillion 100-byte records) kayit 4.000 makine ile 48.000 disk e repkile edilmis.
Yorumum;
Sektordeki klasik cozumlerden farkli olarak, cikis noktasında bile ileriyi hedefleyerek kendi sistemlerini var olan cozumler uzerine degil kendi gereksinimlerini on planda tutarak olusturan ve bu sayede muthis bir basari saglayan Google ayni vizyon – misyon ile ilerlemeye devam ediyor. Sektorde her zaman teorik olarak bilinen konusulan ama genelde yapilamayan (genellikle maliyet sebebi ile) gereksinimlere gore sistemi/cozumleri planlamanin; sektorde varolan yada yeni eklenecek olan daha fazla firmaya ornek olmasi dileklerimle.
Kaynakca:
How Google Works by David Carr in Baseline Magazine.

Google’s storage strategy – Feature – Techworld.com

Advertisements

, , ,

  1. #1 by Emrullah Tahir Ekmekçi on January 8, 2010 - 6:51 pm

    Ellerine sağlık güzel olmuş, google ‘a hayran kalmak için bir neden daha….

  2. #2 by admin on February 24, 2010 - 4:39 pm

    Begendigine sevindim, vakit buldukca buyuk ve unlu yapilarin mimarilerini yazmaya devam edecegim.

  3. #3 by İsmail DOĞAN on September 27, 2010 - 8:29 am

    Ellerine sağlık güzel olmuş, linux ‘a hayran olmak için bir neden daha…

  4. #4 by Kul Ahmet on October 9, 2010 - 12:01 pm

    Cemocam ellerinize sağlık güzel olmuş, en kısa zamanda yeni yazılarınızı da heyecanla bekliyoruz.

  5. #5 by ghd stockists on February 21, 2011 - 12:41 pm

    I love your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you? Plz reply back as I’m looking to create my own blog and would like to know wheere u got this from. thanks

    • #6 by admin on February 21, 2011 - 2:44 pm

      Yes i did it. It is easy, use wordpress

  1. GOOGLE in depolama mimarisi « Emrullah Tahir Ekmekçi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: