Hadoop és használata az LPDS cloud-on
Bendig Loránd
[email protected]
2012.04.13
Miről lesz szó? ●
Bevezetés
●
Hadoop áttekintés
●
OpenNebula
●
Hadoop cluster az LPDS cloud-on
●
Tapasztalatok, nyitott kérdések
Bevezetés ●
●
Adatmennyiség ●
“cat ip_addresses.txt | sort | uniq –c”
●
~ kétévente megduplázódik
●
Google > 20PB napi adatmennyiség
●
Facebook > 20TB napi adatmennyiség
●
CERN LHC > 40TB napi adatmennyiség
●
Baidu > 3000TB heti adatmennyiség
Hardware ●
Disk méret / transfer rate: 1TB disk, 100MB/s → 2.5h
●
High-end server vs olcsó számítógépek cluster-ben
Hadoop ●
Java-ban írt open source framework (top level Apache project) a Google publikációi alapján: ● ●
S. Ghemawat, H. Gobioff, and Shun-Tak Leung, "The Google File System" Oct. 2003 J. Dean and S. Ghemawat, "MapReduce: Simplified Data Processing on Large Clusters" Dec 2004
●
A Mapreduce számítási modell egy implementációja
●
Tervezési megfontolások:
●
●
●
Hibatűrő és skálázható
●
Számítás mozgatása az adathoz
●
Moduláris, kiterjeszthető
Fő építőelemei: ●
Elosztott filerendszer (HDFS)
●
Mapreduce programozási modell
Master/slave architektúra ●
Master: Namenode / JobTracker
●
Slave: Datanode / TaskTracker
Hadoop – HDFS ●
Elosztott filerendszer a cluster node-jain
●
Adatok tárolása blokkokban
●
Koherencia-modell: egyszeri írás, többszöri olvasás
●
Replikáció (JBOD: Just a Bunch of Disks)
●
Namenode (master)
●
●
Filerendszer namespace, metadata
●
Single point of failure
Datanode (slave) ●
Blokkok tárolása
Hadoop – HDFS (olvasás)
Hadoop – HDFS (írás)
Hadoop – HDFS (adatintegritás, tömörítés) ●
●
Adatintegritás: ●
CRC-32 checksum / 512 byte adat
●
Ellenőrzés: Datanode-okon, kliensen
●
Hiba esetén: namenode értesítése
Tömörítés:
Hadoop – Programozási modell ●
●
Kiindulási állapot: ●
Adatok HDFS-en a cluster gépein
●
Egymástól független taskokon (immutable kulcs-érték párokon) dolgozunk
●
2 interfészt implementálunk: Mapper, Reducer
Feldolgozás menete: ●
Iteráció az input record-okon
●
Minket érdeklő adatok kiválasztása (map)
●
Köztes eredmények: shuffle és sort
●
Aggregáció (reduce)
●
Output kiírása
●
cat input | grep | Input
●
●
sort
| uniq -c
| cat > output
| Map | Shuffle & Sort | Reduce | Output
API ●
Java (default)
●
Streaming (standard input / standard output)
●
Pipes (C++) socket-en keresztül
Hadoop – Programozási modell ●
Map(): Map(k1,v1) → list(k2,v2) : Szűrés, transzformáció
●
Reduce(k2, list (v2)) → list(k3,v3) : Aggregáció
Hadoop – Mapreduce job
Hadoop – Tool-ok
Hadoop - Felhasználási területek ●
ETL: Logtárolás HDFS-en, kimenet: RDBMS
●
Átalános back-end processzálás: (NY Times: pdf konverzió)
●
Marketing analytics, ads, perszonalizáció
●
Machine learning / data mining
●
WebMap, spamszűrés (Yahoo)
●
Képfeldolgozás
●
Text processzálás
●
Indexelés
●
Néhány adat: ●
Ebay: 700 nodes cluster (700*12 core, 16PB)
●
Facebook: 1100 nodes cluster, 8800 cores 12 PB raw storage
●
Yahoo > 40000 gép, 300k core
SZTAKI cloud projekt - Célok ●
●
●
A felhőkhöz, mint elosztott informatikai rendszerekhez kapcsolódó kutatások végzése: ●
Skálázhatóság
●
Meglévő szolgáltatások (pl. levelezés, szótár) kiterjesztése felhőre
●
Adatintenzív feladatok vs SW/HW/Hálozat konfiguráció
●
QoS, biztonsági kérdések
Laborszintű felhők (ILAB): ●
Nagymennyiségű adatfeldolgozás
●
Teljesítőképesség / konfigurációs kérdések
Az intézeti informatikai infrastruktúra korszerűsítése → Gazdaságosabb üzemeltetés
OpenNebula - Bevezetés ●
2005 óta fejlesztett open-source toolkit, felhő alapú szolgáltatások létrehozására
●
Többek között EU-s támogatással (FP7)
●
Fizikai erőforrások összefogása, menedzselése
●
IaaS (Infrastructure as a Service)
●
Private/Public/Hybric cloud
●
Virtualizációs menedzsment támogatás: KVM, VMware ESXi és XEN.
●
Számos interface
●
Felhasználó és csoport menedzsment
OpenNebula - Koncepció
Hadoop cloud - Áttekintés ●
LPDS OpenNebula hozzáférés ●
●
Ismerkedés az OpenNebulával, amíg nincs laborszintű felhő 4 gép, 64 CPU mag, 152GB RAM, 4.3TB osztott tárhely (RAID5)
Hadoop cloud - Elérés
●
Gépek: ●
Master – c142.cloud
●
Slave1 – c144.cloud
●
Slave2 – c145.cloud
●
Slave3 – c146.cloud
Hadoop cloud – Kapacitás
Hadoop cloud - Fejlesztés ●
Job megírása lokálisan
●
Maven: ●
Cloudera repository
●
install goal: jar feltöltése scp-vel a masterre
●
Job futtatása a szokásos módon, a master-en
●
HDFS I/O teszt: ●
Map: file 10 1GB-os file írása/olvasása
●
Reduce: statisztikák összegyűjtése
Tapasztalatok, nyitott kérdések ● ●
●
Cloudera image vs. image készítés Node-ok ki/bekapcsolása igény szerint, skálázhatóság Disk elérés: ●
●
virtuális disk felmountolva, RAID, OpenNebula köztesréteg vs. JBOD iSCSI (SCSI over IP) ? – –
●
Amazon, Rackspace cloud, GoGrid: lokális diskek ElasticHosts, FlexiScale: iSCSI
Laborszintű felhő kialakítás
Köszönöm a figyelmet!