260 likes | 410 Views
Use of MapReduce for Data/Information Processing Experiments. Michal Laclavík, Martin Šeleng. Obsah. Úvod, Google 1998 Architektúra, Google 2004 Distribuovan ý súborový systém (GFS a HDFS) MapReduce framework (Google a Hadoop) Distribuovaná databáza (BigTable a HBase)
E N D
Use of MapReduce for Data/Information Processing Experiments Michal Laclavík,Martin Šeleng
Obsah • Úvod, Google 1998 • Architektúra, Google 2004 • Distribuovaný súborový systém (GFS a HDFS) • MapReduce framework (Google a Hadoop) • Distribuovaná databáza (BigTable a HBase) • Ukážka programu spracovávaného v MapReduce klusteri • MapReduce ako experimentálne prostredie • Záver • Hadoop príkazy Bratislava, 4. marca 2009
http://google.stanford.edu/ 518 miliónov liniek 24 milionov webstranok TREC = 20GB, 147GB = Google, 1998 Disk seek – 10ms 66 hodin pri 24 mil. stranok Now MapReduce 200 000+ PCs Google Architektúra 1998 Bratislava, 4. marca 2009
Úvod • Architektúra • Disk seek stále pomalý => potreba triedenia dát =>indexy, utriedené asociatívne polia • spôsob distribuovania dát, • množstvo a spôsob replikácie dát, • spôsob (framework) paralelného spracovania, • množstvo a typ uzlov, na ktorých bude spracovanie prebiehať, • jednoducho škálovateľný systém, ktorý by bol efektívny a spoľahlivý. • Existujúce systémy na spracovanie veľkého množstva informácií • Parallel Virtual Machine (PVM) • Message Passing Interface (MPI) • Condor - High Throughput Computing (HTC) • Gridové riešenia Bratislava, 4. marca 2009
Architektúra • Google idea • dvojjadrové x86 procesory, beží na nich operačný systém Linux a majú 2-4GB pamäte • sieťové pripojenie s rýchlosťou 100Mb/s • Kláster pozostáva zo stoviek až tisícok pracovných staníc • disky s IDE rozhraním • Používateľ posiela do systému procesy, ktoré plánovač rozdelí na voľné pracovné stanice a spustí Bratislava, 4. marca 2009
MapReduce princíp • Ako Unix pipeline: Bratislava, 4. marca 2009
Výhody MapReduce • Vývojár nemusí rozumieť a debugovať paralelné prostredie • Implementuje metódy Map a Reduce • Architektúra si sama zabezpečuje manažment výpadkov nodov ako aj replikáciu a dostupnosť dát • Architektúra postavená na bežných PC. • Medzi bežiacimi úlohami neprebieha komunikácia ako napr v PVM alebo MPI • Výpočet ide k dátam. Dáta majú viac replík a architektúra ich má utriedené teda vie okamžite rozhodnúť kde sa čo spustí • Vstupy a výstupy metód sú asociatívne polia kľúč-hodnota. Je to tak preto aby bolo možné dáta utriediť podľa kľúčov. • Možnosť zreťazenia Map alebo Reduce úloh a teda aj vhodné rozdeľovanie zložitejších problémov • Google tvrdí že 98% výpočtových úloh je možné previesť na MapReduce • Aj keď výsledný MapReduce algoritmus bude menej efektívny, sila distribuovaného prostredia to pretlačí ... Bratislava, 4. marca 2009
MapReduce implementácia • Hadoop • Apache projekt vychádzajúci z lucene a Nutch • http://wiki.apache.org/hadoop/HadoopPresentations • Users: Yahoo!, Facebook, … • Spúštanie Java a C úloh. • DISCO • Implementácia od Nokie v Erlang, • Spúštanie Python úloh. • http://discoproject.org/ • Phoenix • C++, http://csl.stanford. edu/~christos/sw/phoenix Bratislava, 4. marca 2009
Distribuovaný súborový systém - GFS • Master/Slave architektúra GFS (Google File System) Bratislava, 4. marca 2009
Distribuovaný súborový systém - HDFS • Master/Slave architektúra HDFS (Hadoop Distributed File System) • Replikácia blokov dát Bratislava, 4. marca 2009
MapReduce framework (Google a Hadoop) • Spustenie a vykonanie procesu v prostredí MapReduce Bratislava, 4. marca 2009
MapReduce framework (Google a Hadoop) • Spustenie a vykonanie procesu v prostredí MapReduce (Hadoop) • Na uzle JobTracker sa spustí požadovaný proces, ktorý má naimplementované funkcie Map a Reduce. • JobTracker preskúma voľné uzly a podľa potreby (v závislosti od veľkosti vstupných dát) pridelí potrebné množstvo výpočtových uzlov (TaskTracker v závislosti od počtu jadier zvládne počítať 2 až 4 úlohy naraz). Súčasne je spustená aj úloha Reduce (v závislosti od množstva dát a uzlov sa môže spustiť aj viac úloh Reduce). • Po dokončení niektorej z Map úloh sa jej výsledky prekopírujú na niektorý z uzlov, kde beží úloha Reduce. Výsledky sa utriedia a čaká sa na ukončenie všetkých úloh Map. • Po dokončení všetkých úloh Map sa spustia úlohy Reduce a po ich ukončení dostaneme utriedený zoznam párov kľúč/hodnota. Bratislava, 4. marca 2009
Distribuovaná databáza (BigTable a HBase) • Ukážka tabuľky uloženej v systéme HBase (podobne BigTable) – konceptuálny pohľad • Ukážka tabuľky uloženej v systéme HBase – fyzické uloženie v HDFS Bratislava, 4. marca 2009
Ukážka programu spracovávaného v MapReduce klusteri • Funkcia Map: public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { Text word = new Text(); String line = value.toString().toLowerCase(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, 1); } } • Funkcia Reduce: public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) sum += values.next().get(); output.collect(key, new IntWritable(sum)); } Bratislava, 4. marca 2009
References • J. Dean and S. Ghemawat. MapReduce: Simplified DataProcessing on Large Clusters. In OSDI, pages137-150, 2004. • Slides available:http://labs.google.com/papers/mapreduce-osdi04-slides/index.html • There is new version from 2007 • Hung-chih Yang, Ali Dasdan, Ruey-Lung Hsiao, D. Stott Parker:Map-Reduce-Merge: Simplified Relational Data Processing on Large Clusters, ACM, http://portal.acm.org/citation.cfm?doid=1247480.1247602Presentation: http://cs.baylor.edu/~speegle/5335/2007slides/MapReduceMerge.pdf • A. Kimball, Problem Solving on Large-Scale Clusters. Lecture given on July 3, 2007. Available at http://www.youtube.com/watch?v=-vD6PUdf3Js • MapReduce/Hadoop for Semantic Web? • http://www.eyaloren.org/slides/2008/02/sw-hadoop/ • http://feeds.openacademic.org/node/4802 • Lucene-hadoop Wiki, HadoopMapReduce, http://wiki.apache.org/lucene-hadoop/HadoopMapReduce, (2008) • Open Source Distributed Computing: Yahoo's Hadoop Support, Developer Network blog, http://developer.yahoo.net/blog/archives/2007/07/yahoo-hadoop.html, (2007) • Yahoo! Launches World's Largest Hadoop Production Application, Yahoo! Developer Network, http://developer.yahoo.com/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html, (2008) Bratislava, 4. marca 2009
Web • Možnosť inštalovať Nutch založený na Lucene pod MapReduce/Hadoop • Možnosť stiahnutia, indexácie a fultextového vyhľadávania v stránkach (napr. slovenský web, wikipedia) • Možnosť dorobiť pluginy do Nutch • Využitie liniek medzi dokumentami • Navigácia, rankovacie algoritmy, ... • Využitie textu na experimenty • Extrakcia informácii, sémantická anotácia, sumarizácia textov... • Triedenie pri vyhľadávaní • Vlastné algoritmy napr. podľa modelu používateľa .... Bratislava, 4. marca 2009
Log súbory • Logy • Prenesené dáta, komunikujúce strany, spam, nedoručené, grupovanie po serveroch, organizáciách, krajinách, časová analýza, IP • Email server logy • Web server logy • Dáta zo senzorov • Transakčné dáta • Map hľadá pár kľúč - hodnota v dátach • Počty sa ľahko grupujú v Reduce metóde. • Prenesené dáta • Počet komunikácií medzi komunikujúcimi stranami Bratislava, 4. marca 2009
Emaily • Vo formáte Mbox - možnosť spracovania emailov ako súrobov • Veľké súbory • Inak je potrebné previesť emaily do hbase a dať im nejaký kľúč napr. message-id • Možnosti spracovania • Sociálna sieť, sumarizácia emailov, sémantická anotácia, extrakcia, indexovanie a vyhľadávanie • Na UI SAV chceme vytvoriť email korpus na spôsob MarkMail • 2+ milióny emailov z mailinglistov • Zatiaľ v štádiu príprav • Boli vykonané nejaké experimenty Bratislava, 4. marca 2009
Kolekcie dokumentov • Doc, PDF, HTML, .... • Predspracovanie, konverzia na text • Vloženie do HBase • Možnosť spracovania a overovania metód a algoritmov Bratislava, 4. marca 2009
Záver • Architektúra kde môže nad rovnakými veľkými dátami experimentovať množstvo ľudí • Vývoj metód a algoritmov a ich odladenie na PC bez znalosti distribuovanej architektúry. • Netreba riešiť: prístup k dátam, fault tolerance architektúry • Treba: Naprogramovať Map a Reduce metódy kde vstupmi a výstupmi sú asociatívne polia • Overenie, vyhodnotenie, testovanie metód a algoritmov na veľkých dátach na MapReduce clusteri. • Pri MapReduce teda nejde o výskum v distribuovaných architektúrach ale o uľahčenie výskumu spracovania dát a informácií Bratislava, 4. marca 2009
Príkazy v prostredí Hadoop a HBase • bin/hadoop • namenode -format format the DFS filesystem • secondarynamenode run the DFS secondary namenode • namenode run the DFS namenode • datanode run a DFS datanode • dfsadmin run a DFS admin client • fsck run a DFS filesystem checking utility • fs run a generic filesystem user client • balancer run a cluster balancing utility • jobtracker run the MapReduce job Tracker node • pipes run a Pipes job • tasktracker run a MapReduce task Tracker node • job manipulate MapReduce jobs • version print the version • jar <jar> run a jar file • distcp <srcurl> <desturl> copy file or directories recursively • daemonlog get/set the log level for each daemon Bratislava, 4. marca 2009
Príkazy v prostredí Hadoop a HBase • bin/hbase • Shellrun the Hbase shell • master run an Hbase HMaster node • regionserver run an Hbase HRegionServer node • rest run an Hbase REST server • thrift run an Hbase Thrift server • migrate upgrade an hbase.rootdir Bratislava, 4. marca 2009
Príkazy v prostredí Hadoop a HBase • Operácie HDFS - /bin/hadoop fs • [-ls <path>] • [-lsr <path>] • [-du <path>] • [-dus <path>] • [-mv <src> <dst>] • [-cp <src> <dst>] • [-rm <path>] • [-rmr <path>] • [-expunge] • [-put <localsrc> <dst>] • [-copyFromLocal <localsrc> <dst>] • [-moveFromLocal <localsrc> <dst>] • [-get [-crc] <src> <localdst>] • [-getmerge <src> <localdst> [addnl]] • [-cat <src>] • [-text <src>] • [-copyToLocal [-crc] <src> <localdst>] • [-moveToLocal [-crc] <src> <localdst>] • [-mkdir <path>] • [-setrep [-R] [-w] <rep> <path/file>] • [-touchz <path>] • [-test -[ezd] <path>] • [-stat [format] <path>] • [-tail [-f] <file>] • [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] • [-chown [-R] [OWNER][:[GROUP]] PATH...] • [-chgrp [-R] GROUP PATH...] • [-help [cmd]] Bratislava, 4. marca 2009
Príkazy v prostredí Hadoop a HBase • HBase Shell • SHOW tables; • DROP table; • SELECT data: FROM emails_data WHERE row='1_IR_2'; • … • Spustenie MapReduce úlohy v Hadoop klusteri • bin/hadoop jar name,jar [parameters] input output • bin/hadoop jar hadoop-0.16.4-examples.jar wordcount /home/enron /home/out Bratislava, 4. marca 2009