Hadoop ekosistemi və komponentləri

İnternetin inkişafı, sosial medianın və mobil texnologiyalarının yayılması ilə daha çox məlumat yaranmağa başladı. Nəticədə Yahoo!, Google və Facebook kimi şirkətlər böyük həcmli məlumatların saxlanılması və emal edilməsi üçün yeni yollar fikirləşməyə başladılar. Bu barədə daha geniş məlumat almaq üçün öncəki məqalələrimizə müracitə edə bilərsiniz.

Hadoop əsas olaraq 2 komponentdən ibarətdir:

  • Hadoop Distributed File System (HDFS) – Hadoop komponentləri tərəfindən istifadə edilən əsas fayl sistemidir. NameNode və DataNode-dan ibarət olan arxitekturası horizontal olaraq ucuz server və yaddaş hissələri əlavə etməklə genişlənən və Hadoop klasteri boyu yayılmış fayl sisteminin tətbiqini təmin edir. HDFS-ə məlumat düşdükdə, o bir neçə bloklara bölünüb klasterdə paylanılır. Əlavə olaraq məlumatlar, sistem yararsız hala düşdüyü zaman heç bir itkinin olmaması üçün digər serverlərə replikasiya edilir.
  • MapReduce – Hadoop-un ürəyi sayılan və klaster boyu yayılan məlumat prosesi həllidir.  Adından da göründüyü kimi MapReduce oncə Map işləmini həyata keçirərək bir toplu məlumatı açar/dəyər formatında digər bir məlumat toplumuna çevirir.

Java kodları ilə MapReduce prosesini yazmaq xüsusən böyük proyektlərdə çox çətinləşir. Bu səbəbdən uzun illər boyu Hadoop və MapReduce texnologiyalarının istifadəsini yüngülləşdirmək üçün həm kommersiya, həm də açıq qaynaq proqramçıları müxtəlif alətləri istifadəyə vermişdir. Hadoop aşağıdakı ekosistemdən ibarətdir.

Gəlin bu ekosistemin komponentləri barədə qısa məlumatlar paylaşaq. Onu da qeyd edək ki, növbəti məqalələrimizdə bu komponentlər barədə daha geniş məlumatlar paylaşıb bir çox praktiki məşğələlər göstərəcəyik.

YARN – resurs və proqramların idarə edilməsi

Hadoop 1-ci versiyada əməliyyatların planlaşdırılmıası və izlənməsi Hadoop MapReduce-un ən əsas işi idi. Hadoop 2-ci versiyada MapReduce2 və ya NextGen MapReduce adlandırılan YARN (Yet another source nagivator) texnologiyası təqdim edildi. YARN  texnologiyasının əsas vəzifəsi klasteri idarə etməkdir. Apache tərəfindən əvvəllər resurs idarə etmək məqsədilə yaradıldığı bildirilsədə, növbəti illərdə YARN özü-özlüyündə böyük həcmli paylanmış əməliyyat sisteminə çevrilir.

Məhz YARN vasitəsilə artıq Hadoop-da sorğular çalışarkən eyni zamanda məlumatın ötürülməsi (data streaming) prosesi də baş verə bilər. YARN-ın əsasə iki vəzifəsi vardır: resurs idarə edilməsi və planlaşdırma xüsusiyyəti. Resurs Planlaşdırması bütün proqramların çalışmasını planlayır və hansı proqramların nə zaman və hansı müddətdə çalışacağı qərarını verir. Proseslər həm eyni zamanda, həm də ardıcıl növbəli şəkildə çalışa bliər. Bunun qərarlarını məhz YARN verir. Klasterin tam yüklənməməsi və daha əhəmiyyətli proqramlar üçün resurslar saxlamaq üçün YARN vasitəsilə sistemin resursları gələcək əməliyyatlar üçün rezerv etmək mümkündür.

HBase NoSQL məlumat bazası

HBase Java proqramlaşdırma dilində yazılmış və Hadoop üzərində çalışan sütün yönmlü verilənlər bazası sistemidir və daha çox paylanmış məlumat sistemləri üçün istifadə edilir. Relasiyalı verilənlər bazasından fərqli olaraq HBase sistemi SQL sorğu dilini dəstəkləmir.

HBase məlumat bazası sistemi Google BigTable texnologiyasından sonra yarandı və çox böyük həcmli cədvəlləri özündə saxlamaq üçün dizayn edildi. Bu sistemin istifadəsi üçün xüsusi serverlər yox, daha ucuz və istifadəyə yararlı serverlər istifadə edilə bilər.

HBase sütun yönlü qeyri relasiyalı verilənlər bazasıdır. Sütun və sətir inteqrasiyası HBase sistemində hücrə (cell) adlanır, məlumatlar azalan formatda cədvəllərdə saxlanılır və hər hücrənin məhz özünə məxsus “versiya” atributu mövcuddur. HBase-də sütunlar sütun ailəsinə məxsusdur. Sütun ailəsinin adı ailənin üzvlərinin təyini olaraq prefiks kimi istifadə edilir. Məsələn “masin:toyota” və “masin:hyundai” sətirləri “masin” ailəsinə məxsusdur. HBase-də sətirlər açarlarla təyin edilir. O hər hansı bir hesablanmış dəyər, mətn və hətta başqa məlumat strukturu ola bilər. Açar hücrələrdə sətirləri təyin etmək üçün istifadə edilir.  

Apache Hive

Hive – HDFS-də yerləşən böyük həcmli məlumatları oxuyub analiz etmək üçün istifadə edilən açıq qaynaqlı proqram təminatıdır. Bu sistem 2007-ci ildə Facebook proqramçıları tərəfindən Hadoop fayl sistemindəki petabaytlarla olan məlumatları SQL sorğuları ilə oxumaq üçün yaradılıb. Hive-ın 1.0-cı versiyası 2015-ci ildə təqdim edilib.

Hive çıxmamışdan öncə Hadoop fayl sistemindən məlumatları MapReduce vasitəsilə Java proqramları yazmaqla əldə etmək olurdu. Hive-ın əsas üç funksionallığı var: məlumatları yekunlaşdırmaq, sorğulamaq və analiz etmək. Hive SQL dilinə oxşar özünə məxsus HiveQL və ya HQL əmrləri ilə Hadoop fayl sistemindəki məlumatlar üzərində MapReduce əməliyyatları buraxaraq sorğular yaradmaq üçün istifadə edilir. HBase NoSQL məlumat bazası kimi Hive paylanmış Hadoop məlumat emalı proqramları tərkibinə daxildir.

Apache Hive, Hadoop ekosisteminə SQL sorğularını gətirən ilk proyektdir. Daha sonralar ona bənzər BigSQL, İmpala, Hadapt, Drill, Pesto və Apache Pig kimi sistemlərdə çıxmışdır. 

Apache Pig

Pig sistemi 2006-cı ildə Yahoo! şirkətində böyük məlumatlarla üzərində asanlıqla MapReduce prosesləri yazmaq üçün yaradılmışdır və 2008-ci ildə ilk versiyası çıxmışdır. Pig, Apache Hadoop ilə çalışan yüksək proqramlaşdırma dilidir. Pig, Java bilmədən məlumatla işləyən mühəndislərə SQL dilinə bənzər Pig Latin dili ilə ağır məlumat transformasiyaları yazmağa kömək edir. Pig vasitəsilə Hadoop-da istənilən məlumat manipulyasiyasını etmək mümkündür. Pig vasitəsilə başqa proqramlaşdırma dillərini də istifadə etmək olar. Pig Latin dili vasitəsilə sorğulara birləşmələr (join), filtrasiyalar və sıralamalar qoymaq mümkündür. Bütün bunları MapReduce ilə etmək həddindən artıq çətin bir işdir. Təxmini olaraq 10 sətirlik Pig Latin kodu 200 sətirlik MapReduce koduna bərabərdir.

Apache Sqoop

Bu günə qədər bir çox relasiyalı verilənlər bazası Hadoop mühitinə köçürülüb. Bu səbəbdən bu köçürülmə prosesləri üçün xüsusi proqram təminatına zaman-zaman ehtiyac yaranıb. Apache Sqoop relasiyalı verilənlər bazasından məlumatların Hadoop sisteminə köçürülməsi üçün çox geniş istifadə edilir. Məlumatların daşınılması zamanı bir çox qaydalara riayət edilməlidir. MapReduce proqramları bir başa relasiyalı verilənlər bazasına müdaxilə edə bilmir. Məhz Sqoop vasitəsilə nəinki Hadoop, eyni zamanda HBase və Hive cədvəllərinə də məlumatları köçürmək mümkündür.

Apache Sqoop əsasən iki addımla məlumatı daşıyır. Birinci addım olaraq o relasiyalı verilənlər bazasına qoşulub köçürüləcək məlumatın ana strukturunu (metadata) götürür. İkinci addım olaraq Sqoop klasterdə Map prosesini başladır və məhz bu proses vasitəsilə məlumat köçürülməsi həyata keçirilir. Cədvəllərdən köçürülən məlumatlar Hadoop fayl sistemindəki qovulqlarda saxlanılır. İstifadəçi bu qovluqu istənilən zaman dəyişə bilər.

Apache Sqoop vasitəsilə məlumat eyni zamanda Hadoop fayl sistemindən relasiyalı verilənlər bazasına da köçürülə bilər. Sqoop köçürülmə prosesini paralel həyata keçirə bilər. Sqoop vasitəsilə məlumatlar relasiyalı veirənlər bazasından Hadoop fayl sisteminə köçürülüb, orda emal edilib yenidən geri relasiyalı verilənlər bazasına köçürülə bilər.

Apache Zookeeper

Zookeper açıq qaynaqlı sistem olub Hadoop klasterində sinxronizasiyanı mərkəzləşdirilmiş infrastruktur və xidmət ilə təmin edir. Zookeeper klasterdə konfiqurasiya məlumatları, hiyerarxik adlandırma və bu kimi faylların idarəsini təmin edir və eyni anda bir neçə klient tərəfindən oxuma və yazma əməliyyatlarını dəstəkləyir.  Eyni zamanda proqramlar üçün də Zookeeper node-lar arası sinxorinzasiyanı təmin edir və bunu Zookeeper serverlərindəki yaddaşda olan məlumatlara əsasən edir. Çox böyük Hadoop serverləri birdən çox Zookeeper serverləri ilə çalışa bilir. Zookeeper Yahoo! şirkətində yaradılmış və Facebook, Twitter, Netflix, Yahoo!, Reddit və eBay kimi böyük şirkətlər tərəfindən istifadə edilməkdədir.

Zookeeper çox sürətlidir, klaster boyu bir neçə Zookeeper serveri ansambl (ensemble) yaradıb daha böyük klasterlərə daha sürətli xidmət göstərə bilər. Zookeeper eyni zamdan çox sadədir, fayl və qovluqlar kimi hiyerarxik struktura malikdir.

Apache Oozie

Oozie Hadoop proseslərini idarə edən sistem olub multi proses əməliyyatları birləşdirib vahid bir əməliyyat kimi icra etməyə imkan yaradır. Tələb edildikdə çağrılan proseslərə iş axını prosesləri deyilir. Periodik çalışan Oozie proseslərinə isə kordinator prosesləri deyilir. Kordinator proseslərini cəmləyib vahid proses kimi çağıran Oozie proseslərinə isə birgə (bundle) proseslər deyilir.

Öncəki məqalələrdən Hadoop sözünün mənası, Hadoop-un qurucusu olan Doug Cutting-in övladının fil oyuncağının adından götürüldüyündən danışmışdır. Oozie özlüyündə Hadoop sisteminin əməiyyatlarını idarə etdiyinə görə ona Hadoop-u saxlayan, yəni “Fili saxlayan” adını daha uyğun gördülər. Oozie-nin qurucularından Alejandro o zamanlar Hindistanda olduğuna görə bu sistemə Hindistan “Fil saxlayan” – “Mahout” adın vermək istəyir. Ancaq o dövrdə “Mahout” adlı başqa bir Apache sistemi olduğuna görə Burma dilində “Fil saxlayan” mənasına gələn “Oozie” adını verir.

Oozie-nin istifadəsi böyük şirkətlərdə geniş yayılmışdır. Misal üçün desək, Yahoo! şirkətinin Hadoop klasterinə yayılmış 40.000 node Oozie tərəfindən idarə edilir.

Apache Flume

Flume sisteminin əsas vəzifəsi böyük həcmdə olan məlumatları yığıb, aqreqat hala gətirib HDFS-ə köçürməsidir. Üfüqi şəkildə asanlıqla genişlənəbilən sistem olan Flume vasitəsilə müxtəlif mənbələrdən məlumatlar Hadoop sisteminə növbəti analiz və hesablamalar üçün köcürülür. Köçürülən məlumatlar internet log faylları, sensor və müxtəlif aparatların məlumatları, coğrafi məkan və sosial media məlumatları ola bilər. Xüsusən Twitter-də hansısa istifadəçinin postlarını və ya müəyyən hashtag-i izləməklə məlumatları Flume vasitəsilə HDFS-ə köçürüb Hive ilə sorğulamaq mümkündür. Və ya minlərlə serverləri olan bir şirkətin loglarının bir yerə yığılıb analiz edilməsi üçün Flume ən uyğun bir sistemdir.  

Apache Mahout

Mahout Hindi sözü olub “fil idarə edən” mənasına gələn bir kitabxanadır və Hadoop (fil təmsili) üzərində Machine Learning funksionallığını təqdim edir. Mahout istifadə etməkdən öncə iki suala doğru cavab tapmaq lazımdır: “Sən hansı tip problemi həll etməyə çalışırsan?” və “Məlumat nə qədər böyükdür?” Birinci sualın cavabı barədə düşünəndə onu da nəzərə almaq lazımdır ki, machine learning ilə alınan cavab 100% doğru deyil, “daha çox ehtimal” kimi cavabdır, çünki bəzi klassifikasiyalar 85% dəqiqlikdən yuxarı qalxmır.

Mahout kitabxanasının əsas hədəfi genişlənən sistemlərdə çalışmaq olduğuna görə, hansı məlumatın emal ediləcəyinə xüsusi diqqət yetirmək lazımdır. Əgər on milyonlarla sətirlərdən danışılmırsa, Mahout istifadə etmək məsləhət deyil. Böyük həcmli məlumat dedikdə misal olaraq Google xəbər sisteminin gün ərzində 4500 mənbədən götürülən 3.5 milyon məqaləni, və ya Netlifxdə 100 milyonlarla reytinqi misal göstərmək olar. Əgər yuxarıda veirlən 2 sualın cavabı Mahout-un istifadəsini vacib etmirsə, o zaman Spark Mlib kitabxanalarından istifadə etmək daha doğru olar.

Mahout-dan “tövsiyyələr mühərriki”ndə çox istifadə edilir. Əgər siz Amazon.com səhifəsinə daxil olub hər hansı kitab axtarırsınızsa, sizə “tövsiyyə edilən kitablar” bölməsində bir çox kitab tövsiyyə edilir. Bu tip tövsiyyələr çox vaxt Mahout machine learning kitabxanasından istifadə edilən sistemlərdə olur.

Apache Ambari

Apache Ambari, Hadoop klasterinin üzərinə qurulub çalışan proqramlara nəzarət edib Hadoop ekosistemin bir çox komponentləri üçün interaktiv web interfeys təqdim edərək proqramçılar və administratorların işlərini asanlaşdırır. Ambari vasitəsilə klasterə yeni node əlavə edib var olan node-u çıxarmaq, yeni servis əlavə etmək, servisləri idarə etmək, servis və komponentlərin konfiqurasiyalarında dəyişiklikləri etmək, node-ları digər serverlərə köçürmək mümkündür.

Pig, Hive, MapReduce və s. bu kimi komponentlərin idarəsini asanlaşdıran Ambarinin web interfeysi vasitəsilə ümumi sistemin səmərəliliyini də rahatlıqla müşahidə etmək mümkündür.

6 Comments

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir