Yəqin bir çoxlarınız Big Data və ya Data Science ilə maraqlanmısınızsa, qarşınıza Hadoop sistemi dəfələrlə çıxmışdır. Bu məqalədə Hadoop sistemi barədə ümumi məlumat verib onun tarixindən qısaca danışacağıq.
Qısa olaraq desək, Hadoop – Java proqramlaşdırma dilində yazılmış, böyük həcmli məlumat bazasını özündə saxlayıb emal etmək üçün istifadə edilən bir sistemdir. Bu sistemin emal etdiyi böyük həcmli məlumatlar adətən nisbətən ucuz və istifadəyə yararlı serverlərdə və yaddaş hissələrində saxlanılır.
Hər şey necə başladı?
Hər şey, 1997-ci ildə Hadoop platformasının qurucusu Doug Cutting-in Lucene adlı açıq kodlu axtarış və indeksləmə kitabxana (library) yazması ilə başladı. Bu proyektin əsas məqsədi, böyük mətnlərdə axtarışı sadələşdirmək üçün indekslərin yaradılması idi. İndeks – axtarış zamanı sürətli nəticə əldə etmək üçün öncədən hər sözü mətndə uyğun yerdə nişanlamaq üçün istifadə edilən məlumat strukturudur.
2000-ci ildə Cutting bu proyektin inkişafına daha çox adam cəlb etmək üçün onu Source Forge-da açıq kodlu etdi. 1 il keçmədən proyekt Apache Software Foundation-a keçdi. İlin sonunda Cutting internet səhifələrini indeksləməyi qərara aldı və Vaşinqton Universitetinin məzunu Mike Cafarella ilə birlikdə Lucene proyektinin alt proyekti olan və bütün interneti indeksləyəcək Apache Nutch proyektinə başladı. Nutch-ın əsas işi internetdə “gəzib”, bir-bir səhifələri izləyib onların da içərisində olan ünvanlardan başqa ünvanlara keçmək idi. Nutch sistemi bu səhifələri “gəzdikcə” üzərindən keçdiyi hər səhifəni Lucene platforması vasitəsilə indeksləyirdi ki, bu səhifələr üzərində axtarış etmək asanlaşsın. Nəticədə Nutch vasitəsi ilə 1 processor-lu 1 Gb RAM olan RAİD 1 ilə yaradılmış 8 diksdən ibarət 1 TB-lıq məlumat üçün saniyədə 100 səhifənin indekslənməyinə nail oldular.
Əlbəttə ki, bütün internetin bir komputerlə indeksləməyinin imkansız olduğunu bilərək, onlar komputerlərin sayını 4-ə qaldırdılar. Bununla bir çox problemlər ortaya çıxmağa başladı, proqram təminatında bir çox dəyişikliklər etmiş oldular.
Nutch sisteminin qarşısında duran problemləri aşağıdakılar idi:
- Müəyyən sxemaya sahib olmayan məlumatları özündə saxlamalı idi
- Məlumat yazıldıqda itməməli idi
- Hər hansı istifadəçi müdaxiləsi olmadan CPU, yaddaş, şəbəkə və enerji itkisinin qarşısı avtomatik alınmalı idi
- Klasterə qoşulan bütün komputerlər arasında məlumat bərabər paylanılmalı idi
Bir müddət bu çatışmazlıqlar üzərində çalışdıqdan sonra, 2003-cü ildə Google şirkəti “Google File System” yazısını paylaşdı və onlar bu yazını oxuduqda, əslində eyni problemlə mücadilə apardıqlarını gördülər və bir il ərzində çalışıb Nutch Distributed File System (NDFS) adlı fayl sistemini hazırladılar.
NDFS fayl sistemi bir çox operativ işləri özü gördüyünə görə, bu dəfə Cutting və Cafarella məlumatların idarə edilməsinin və serverlərin sayının artırılmasının fərqli alqoritmalarını düşünməyə başladılar. Onların fikrinə görə, 4 serverdə çalışan prosesləri 8 serverdə çalışdırdıqda, sürət ən azı iki dəfə artmalıdır, çünki görülən işlər yeni serverlərdə paralel olaraq çalışacaqdır. Elə bu zaman, 2004-cü ilin Dekabr ayında Google “MapReduce: Simplifed Data Processing on Large Cluster” adlı məqaləsini paylaşdı. Bu məqalə onların işinə yaradı, çünki onlar bundan sonra məlumatı öncə filterləyib (map) sonra cəmləmə əməliyyatı edib (reduce) ümumi nəticəni rahatlıqla əldə etməyə başladılar. MapReduce vasitəsilə artıq milyonlarla səhifələrdən, loqlardan, fərqli mənbələrdən ötürülmüş terabayt və hətta petabaytlarla olan məlumatları idarə etmək olurdu.
MapReduce prosesi əsasən aşağıdakı 3 məsələni həll edirdi:
- Hesablamanın paralel aparılması
- Məlumatın doğru paylanılması
- Proqramda çıxan xətaların aradan qaldırılması
MapReduce prosesi barədə növbəti günlərdə daha geniş məlumat paylaşılacaq. 2005-ci ililn İyul ayında MapReduce Nutch sisteminə interqrasiya edildi.
Hadoop sisteminin yaranması
Növbəti il Cuting GDFS (Google Distributed File System) və MapReduce-u Nutch sistemindən çıxardıb Lucene proyektinin alt proyekti olan Hadoop adlı proyektdə cəmləşdirdi. Hadoop sistemi əsasən iki hissədən ibarətdir: HDFS (Hadoop Distributed File System) və MapReduce. HDFS Java əsaslı, əsasən nisbətən ucuz serverlərdə yaradılıb genişləndirilmiş klaster formasında olan fayl sistemidir. HDFS 4500 serverdə 200Pb-lıq milyard fayl və bloku emal etməyə qadir olduğunu bir çox testlərdə göstərmişdir.
2006-cı ildə Yahoo! şirkəti Hadoop sisteminin onların axtarış sistemi üçün istifadə edilməsi üçün Doug Cutting-i işə aldı.
Artıq 2007-ci ildə dünyanın böyük şirkətləri olan Twitter, Facebook, Linkedİn və bir çox şirkətlər Hadoop istifadə etməyə başladılar. Yahoo! şirkəti artıq 1000 serverdən ibarət olan Hadoop klasteri istifadə edirdi.
2008-ci ildə HDFS üzərində çalışan Google-ın BigTable sisteminə bənzəyən qeyri relasiyalı Hbase verilənlər bazası təqdim edildi. HBase barədə növbəti məqalələrimizdə daha geniş və praktiki məşğələlərlə danışacağıq. Bu ildə eyni zamanda BerkeleyDB-den Mike Olson, Google-dan Christophe Bisciglia, Facebook-dan Jeff Hamerbacher və Yahoo!-dan Amr Awadallah birləşib məlumat anbarı, machine learning və təhlillər üçün istifadə edilən proqram təminatı platforması Cloudera şirkətinin əsasını qoydular.
2010-cu ildə Yahoo! şirkəti Hadoop sistemində proqramlar yaratmaq üçün Pig platformasını təqdim etdi. Eyni ildə Facebook şirkəti MapReduce üzərindən SQL əmrlərini çalışdırmaq üçün Hive platformasını təqdim etdi. Əlavə olaraq Hadoop sisteminin qurucusu olan Doug Cutting Cloudera şirkətinə qatıldı.
2012-ci ildə Yahoo! şirkətində artıq 42000 serverdən ibarət Hadoop klasteri fəaliyyət göstərirdi. Hadoop sisteminin təkmilləşməsi üçün 1200 könüllü iştirak edirdi.
Ümumilikdə Hadoop sisteminin yaranması və inkişafı prosesini aşağıdakı şəkildə daha ətraflı görmək olar
Növbəti məqalədə Hadoop ekosistemi və komponentləri barədə geniş məlumat verəcəyik
Good Job 🙂
Thanks 🙂
Davamını səbrsizliklə gözləyirəm
Təşəkkürlər Jalə x. İnşallah yeni və daha maraqlı məqalələr hazırlanır. Səhifəyə abunə olmağı unutmayın
Maraqlı məqalədir. Doğru yolda sizə uğurlar….
Təşəkkürlər Emin bəy.
Kifayət qədər ətraflı və səlis izah etdiyiniz üçün təşəkkürlər. Və uğurlar :))
Təşəkkür edirik Bəyaz x.
Uğurlar
Təşəkkürlər Elvin bəy
Çox ətraflı maraqlı məqalədir .Təcrübənizə əsasən Learning path-la bağlı bir məqalə yazsanız əla olar .
Salam Bahruz bəy, təşəkkürlər. Bəli bu barədə yaxın günlərdə çox geniş və ətraflı məqalə hazırlanacaq.
əla!
Çox yararlı bir məqalədir. Təşəkkürlər yazıb paylaşdığınıza görə.
Təşəkkürlər Fərid bəy!
Uğurlar Kamran bəy. Faydalı məqalədir. Var olun.
Təşəkkür edirik!