Hadoop és használata az LPDS cloud-on Bendig Loránd lbendig@ilab.sztaki.hu 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 sort uniq -c cat > output Input 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!